mirror of https://github.com/mgba-emu/mgba.git
GBA Video: Fix OBJ semitransparency improperly interacting with other blending ops
This commit is contained in:
parent
4d1b7b4591
commit
5ef980116a
1
CHANGES
1
CHANGES
|
@ -14,6 +14,7 @@ Bugfixes:
|
||||||
- Util: Fix PowerPC PNG read/write pixel order
|
- Util: Fix PowerPC PNG read/write pixel order
|
||||||
- GBA Video: Fix edge case with sprite blend modes and semitransparency
|
- GBA Video: Fix edge case with sprite blend modes and semitransparency
|
||||||
- GBA Video: Fix objwin and blending interaction on sprites
|
- GBA Video: Fix objwin and blending interaction on sprites
|
||||||
|
- GBA Video: Fix OBJ semitransparency improperly interacting with other blending ops
|
||||||
Misc:
|
Misc:
|
||||||
- Qt: Window size command line options are now supported
|
- Qt: Window size command line options are now supported
|
||||||
- Qt: Increase usability of key mapper
|
- Qt: Increase usability of key mapper
|
||||||
|
|
|
@ -147,7 +147,10 @@ int GBAVideoSoftwareRendererPreprocessSprite(struct GBAVideoSoftwareRenderer* re
|
||||||
if (GBARegisterDISPCNTGetMode(renderer->dispcnt) >= 3 && GBAObjAttributesCGetTile(sprite->c) < 512) {
|
if (GBARegisterDISPCNTGetMode(renderer->dispcnt) >= 3 && GBAObjAttributesCGetTile(sprite->c) < 512) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int variant = renderer->target1Obj && GBAWindowControlIsBlendEnable(renderer->currentWindow.packed) && (renderer->blendEffect == BLEND_BRIGHTEN || renderer->blendEffect == BLEND_DARKEN);
|
int variant = renderer->target1Obj &&
|
||||||
|
GBAWindowControlIsBlendEnable(renderer->currentWindow.packed) &&
|
||||||
|
(renderer->blendEffect == BLEND_BRIGHTEN || renderer->blendEffect == BLEND_DARKEN) &&
|
||||||
|
GBAObjAttributesAGetMode(sprite->a) != OBJ_MODE_SEMITRANSPARENT;
|
||||||
if (GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_SEMITRANSPARENT) {
|
if (GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_SEMITRANSPARENT) {
|
||||||
int target2 = renderer->target2Bd << 4;
|
int target2 = renderer->target2Bd << 4;
|
||||||
target2 |= renderer->bg[0].target2 << (renderer->bg[0].priority);
|
target2 |= renderer->bg[0].target2 << (renderer->bg[0].priority);
|
||||||
|
|
Loading…
Reference in New Issue