all repos — mgba @ 0058ddd9752724c6ef40aa06b5a57868cb51d407

mGBA Game Boy Advance Emulator

GBA Video: Fix rare regression blending semitransparent sprites (fixes #1876)
Vicki Pfau vi@endrift.com
Mon, 07 Sep 2020 01:20:22 -0700
commit

0058ddd9752724c6ef40aa06b5a57868cb51d407

parent

72ed64c371517b5734b9c1a45b2df6e2be814819

M CHANGESCHANGES

@@ -9,6 +9,7 @@ - GBA Audio: Fix volume/mute in XQ audio (fixes mgba.io/i/1864)

- GBA Hardware: Fix GB Player detection on big endian platforms - GBA Video: Invalidate map cache when modifying BGCNT (fixes mgba.io/i/1846) - GBA Video: Don't draw sprites using unmapped VRAM in GL renderer (fixes mgba.io/i/1865) + - GBA Video: Fix rare regression blending semitransparent sprites (fixes mgba.io/i/1876) Other fixes: - 3DS: Redo video sync to be more precise - 3DS: Fix crash with libctru 2.0 when exiting
M src/gba/renderers/software-obj.csrc/gba/renderers/software-obj.c

@@ -162,7 +162,7 @@ return 0;

} int objwinSlowPath = GBARegisterDISPCNTIsObjwinEnable(renderer->dispcnt) && GBAWindowControlGetBlendEnable(renderer->objwin.packed) != GBAWindowControlIsBlendEnable(renderer->currentWindow.packed); - int variant = (renderer->target1Obj || GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_SEMITRANSPARENT) && + int variant = renderer->target1Obj && GBAWindowControlIsBlendEnable(renderer->currentWindow.packed) && (renderer->blendEffect == BLEND_BRIGHTEN || renderer->blendEffect == BLEND_DARKEN); if (GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_SEMITRANSPARENT || (renderer->target1Obj && renderer->blendEffect == BLEND_ALPHA) || objwinSlowPath) {