Proper blending on sprite targets
Jeffrey Pfau jeffrey@endrift.com
Mon, 29 Apr 2013 21:27:29 -0700
1 files changed,
2 insertions(+),
2 deletions(-)
M
src/gba/renderers/video-software.c
→
src/gba/renderers/video-software.c
@@ -501,7 +501,7 @@ unsigned xBase = (inX & ~0x7) * 4 + ((inX >> 1) & 2);
uint16_t tileData = renderer->d.vram[(yBase + charBase + xBase) >> 1]; tileData = (tileData >> ((inX & 3) << 2)) & 0xF; if (tileData) { - if (!renderer->target1Obj) { + if (renderer->blendEffect == BLEND_NONE || renderer->blendEffect == BLEND_ALPHA || !renderer->target1Obj) { renderer->spriteLayer[outX] = renderer->normalPalette[0x100 | tileData | (sprite->palette << 4)]; } else { renderer->spriteLayer[outX] = renderer->variantPalette[0x100 | tileData | (sprite->palette << 4)];@@ -548,7 +548,7 @@ unsigned xBase = (localX & ~0x7) * 4 + ((localX >> 1) & 2);
uint16_t tileData = renderer->d.vram[(yBase + charBase + xBase) >> 1]; tileData = (tileData >> ((localX & 3) << 2)) & 0xF; if (tileData) { - if (!renderer->target1Obj) { + if (renderer->blendEffect == BLEND_NONE || renderer->blendEffect == BLEND_ALPHA || !renderer->target1Obj) { renderer->spriteLayer[outX] = renderer->normalPalette[0x100 | tileData | (sprite->palette << 4)]; } else { renderer->spriteLayer[outX] = renderer->variantPalette[0x100 | tileData | (sprite->palette << 4)];