# HG changeset patch # User Michael Pavone # Date 1722490214 25200 # Node ID fa49e06d8c929e8a03a0fa915b8fe1f61fb67cea # Parent ad50530a7c27ad5ea8978af65c52acee971b80f4 Fix silly bug in Mode 4 sprite rendering (Thanks Sik!) diff -r ad50530a7c27 -r fa49e06d8c92 vdp.c --- a/vdp.c Tue Jul 16 20:21:08 2024 -0700 +++ b/vdp.c Wed Jul 31 22:30:14 2024 -0700 @@ -486,27 +486,28 @@ int x = d->x_pos & 0xFF; for (int i = 28; i >= 0; i -= 4, x++) { - if (context->linebuf[x] && (pixels >> i & 0xF)) { - if ( + uint8_t pixel = pixels >> i & 0xF; + if (pixel) { + if (!context->linebuf[x]) { + context->linebuf[x] = pixel; + } else if( ((context->regs[REG_MODE_1] & BIT_SPRITE_8PX) && x > 8) || ((!(context->regs[REG_MODE_1] & BIT_SPRITE_8PX)) && x < 256) ) { context->flags2 |= FLAG2_SPRITE_COLLIDE; } - } else { - context->linebuf[x] = pixels >> i & 0xF; } if (zoom) { x++; - if (context->linebuf[x] && (pixels >> i & 0xF)) { - if ( + if (pixel) { + if (!context->linebuf[x]) { + context->linebuf[x] = pixel; + } else if( ((context->regs[REG_MODE_1] & BIT_SPRITE_8PX) && x > 8) || ((!(context->regs[REG_MODE_1] & BIT_SPRITE_8PX)) && x < 256) ) { context->flags2 |= FLAG2_SPRITE_COLLIDE; } - } else { - context->linebuf[x] = pixels >> i & 0xF; } } }