From 2b7d75126e8e8641a4b413c74b3c65da87e0d309 Mon Sep 17 00:00:00 2001
From: fickleheart <fickle@tinted.red>
Date: Fri, 17 Jan 2020 20:39:15 -0600
Subject: [PATCH] Add DBG_VIEWMORPH to view pre-transformed view

---
 src/doomdef.h |  1 +
 src/r_main.c  | 30 ++++++++++++++++++++++++++++--
 2 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/src/doomdef.h b/src/doomdef.h
index 3d02871e47..565d1aadff 100644
--- a/src/doomdef.h
+++ b/src/doomdef.h
@@ -490,6 +490,7 @@ extern INT32 cv_debug;
 #define DBG_SETUP       0x0400
 #define DBG_LUA         0x0800
 #define DBG_RANDOMIZER  0x1000
+#define DBG_VIEWMORPH   0x2000
 
 // =======================
 // Misc stuff for later...
diff --git a/src/r_main.c b/src/r_main.c
index d4d05ad448..91e1b3fe76 100644
--- a/src/r_main.c
+++ b/src/r_main.c
@@ -667,8 +667,34 @@ void R_ApplyViewMorph(void)
 	if (!viewmorph.use)
 		return;
 
-	for (p = 0; p < end; p++)
-		tmpscr[p] = srcscr[viewmorph.scrmap[p]];
+	if (cv_debug & DBG_VIEWMORPH)
+	{
+		UINT8 border = 32;
+		UINT8 grid = 160;
+		INT32 ws = vid.width / 4;
+		INT32 hs = vid.width * (vid.height / 4);
+
+		memcpy(tmpscr, srcscr, vid.width*vid.height);
+		for (p = 0; p < vid.width; p++)
+		{
+			tmpscr[viewmorph.scrmap[p]] = border;
+			tmpscr[viewmorph.scrmap[p + hs]] = grid;
+			tmpscr[viewmorph.scrmap[p + hs*2]] = grid;
+			tmpscr[viewmorph.scrmap[p + hs*3]] = grid;
+			tmpscr[viewmorph.scrmap[end - 1 - p]] = border;
+		}
+		for (p = vid.width; p < end; p += vid.width)
+		{
+			tmpscr[viewmorph.scrmap[p]] = border;
+			tmpscr[viewmorph.scrmap[p + ws]] = grid;
+			tmpscr[viewmorph.scrmap[p + ws*2]] = grid;
+			tmpscr[viewmorph.scrmap[p + ws*3]] = grid;
+			tmpscr[viewmorph.scrmap[end - 1 - p]] = border;
+		}
+	}
+	else
+		for (p = 0; p < end; p++)
+			tmpscr[p] = srcscr[viewmorph.scrmap[p]];
 
 	VID_BlitLinearScreen(tmpscr, screens[0],
 			vid.width*vid.bpp, vid.height, vid.width*vid.bpp, vid.width);
-- 
GitLab