From 4d847f42235e06098cc80e40085ec47af75a21b0 Mon Sep 17 00:00:00 2001 From: Jaime Passos Date: Sat, 10 Oct 2020 14:09:59 -0300 Subject: [PATCH] Compare the PNG's palette with the game's palette instead of assuming they are the same --- src/r_picformats.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/r_picformats.c b/src/r_picformats.c index 95fe23aeb..feec2abf4 100644 --- a/src/r_picformats.c +++ b/src/r_picformats.c @@ -887,8 +887,24 @@ static png_bytep *PNG_Read( // matches the color count of SRB2's palette: 256 colors. if (png_get_PLTE(png_ptr, png_info_ptr, &palette, &palette_size)) { - if (palette_size == 256) + if (palette_size == 256 && pMasterPalette) + { + png_colorp pal = palette; + INT32 i; + usepal = true; + + for (i = 0; i < 256; i++) + { + UINT32 rgb = R_PutRgbaRGBA(pal->red, pal->green, pal->blue, 0xFF); + if (rgb != pMasterPalette[i].rgba) + { + usepal = false; + break; + } + pal++; + } + } } // If any of the tRNS colors have an alpha lower than 0xFF, and that