From a5b524e3e2cdb0d20126f9b36307a2ee6f0dfc51 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 17 Mar 2017 19:30:46 -0700 Subject: [PATCH] DS Video: Partially fix 2D/3D blending --- src/ds/renderers/software.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ds/renderers/software.c b/src/ds/renderers/software.c index cffcc4a7d..df657db3e 100644 --- a/src/ds/renderers/software.c +++ b/src/ds/renderers/software.c @@ -396,12 +396,12 @@ static void DSVideoSoftwareRendererDrawGBAScanline(struct GBAVideoRenderer* rend flags |= FLAG_TARGET_1 * (softwareRenderer->bg[0].target1 && softwareRenderer->blendEffect == BLEND_ALPHA && GBAWindowControlIsBlendEnable(softwareRenderer->currentWindow.packed)); int x; for (x = softwareRenderer->start; x < softwareRenderer->end; ++x) { - if (scanline[x] & 0xF8000000) { - if ((flags & FLAG_TARGET_1) && (scanline[x] >> 28) != 0xF) { + if (scanline[x] & 0xFC000000) { + if ((scanline[x] >> 28) != 0xF) { // TODO: More precise values softwareRenderer->alphaA[x] = (scanline[x] >> 28) + 1; - softwareRenderer->alphaB[x] = 0x10; - _compositeBlendNoObjwin(softwareRenderer, x, (scanline[x] & 0x00FFFFFF) | flags, softwareRenderer->row[x]); + softwareRenderer->alphaB[x] = 0xF - (scanline[x] >> 28); + _compositeBlendNoObjwin(softwareRenderer, x, (scanline[x] & 0x00FFFFFF) | flags | FLAG_TARGET_1, softwareRenderer->row[x]); } else { _compositeNoBlendNoObjwin(softwareRenderer, x, (scanline[x] & 0x00FFFFFF) | flags, softwareRenderer->row[x]); softwareRenderer->alphaA[x] = 0x10;