From 9e101fc2bb8d86cbc0e8317368f1e21fd9fed42b Mon Sep 17 00:00:00 2001
From: fickleheart <fickle@tinted.red>
Date: Sun, 12 Jan 2020 09:10:09 -0600
Subject: [PATCH] Limit shadow Y scale to prevent graphical bugs

---
 src/r_things.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/r_things.c b/src/r_things.c
index 0fc8060717..41fb103e31 100644
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -1247,8 +1247,10 @@ static void R_ProjectDropShadow(mobj_t *thing, vissprite_t *vis, fixed_t scale,
 	patch = W_CachePatchName("DSHADOW", PU_CACHE);
 	xscale = FixedDiv(projection, tz);
 	yscale = FixedDiv(projectiony, tz);
-	shadowxscale = FixedMul(thing->radius*2, scalemul) / patch->width;
-	shadowyscale = FixedMul(FixedMul(thing->radius*2 / patch->height, scalemul), FixedDiv(abs(floorz - viewz), tz));
+	shadowxscale = FixedMul(thing->radius*2, scalemul);
+	shadowyscale = FixedMul(FixedMul(thing->radius*2, scalemul), FixedDiv(abs(floorz - viewz), tz));
+	shadowyscale = min(shadowyscale, shadowxscale) / patch->height;
+	shadowxscale /= patch->width;
 	shadowskew = 0;
 
 	if (floorslope)
-- 
GitLab