From badb87697c8bbcba06af89e11e9e06288a6b738f Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 14 Feb 2023 00:47:26 -0800 Subject: [PATCH 1/5] Add missing skincolors to dehacked table --- src/deh_tables.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/deh_tables.c b/src/deh_tables.c index 18d78c649..19a5e4dde 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -6088,7 +6088,20 @@ const char *COLOR_ENUMS[] = { "CHAOSEMERALD6", "CHAOSEMERALD7", - "INVINCFLASH" + "INVINCFLASH", + "POSNUM", + "POSNUM_WIN1", + "POSNUM_WIN2", + "POSNUM_WIN3", + "POSNUM_LOSE1", + "POSNUM_LOSE2", + "POSNUM_LOSE3", + "POSNUM_BEST1", + "POSNUM_BEST2", + "POSNUM_BEST3", + "POSNUM_BEST4", + "POSNUM_BEST5", + "POSNUM_BEST6", }; const char *const KARTHUD_LIST[] = { From 9b08730281e50b1392ea1b0f42636adc6191c2a8 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 14 Feb 2023 01:05:48 -0800 Subject: [PATCH 2/5] Fix R_CacheSpriteBrightMap trying to cache out of range lump --- src/r_things.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/r_things.c b/src/r_things.c index 90b5cc1db..c333d0cb4 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -1245,7 +1245,14 @@ static patch_t *R_CacheSpriteBrightMap(const spriteinfo_t *sprinfo, UINT8 frame) name = sprinfo->bright[SPRINFO_DEFAULT_PIVOT]; } - return W_CachePatchNum(W_CheckNumForLongName(name), PU_SPRITE); + const lumpnum_t num = W_CheckNumForLongName(name); + + if (num == LUMPERROR) + { + return NULL; + } + + return W_CachePatchNum(num, PU_SPRITE); } // From c9ad926e76ff49c1fd41caad3f4da54d5a09cc31 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 14 Feb 2023 01:06:08 -0800 Subject: [PATCH 3/5] Do not set cvars with S_SetSfxVolume or S_SetMusicVolume Don't do this because in sdl/i_video.cpp, S_InitMusicVolume is called to unmute music when the window is refocused. Because I_StartupGraphics is called before those cvars are added and it is an error to try to set a cvar before it is added. --- src/s_sound.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/s_sound.c b/src/s_sound.c index f6ccaae82..4e3c1d66f 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -989,7 +989,7 @@ void S_UpdateClosedCaptions(void) void S_SetSfxVolume(INT32 volume) { - CV_SetValue(&cv_soundvolume, volume); + //CV_SetValue(&cv_soundvolume, volume); actualsfxvolume = cv_soundvolume.value * USER_VOLUME_SCALE; #ifdef HW3SOUND @@ -2349,7 +2349,7 @@ void S_SetMusicVolume(INT32 digvolume) if (digvolume < 0) digvolume = cv_digmusicvolume.value; - CV_SetValue(&cv_digmusicvolume, digvolume); + //CV_SetValue(&cv_digmusicvolume, digvolume); actualdigmusicvolume = cv_digmusicvolume.value * USER_VOLUME_SCALE; I_SetMusicVolume(digvolume); } From fdddbcfd82288afd26396cb05196b22aa575d7cd Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 14 Feb 2023 02:46:41 -0800 Subject: [PATCH 4/5] g_demo.c: ensure demobuf is always freed before use --- src/g_demo.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/g_demo.c b/src/g_demo.c index e95daa2b5..36a6f6c63 100644 --- a/src/g_demo.c +++ b/src/g_demo.c @@ -2015,7 +2015,10 @@ void G_RecordDemo(const char *name) // if (demobuf.buffer) // Z_Free(demobuf.buffer); + // FIXME: this file doesn't manage its memory and actually free this when it's done using it + Z_Free(demobuf.buffer); P_SaveBufferAlloc(&demobuf, maxsize); + Z_SetUser(demobuf.buffer, (void**)&demobuf.buffer); demobuf.p = NULL; demo.recording = true; @@ -2028,7 +2031,10 @@ void G_RecordMetal(void) if (M_CheckParm("-maxdemo") && M_IsNextParm()) maxsize = atoi(M_GetNextParm()) * 1024; + // FIXME: this file doesn't manage its memory and actually free this when it's done using it + Z_Free(demobuf.buffer); P_SaveBufferAlloc(&demobuf, maxsize); + Z_SetUser(demobuf.buffer, (void**)&demobuf.buffer); demobuf.p = NULL; metalrecording = true; @@ -3051,7 +3057,10 @@ void G_DoPlayDemo(char *defdemoname) return; } + // FIXME: this file doesn't manage its memory and actually free this when it's done using it + Z_Free(demobuf.buffer); P_SaveBufferAlloc(&demobuf, vLump->size); + Z_SetUser(demobuf.buffer, (void**)&demobuf.buffer); memcpy(demobuf.buffer, vLump->data, vLump->size); vres_Free(vRes); From 6480aced64ef805c781a85c7f7b01a2ad5dfe82a Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 14 Feb 2023 04:56:39 -0800 Subject: [PATCH 5/5] S_SetSfxVolume/S_SetMusicVolume: update static copy of volume blame c9ad926e7 --- src/s_sound.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/s_sound.c b/src/s_sound.c index 4e3c1d66f..ffcf62340 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -990,7 +990,7 @@ void S_UpdateClosedCaptions(void) void S_SetSfxVolume(INT32 volume) { //CV_SetValue(&cv_soundvolume, volume); - actualsfxvolume = cv_soundvolume.value * USER_VOLUME_SCALE; + actualsfxvolume = volume * USER_VOLUME_SCALE; #ifdef HW3SOUND hws_mode == HWS_DEFAULT_MODE ? I_SetSfxVolume(volume&0x1F) : HW3S_SetSfxVolume(volume&0x1F); @@ -2350,7 +2350,7 @@ void S_SetMusicVolume(INT32 digvolume) digvolume = cv_digmusicvolume.value; //CV_SetValue(&cv_digmusicvolume, digvolume); - actualdigmusicvolume = cv_digmusicvolume.value * USER_VOLUME_SCALE; + actualdigmusicvolume = digvolume * USER_VOLUME_SCALE; I_SetMusicVolume(digvolume); }