GBA Video: Fix sprite/backdrop blending regression

This commit is contained in:
Vicki Pfau 2020-06-14 19:16:33 -07:00
parent 318a96bcb7
commit a0bae17267
10 changed files with 2 additions and 1 deletions

View File

@ -29,6 +29,7 @@ Emulation fixes:
- GBA Video: Fix double-size OBJ wrapping in GL renderer (fixes mgba.io/i/1712) - GBA Video: Fix double-size OBJ wrapping in GL renderer (fixes mgba.io/i/1712)
- GBA Video: Simplify sprite cycle counting (fixes mgba.io/i/1279) - GBA Video: Simplify sprite cycle counting (fixes mgba.io/i/1279)
- GBA Video: Add sprite cycle counting to GL (fixes mgba.io/i/1635) - GBA Video: Add sprite cycle counting to GL (fixes mgba.io/i/1635)
- GBA Video: Fix sprite/backdrop blending regression
- SM83: Emulate HALT bug - SM83: Emulate HALT bug
Other fixes: Other fixes:
- 3DS: Fix framelimiter on newer citro3d (fixes mgba.io/i/1771) - 3DS: Fix framelimiter on newer citro3d (fixes mgba.io/i/1771)

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

View File

@ -165,7 +165,7 @@ int GBAVideoSoftwareRendererPreprocessSprite(struct GBAVideoSoftwareRenderer* re
int variant = (renderer->target1Obj || GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_SEMITRANSPARENT) && int variant = (renderer->target1Obj || GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_SEMITRANSPARENT) &&
GBAWindowControlIsBlendEnable(renderer->currentWindow.packed) && GBAWindowControlIsBlendEnable(renderer->currentWindow.packed) &&
(renderer->blendEffect == BLEND_BRIGHTEN || renderer->blendEffect == BLEND_DARKEN); (renderer->blendEffect == BLEND_BRIGHTEN || renderer->blendEffect == BLEND_DARKEN);
if (GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_SEMITRANSPARENT || objwinSlowPath) { if (GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_SEMITRANSPARENT || (renderer->target1Obj && renderer->blendEffect == BLEND_ALPHA) || objwinSlowPath) {
int target2 = renderer->target2Bd; int target2 = renderer->target2Bd;
target2 |= renderer->bg[0].target2; target2 |= renderer->bg[0].target2;
target2 |= renderer->bg[1].target2; target2 |= renderer->bg[1].target2;