From 7a369a5650796c007db66126eee1a3826df122f3 Mon Sep 17 00:00:00 2001 From: Monster Iestyn Date: Tue, 5 Apr 2016 12:39:53 +0100 Subject: [PATCH 1/2] Turns out boss thing types re-setting mthing->z is a left-over from 1.09.4 and older versions Apparently bosses and players used to use options >> 5 instead of 4 for z heights, or so it seems --- src/p_mobj.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index be1fd9a02..42571a5c3 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -8901,6 +8901,7 @@ void P_SpawnMapThing(mapthing_t *mthing) const size_t mthingi = (size_t)(mthing - mapthings); // Why does P_FindSpecialLineFromTag not work here?!? + // Monster Iestyn: tag lists haven't been initialised yet for the map, that's why for (line = 0; line < numlines; line++) { if (lines[line].special == 9 && lines[line].tag == mthing->angle) @@ -9050,10 +9051,6 @@ ML_NOCLIMB : Direction not controllable { if (mthing->options & MTF_OBJECTSPECIAL) // No egg trap for this boss mobj->flags2 |= MF2_BOSSNOTRAP; - - z = ss->sector->floorheight + ((mthing->options >> (ZSHIFT)) << FRACBITS); - - mthing->z = (INT16)(z>>FRACBITS); } if (i == MT_AXIS || i == MT_AXISTRANSFER || i == MT_AXISTRANSFERLINE) // Axis Points From 69a58d836963b0cd1c8325fa3b3162c1418debe9 Mon Sep 17 00:00:00 2001 From: Monster Iestyn Date: Tue, 5 Apr 2016 15:33:55 +0100 Subject: [PATCH 2/2] Fix lighting parity between resolutions for sprites and FOFs --- src/r_segs.c | 6 +++--- src/r_things.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/r_segs.c b/src/r_segs.c index 252f6face..0e2b9ea5c 100644 --- a/src/r_segs.c +++ b/src/r_segs.c @@ -198,7 +198,7 @@ static void R_DrawWallSplats(void) // draw the columns for (dc_x = x1; dc_x <= x2; dc_x++, spryscale += rw_scalestep) { - pindex = spryscale>>LIGHTSCALESHIFT; + pindex = FixedMul(spryscale, FixedDiv(640, vid.width))>>LIGHTSCALESHIFT; if (pindex >= MAXLIGHTSCALE) pindex = MAXLIGHTSCALE - 1; dc_colormap = walllights[pindex]; @@ -942,7 +942,7 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor) else xwalllights = scalelight[lightnum]; - pindex = spryscale>>LIGHTSCALESHIFT; + pindex = FixedMul(spryscale, FixedDiv(640, vid.width))>>LIGHTSCALESHIFT; if (pindex >= MAXLIGHTSCALE) pindex = MAXLIGHTSCALE-1; @@ -1030,7 +1030,7 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor) } // calculate lighting - pindex = spryscale>>LIGHTSCALESHIFT; + pindex = FixedMul(spryscale, FixedDiv(640, vid.width))>>LIGHTSCALESHIFT; if (pindex >= MAXLIGHTSCALE) pindex = MAXLIGHTSCALE - 1; diff --git a/src/r_things.c b/src/r_things.c index f4e5e07a1..5616c2224 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -1013,7 +1013,7 @@ static void R_SplitSprite(vissprite_t *sprite, mobj_t *thing) if (!((thing->frame & (FF_FULLBRIGHT|FF_TRANSMASK) || thing->flags2 & MF2_SHADOW) && (!newsprite->extra_colormap || !newsprite->extra_colormap->fog))) { - lindex = sprite->xscale>>(LIGHTSCALESHIFT); + lindex = FixedMul(sprite->xscale, FixedDiv(640, vid.width))>>(LIGHTSCALESHIFT); if (lindex >= MAXLIGHTSCALE) lindex = MAXLIGHTSCALE-1; @@ -1329,7 +1329,7 @@ static void R_ProjectSprite(mobj_t *thing) else { // diminished light - lindex = xscale>>(LIGHTSCALESHIFT); + lindex = FixedMul(xscale, FixedDiv(640, vid.width))>>(LIGHTSCALESHIFT); if (lindex >= MAXLIGHTSCALE) lindex = MAXLIGHTSCALE-1;