From c511d53d595bbdb204c62725f285a4cc72542818 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 25 Nov 2022 21:37:12 -0800 Subject: [PATCH] GBA Video: Disable BG target 1 blending when OBJ blending (fixes #2722) --- CHANGES | 1 + cinema/gba/blend/gbg-blend/baseline_0000.png | Bin 0 -> 6569 bytes cinema/gba/blend/gbg-blend/baseline_0001.png | Bin 0 -> 6526 bytes cinema/gba/blend/gbg-blend/baseline_0002.png | Bin 0 -> 6433 bytes cinema/gba/blend/gbg-blend/baseline_0003.png | Bin 0 -> 6380 bytes cinema/gba/blend/gbg-blend/baseline_0004.png | Bin 0 -> 6301 bytes cinema/gba/blend/gbg-blend/baseline_0005.png | Bin 0 -> 6108 bytes cinema/gba/blend/gbg-blend/test.mvl | Bin 0 -> 24871 bytes src/gba/renderers/software-mode0.c | 14 +++----- src/gba/renderers/software-private.h | 35 ++++++++++++++++--- 10 files changed, 36 insertions(+), 14 deletions(-) create mode 100644 cinema/gba/blend/gbg-blend/baseline_0000.png create mode 100644 cinema/gba/blend/gbg-blend/baseline_0001.png create mode 100644 cinema/gba/blend/gbg-blend/baseline_0002.png create mode 100644 cinema/gba/blend/gbg-blend/baseline_0003.png create mode 100644 cinema/gba/blend/gbg-blend/baseline_0004.png create mode 100644 cinema/gba/blend/gbg-blend/baseline_0005.png create mode 100644 cinema/gba/blend/gbg-blend/test.mvl diff --git a/CHANGES b/CHANGES index f564da133..03dc9a7aa 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,7 @@ Emulation fixes: - GB Serialize: Don't write BGP/OBP when loading SCGB state (fixes mgba.io/i/2694) - GBA: Fix resetting key IRQ state (fixes mgba.io/i/2716) - GBA Video: Ignore disabled backgrounds as OBJ blend target (fixes mgba.io/i/2489) + - GBA Video: Disable BG target 1 blending when OBJ blending (fixes mgba.io/i/2722) Other fixes: - Qt: Manually split filename to avoid overzealous splitting (fixes mgba.io/i/2681) - Qt: Expand criteria for tag branch names (fixes mgba.io/i/2679) diff --git a/cinema/gba/blend/gbg-blend/baseline_0000.png b/cinema/gba/blend/gbg-blend/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..2fbf58114d923954cade85d2003befb0056d9b74 GIT binary patch literal 6569 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 kcY}UHq)$07*qoM6N<$g7|yf<^TWy literal 0 HcmV?d00001 diff --git a/cinema/gba/blend/gbg-blend/baseline_0002.png b/cinema/gba/blend/gbg-blend/baseline_0002.png new file mode 100644 index 0000000000000000000000000000000000000000..1d38b9113ba0a33c33cda6710a836ffd8b9b9295 GIT binary patch literal 6433 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 literal 0 HcmV?d00001 diff --git a/cinema/gba/blend/gbg-blend/baseline_0003.png b/cinema/gba/blend/gbg-blend/baseline_0003.png new file mode 100644 index 0000000000000000000000000000000000000000..368572a3129bdf171e8cee7686327b8e2062b9a0 GIT binary patch literal 6380 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 + (GBA_TEXT_MAP_TILE(mapData) << 5)) + (localY << 2); \ LOAD_32(tileData, charBase, vram); \ if (!GBA_TEXT_MAP_HFLIP(mapData)) { \ @@ -36,7 +35,6 @@ charBase = (background->charBase + (GBA_TEXT_MAP_TILE(mapData) << 5)) + (localY << 2); \ LOAD_32(tileData, charBase, vram); \ paletteData = GBA_TEXT_MAP_PALETTE(mapData) << 4; \ - palette = &mainPalette[paletteData]; \ pixel = &renderer->row[outX]; \ if (!GBA_TEXT_MAP_HFLIP(mapData)) { \ if (outX < renderer->start) { \ @@ -93,7 +91,6 @@ carryData = 0; \ } else { \ paletteData = GBA_TEXT_MAP_PALETTE(mapData) << 4; \ - palette = &mainPalette[paletteData]; \ LOAD_32(tileData, charBase, vram); \ if (!GBA_TEXT_MAP_HFLIP(mapData)) { \ tileData >>= 4 * baseX; \ @@ -123,7 +120,6 @@ carryData = 0; \ } else { \ paletteData = GBA_TEXT_MAP_PALETTE(mapData) << 4; \ - palette = &mainPalette[paletteData]; \ LOAD_32(tileData, charBase, vram); \ if (!GBA_TEXT_MAP_HFLIP(mapData)) { \ tileData >>= x * 4; \ @@ -154,7 +150,6 @@ localY = 7 - localY; \ } \ paletteData = GBA_TEXT_MAP_PALETTE(mapData) << 4; \ - palette = &mainPalette[paletteData]; \ charBase = (background->charBase + (GBA_TEXT_MAP_TILE(mapData) << 5)) + (localY << 2); \ if (UNLIKELY(charBase >= 0x10000)) { \ pixel += 8; \ @@ -517,17 +512,16 @@ void GBAVideoSoftwareRendererDrawBackgroundMode0(struct GBAVideoSoftwareRenderer uint32_t screenBase; uint32_t charBase; - color_t* mainPalette = renderer->normalPalette; + color_t* palette = renderer->normalPalette; if (renderer->d.highlightAmount && background->highlight) { - mainPalette = renderer->highlightPalette; + palette = renderer->highlightPalette; } if (variant) { - mainPalette = renderer->variantPalette; + palette = renderer->variantPalette; if (renderer->d.highlightAmount && background->highlight) { - mainPalette = renderer->highlightVariantPalette; + palette = renderer->highlightVariantPalette; } } - color_t* palette = mainPalette; PREPARE_OBJWIN; int outX = renderer->start; diff --git a/src/gba/renderers/software-private.h b/src/gba/renderers/software-private.h index 2ace684f1..ec8ef4175 100644 --- a/src/gba/renderers/software-private.h +++ b/src/gba/renderers/software-private.h @@ -86,28 +86,55 @@ static inline void _compositeNoBlendNoObjwin(struct GBAVideoSoftwareRenderer* re #define COMPOSITE_16_OBJWIN(BLEND, IDX) \ if (objwinForceEnable || (!(current & FLAG_OBJWIN)) == objwinOnly) { \ - unsigned color = (current & FLAG_OBJWIN) ? objwinPalette[paletteData | pixelData] : palette[pixelData]; \ + unsigned color; \ unsigned mergedFlags = flags; \ if (current & FLAG_OBJWIN) { \ mergedFlags = objwinFlags; \ + color = objwinPalette[paletteData | pixelData]; \ + } else if ((current & (FLAG_IS_BACKGROUND | FLAG_REBLEND)) == FLAG_REBLEND) { \ + color = renderer->normalPalette[paletteData | pixelData]; \ + } else { \ + color = palette[paletteData | pixelData]; \ } \ _composite ## BLEND ## Objwin(renderer, &pixel[IDX], color | mergedFlags, current); \ } #define COMPOSITE_16_NO_OBJWIN(BLEND, IDX) \ - _composite ## BLEND ## NoObjwin(renderer, &pixel[IDX], palette[pixelData] | flags, current); + { \ + unsigned color; \ + if ((current & (FLAG_IS_BACKGROUND | FLAG_REBLEND)) == FLAG_REBLEND) { \ + color = renderer->normalPalette[paletteData | pixelData]; \ + } else { \ + color = palette[paletteData | pixelData]; \ + } \ + _composite ## BLEND ## NoObjwin(renderer, &pixel[IDX], color | flags, current); \ + } #define COMPOSITE_256_OBJWIN(BLEND, IDX) \ if (objwinForceEnable || (!(current & FLAG_OBJWIN)) == objwinOnly) { \ - unsigned color = (current & FLAG_OBJWIN) ? objwinPalette[pixelData] : palette[pixelData]; \ + unsigned color; \ unsigned mergedFlags = flags; \ if (current & FLAG_OBJWIN) { \ mergedFlags = objwinFlags; \ + color = objwinPalette[pixelData]; \ + } else if ((current & (FLAG_IS_BACKGROUND | FLAG_REBLEND)) == FLAG_REBLEND) { \ + color = renderer->normalPalette[pixelData]; \ + } else { \ + color = palette[pixelData]; \ } \ _composite ## BLEND ## Objwin(renderer, &pixel[IDX], color | mergedFlags, current); \ } -#define COMPOSITE_256_NO_OBJWIN COMPOSITE_16_NO_OBJWIN +#define COMPOSITE_256_NO_OBJWIN(BLEND, IDX) \ + { \ + unsigned color; \ + if ((current & (FLAG_IS_BACKGROUND | FLAG_REBLEND)) == FLAG_REBLEND) { \ + color = renderer->normalPalette[pixelData]; \ + } else { \ + color = palette[pixelData]; \ + } \ + _composite ## BLEND ## NoObjwin(renderer, &pixel[IDX], color | flags, current); \ + } #define BACKGROUND_DRAW_PIXEL_16(BLEND, OBJWIN, IDX) \ pixelData = tileData & 0xF; \