static struct denise_spr dspr[MAX_SPRITES];
static struct denise_spr *dprspt[MAX_SPRITES + 1], *dprspts[MAX_SPRITES + 1];
static int denise_spr_nr_armed, denise_spr_nr_armeds;
+static int sprite_lts_selected;
static uae_u16 bplcoltable[256];
static uae_u16 sprcoltable[256];
static uae_u16 sprbplcoltable[256];
}
}
denise_spr_nr_armed++;
- if (denise_spr_nr_armed == 1) {
+ if (denise_spr_nr_armed == 1 && !sprite_lts_selected) {
select_lts();
}
s->armed = 1;
}
if (s->armed) {
denise_spr_nr_armed--;
- if (denise_spr_nr_armed == 0) {
+ if (denise_spr_nr_armed == 0 && denise_spr_nr_armeds == 0 && sprite_lts_selected) {
select_lts();
}
s->armed = 0;
if (s->armeds) {
denise_spr_nr_armeds--;
s->armeds = 0;
+ if (denise_spr_nr_armeds == 0 && sprite_lts_selected) {
+ select_lts();
+ }
}
}
}
denise_linecnt = linecnt;
denise_hdelay = hdelay;
denise_startpos = startpos;
+
+ if (denise_spr_nr_armed == 0 && denise_spr_nr_armeds == 0 && sprite_lts_selected) {
+ select_lts();
+ }
}
denise_cck = startcycle;
if (aga_mode) {
int spr = 0;
- if (denise_spr_nr_armed || samecycle) {
+ if (denise_spr_nr_armed || denise_spr_nr_armeds || samecycle) {
spr = 1;
}
+ sprite_lts_selected = spr;
if (need_genlock_data) {
int planes = denise_max_planes > 4 ? 1 : 0;
int oddeven = denise_max_odd_even ? 1 : 0;
} else if (ecs_denise && denise_res == RES_SUPERHIRES) {
+ sprite_lts_selected = 1;
if (hresolution == RES_LORES) {
lts = lts_null;
} else {
} else {
int spr = 0;
- if (denise_spr_nr_armed || samecycle) {
+ if (denise_spr_nr_armed || denise_spr_nr_armeds || samecycle) {
spr = 1;
}
+ sprite_lts_selected = spr;
if (need_genlock_data) {
int oddeven = denise_max_odd_even;
int idx = (oddeven) + (bm * 2) + (spr * 2 * 4) + (denise_res * 2 * 4 * 2) + (hresolution * 2 * 4 * 2 * 2);