From 5f6c7e212790e077e1ee3d230315fc472ce4add0 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Wed, 19 Nov 2025 19:19:32 -0500 Subject: [PATCH] Fix oversight in software plane and sprite secbright handling https://codeberg.org/srb2classic/srb2classic/pulls/86/commits/c54aaf1cdb8bcf385c266822655e0873004d5ffc --- src/r_plane.cpp | 10 +++++----- src/r_things.cpp | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/r_plane.cpp b/src/r_plane.cpp index 1f44bb27b..60fba5854 100644 --- a/src/r_plane.cpp +++ b/src/r_plane.cpp @@ -1038,7 +1038,7 @@ void R_DrawSinglePlane(drawspandata_t *ds, visplane_t *pl, boolean allow_paralle spanfunctype = SPANDRAWFUNC_SPLAT; if (pl->polyobj->translucency == 0 || (pl->extra_colormap && (pl->extra_colormap->flags & CMF_FOG))) - light = std::max((pl->lightlevel >> LIGHTSEGSHIFT), cv_secbright.value); + light = (std::max(pl->lightlevel, cv_secbright.value) >> LIGHTSEGSHIFT); else light = LIGHTLEVELS-1; } @@ -1079,17 +1079,17 @@ void R_DrawSinglePlane(drawspandata_t *ds, visplane_t *pl, boolean allow_paralle } if ((spanfunctype == SPANDRAWFUNC_SPLAT) || (pl->extra_colormap && (pl->extra_colormap->flags & CMF_FOG))) - light = std::max((pl->lightlevel >> LIGHTSEGSHIFT), cv_secbright.value); + light = (std::max(pl->lightlevel, cv_secbright.value) >> LIGHTSEGSHIFT); else light = LIGHTLEVELS-1; } else if (pl->ffloor->fofflags & FOF_FOG) { spanfunctype = SPANDRAWFUNC_FOG; - light = std::max((pl->lightlevel >> LIGHTSEGSHIFT), cv_secbright.value); + light = (std::max(pl->lightlevel, cv_secbright.value) >> LIGHTSEGSHIFT); } else - light = std::max((pl->lightlevel >> LIGHTSEGSHIFT), cv_secbright.value); + light = (std::max(pl->lightlevel, cv_secbright.value) >> LIGHTSEGSHIFT); debug = SW_HI_FOFPLANES; } @@ -1149,7 +1149,7 @@ void R_DrawSinglePlane(drawspandata_t *ds, visplane_t *pl, boolean allow_paralle } } else - light = std::max((pl->lightlevel >> LIGHTSEGSHIFT), cv_secbright.value); + light = (std::max(pl->lightlevel, cv_secbright.value) >> LIGHTSEGSHIFT); } ds->currentplane = pl; diff --git a/src/r_things.cpp b/src/r_things.cpp index c537c5745..f61cf7350 100644 --- a/src/r_things.cpp +++ b/src/r_things.cpp @@ -1320,7 +1320,7 @@ static void R_SplitSprite(vissprite_t *sprite) newsprite->cut = static_cast(newsprite->cut | SC_TOP); if (!(sector->lightlist[i].caster->fofflags & FOF_NOSHADE)) { - lightnum = std::max((*sector->lightlist[i].lightlevel >> LIGHTSEGSHIFT), cv_secbright.value); + lightnum = (std::max((INT32)*sector->lightlist[i].lightlevel, cv_secbright.value)) >> LIGHTSEGSHIFT; if (lightnum < 0) spritelights = scalelight[0]; @@ -2354,7 +2354,7 @@ static void R_ProjectSprite(mobj_t *thing) lightnum = thing->subsector->sector->lightlevel; } - lightnum = std::max((lightnum + R_ThingLightLevel(thing)) >> LIGHTSEGSHIFT, cv_secbright.value); + lightnum = (std::max((lightnum + R_ThingLightLevel(thing)), cv_secbright.value) >> LIGHTSEGSHIFT); if (maplighting.directional == true && P_SectorUsesDirectionalLighting(thing->subsector->sector)) { @@ -2780,7 +2780,7 @@ void R_AddSprites(sector_t *sec, INT32 lightlevel) { if (sec->heightsec == -1) lightlevel = sec->lightlevel; - lightnum = std::max((lightlevel >> LIGHTSEGSHIFT), cv_secbright.value); + lightnum = (std::max(lightlevel, cv_secbright.value) >> LIGHTSEGSHIFT); if (lightnum < 0) spritelights = scalelight[0];