1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-09 21:29:53 +00:00

Takes a stab at attached sprites.

This commit is contained in:
Thomas Harte 2021-11-19 14:19:47 -05:00
parent bcc959d938
commit a94b4f62fd

View File

@ -282,15 +282,26 @@ template <int cycle> void Chipset::output() {
if(!data) continue; if(!data) continue;
const int base = (c << 2) + 16; const int base = (c << 2) + 16;
// TODO: can do a better job of selection here — if(sprites_[(c << 1) + 1].attached) {
// treat each 4-bit quantity as a single colour // Left pixel.
// selection, much like dual playfield mode. if(data >> 4) {
pixels_[0] = pixels_[1] = palette_[16 + (data >> 4)];
}
// Right pixel.
if(data & 15) {
pixels_[2] = pixels_[3] = palette_[16 + (data & 15)];
}
} else {
// Left pixel.
if(data >> 6) { if(data >> 6) {
pixels_[0] = pixels_[1] = palette_[base + (data >> 6)]; pixels_[0] = pixels_[1] = palette_[base + (data >> 6)];
} }
if((data >> 4) & 3) { if((data >> 4) & 3) {
pixels_[0] = pixels_[1] = palette_[base + ((data >> 4)&3)]; pixels_[0] = pixels_[1] = palette_[base + ((data >> 4)&3)];
} }
// Right pixel.
if((data >> 2) & 3) { if((data >> 2) & 3) {
pixels_[2] = pixels_[3] = palette_[base + ((data >> 2)&3)]; pixels_[2] = pixels_[3] = palette_[base + ((data >> 2)&3)];
} }
@ -298,6 +309,7 @@ template <int cycle> void Chipset::output() {
pixels_[2] = pixels_[3] = palette_[base + (data & 3)]; pixels_[2] = pixels_[3] = palette_[base + (data & 3)];
} }
} }
}
pixels_ += 4; pixels_ += 4;
} }