From 2b9701d01eebc44b163066382ef1d1eeb9fc1816 Mon Sep 17 00:00:00 2001 From: James R Date: Sat, 24 Sep 2022 21:15:44 -0700 Subject: [PATCH] Load palette before map data Fixes PNG patch conversion crashing when called from vres at game startup. Also does not reload palette every time the resolution is changed. (This had no effect on the SDL backend, don't worry.) --- src/d_main.c | 4 ++++ src/v_video.c | 8 +++----- src/v_video.h | 3 +++ 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/d_main.c b/src/d_main.c index 412149469..7e3843b8e 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -1438,6 +1438,10 @@ void D_SRB2Main(void) #endif //ifndef DEVELOP + // Do it before P_InitMapData because PNG patch + // conversion sometimes needs the palette + V_ReloadPalette(); + // // search for mainwad maps // diff --git a/src/v_video.c b/src/v_video.c index c2d3e3c4c..8ed5ed53f 100644 --- a/src/v_video.c +++ b/src/v_video.c @@ -404,7 +404,7 @@ const char *GetPalette(void) return "PLAYPAL"; } -static void LoadMapPalette(void) +void V_ReloadPalette(void) { LoadPalette(GetPalette()); } @@ -416,7 +416,7 @@ static void LoadMapPalette(void) void V_SetPalette(INT32 palettenum) { if (!pLocalPalette) - LoadMapPalette(); + V_ReloadPalette(); #ifdef HWRENDER if (rendermode == render_opengl) @@ -449,7 +449,7 @@ void V_SetPaletteLump(const char *pal) static void CV_palette_OnChange(void) { // reload palette - LoadMapPalette(); + V_ReloadPalette(); V_SetPalette(0); } @@ -2980,8 +2980,6 @@ void V_Init(void) UINT8 *base = vid.buffer; const INT32 screensize = vid.rowbytes * vid.height; - LoadMapPalette(); - for (i = 0; i < NUMSCREENS; i++) screens[i] = NULL; diff --git a/src/v_video.h b/src/v_video.h index 099d22d86..9564bca15 100644 --- a/src/v_video.h +++ b/src/v_video.h @@ -56,6 +56,9 @@ void InitColorLUT(colorlookup_t *lut, RGBA_t *palette, boolean makecolors); UINT8 GetColorLUT(colorlookup_t *lut, UINT8 r, UINT8 g, UINT8 b); UINT8 GetColorLUTDirect(colorlookup_t *lut, UINT8 r, UINT8 g, UINT8 b); +// Loads the correct palette into memory +void V_ReloadPalette(void); + // Set the current RGB palette lookup to use for palettized graphics void V_SetPalette(INT32 palettenum);