From 1b5dd352af1cc78e15188b0807cbe699cb0ec3e7 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Tue, 15 Oct 2013 02:09:23 -0700 Subject: [PATCH] Sprites can only be color variants when they aren't forced semitransparent --- src/gba/renderers/video-software.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gba/renderers/video-software.c b/src/gba/renderers/video-software.c index b48c98bc2..09be7c5e2 100644 --- a/src/gba/renderers/video-software.c +++ b/src/gba/renderers/video-software.c @@ -1246,7 +1246,7 @@ static void _preprocessSprite(struct GBAVideoSoftwareRenderer* renderer, struct inY = height - inY - 1; } unsigned charBase = BASE_TILE + sprite->tile * 0x20; - int variant = renderer->target1Obj && renderer->currentWindow.blendEnable && (renderer->blendEffect == BLEND_BRIGHTEN || renderer->blendEffect == BLEND_DARKEN); + int variant = renderer->target1Obj && renderer->currentWindow.blendEnable && sprite->mode != OBJ_MODE_SEMITRANSPARENT && (renderer->blendEffect == BLEND_BRIGHTEN || renderer->blendEffect == BLEND_DARKEN); if (!sprite->multipalette) { if (flags & FLAG_OBJWIN) { SPRITE_NORMAL_LOOP(16, OBJWIN); @@ -1283,7 +1283,7 @@ static void _preprocessTransformedSprite(struct GBAVideoSoftwareRenderer* render int x = sprite->x; unsigned charBase = BASE_TILE + sprite->tile * 0x20; struct GBAOAMMatrix* mat = &renderer->d.oam->mat[sprite->matIndex]; - int variant = renderer->target1Obj && renderer->currentWindow.blendEnable && (renderer->blendEffect == BLEND_BRIGHTEN || renderer->blendEffect == BLEND_DARKEN); + int variant = renderer->target1Obj && renderer->currentWindow.blendEnable && sprite->mode != OBJ_MODE_SEMITRANSPARENT && (renderer->blendEffect == BLEND_BRIGHTEN || renderer->blendEffect == BLEND_DARKEN); int inY = y - sprite->y; if (inY < 0) { inY += 256;