all repos — mgba @ 87e5973039cbb6d6bdcd8261445c9455a0df461d

mGBA Game Boy Advance Emulator

Proper blending on sprite targets
Jeffrey Pfau jeffrey@endrift.com
Mon, 29 Apr 2013 21:27:29 -0700
commit

87e5973039cbb6d6bdcd8261445c9455a0df461d

parent

2d4c1fdc2cfdfee8aeb697be6bcc2577e30b5104

1 files changed, 2 insertions(+), 2 deletions(-)

jump to
M src/gba/renderers/video-software.csrc/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)];