sms: improve sr a bit

This commit is contained in:
notaz 2017-10-17 00:53:35 +03:00
parent 7669591e08
commit 1c25c32c11
2 changed files with 16 additions and 4 deletions

View file

@ -91,7 +91,7 @@ static void draw_sprites(int scanline)
}
sprite_base = (pv->reg[6] & 4) << (13-2-1);
for (i = s = 0; i < 64 && s < 8; i++)
for (i = s = 0; i < 64; i++)
{
int y;
y = sat[i] + 1;
@ -99,6 +99,10 @@ static void draw_sprites(int scanline)
break;
if (y + h <= scanline || scanline < y)
continue; // not on this line
if (s >= 8) {
pv->status |= SR_SOVR;
break;
}
sprites_x[s] = xoff + sat[0x80 + i*2];
sprites_addr[s] = sprite_base + ((sat[0x80 + i*2 + 1] & addr_mask) << (5-1)) +
@ -106,6 +110,10 @@ static void draw_sprites(int scanline)
s++;
}
// really half-assed but better than nothing
if (s > 1)
pv->status |= SR_C;
// now draw all sprites backwards
for (--s; s >= 0; s--)
TileNormM4(sprites_x[s], sprites_addr[s], 0x10);
@ -300,3 +308,4 @@ void PicoDrawSetOutputMode4(pdso_t which)
}
}
// vim:shiftwidth=2:ts=2:expandtab