From a399888315244607e44e524c3bbe60541c95fe97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Tom=C3=A0s?= Date: Thu, 24 Sep 2026 23:27:24 +0100 Subject: [PATCH] Set sprite palette to SGB color area --- src/emulator.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/emulator.c b/src/emulator.c index 4edfb80..11b6bcb 100644 --- a/src/emulator.c +++ b/src/emulator.c @@ -3563,8 +3563,16 @@ static void ppu_mode3_synchronize(Emulator* e) { u8 palette_index = ((hi & 1) << 1) | (lo & 1); if (palette_index != 0 && (!bg_priority[i] || bg_is_zero[i]) && (o->priority == OBJ_PRIORITY_ABOVE_BG || bg_is_zero[i])) { - pixel[i] = pal->color[palette_index]; - } + if (IS_SGB) { + int idx = (y >> 3) * (SCREEN_WIDTH >> 3) + ((x + i) >> 3); + u8 palidx = + (SGB.attr_map[idx >> 2] >> (2 * (3 - (idx & 3)))) & 3; + u8 sgb_color = PPU.pal[o->palette + 1].color[palette_index]; + pixel[i] = e->sgb_pal[palidx].color[sgb_color]; + } else { + pixel[i] = pal->color[palette_index]; + } + } } } }