From b6f863be26089bf01fd8cc7277e2cee360556549 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 31 Dec 2019 00:20:53 -0800 Subject: [PATCH] GBA Video: Fix effects blending improperly in some non-last windows --- CHANGES | 1 + src/gba/renderers/video-software.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 99e2f192a..d355f1e93 100644 --- a/CHANGES +++ b/CHANGES @@ -94,6 +94,7 @@ Emulation fixes: - GBA Memory: Fix open bus from IWRAM (fixes mgba.io/i/1575) - GBA Video: Fix OpenGL renderer 512x512 backgrounds (fixes mgba.io/i/1572) - GBA Video: Fix BLDY for semitransparent sprite on non-target-2 backgrounds + - GBA Video: Fix effects blending improperly in some non-last windows Other fixes: - 3DS: Fix screen darkening (fixes mgba.io/i/1562) - Core: Fix uninitialized memory issues with graphics caches diff --git a/src/gba/renderers/video-software.c b/src/gba/renderers/video-software.c index 6be917d93..666baa5e4 100644 --- a/src/gba/renderers/video-software.c +++ b/src/gba/renderers/video-software.c @@ -652,10 +652,11 @@ static void GBAVideoSoftwareRendererDrawScanline(struct GBAVideoRenderer* render } } for (w = 0; w < softwareRenderer->nWindows; ++w) { + int end = softwareRenderer->windows[w].endX; if (!GBAWindowControlIsBlendEnable(softwareRenderer->windows[w].control.packed)) { + x = end; continue; } - int end = softwareRenderer->windows[w].endX; if (softwareRenderer->blendEffect == BLEND_DARKEN) { for (; x < end; ++x) { uint32_t color = softwareRenderer->row[x];