diff --git a/CHANGES b/CHANGES index c1b5a8ce2..078ac0e9c 100644 --- a/CHANGES +++ b/CHANGES @@ -24,6 +24,7 @@ Bugfixes: - DS: Fix exposed CPU frequencies and audio timing - DS Audio: Fix audio sampling slightly too quickly - Feature: Fix resizing GIF buffer (fixes mgba.io/i/695) + - DS GX: Retain translucent polygon ID when drawing opaque fragments (fixes mgba.io/i/661) Misc: - DS: Set boot complete bit in RAM on boot (fixes mgba.io/i/576, mgba.io/i/580, mgba.io/i/586) - DS Memory: Ensure DS9 I/O is 8-byte aligned diff --git a/src/ds/gx/software.c b/src/ds/gx/software.c index e50d8f9e8..9730f8f63 100644 --- a/src/ds/gx/software.c +++ b/src/ds/gx/software.c @@ -645,7 +645,8 @@ static void _drawSpan(struct DSGXSoftwareRenderer* softwareRenderer, struct DSGX if (a == 0x1F) { depth[x] = span->ep[0].coord[softwareRenderer->sort]; scanline[x] = color; - stencil[x] = s & 0x3F00; + stencil[x] &= 0x00FF; + stencil[x] |= s & 0x3F00; } else if (a) { // TODO: Disable alpha? if (b) {