# HG changeset patch # User Michael Pavone # Date 1483605731 28800 # Node ID da6a1f156f24f0af8798876deed5d2c128ee0b43 # Parent c83ec07ddbacc4df5854a24383ccb24394ecc55d Fix Mode 4 sprite collision flag diff -r c83ec07ddbac -r da6a1f156f24 vdp.c --- a/vdp.c Thu Jan 05 00:36:23 2017 -0800 +++ b/vdp.c Thu Jan 05 00:42:11 2017 -0800 @@ -251,8 +251,13 @@ int x = d->x_pos & 0xFF; for (int i = 28; i >= 0; i -= 4, x++) { - if (context->linebuf[x]) { - context->flags2 |= FLAG2_SPRITE_COLLIDE; + if (context->linebuf[x] && (pixels >> i & 0xF)) { + 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; }