diff --git a/src/d_main.c b/src/d_main.c
index 1f35ff64c5c73ab916317803edb7add48ffb387d..85e67b92dba1cf9fbd1142276cdd92190eabbb20 100644
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -1230,20 +1230,6 @@ void D_SRB2Main(void)
 
 	mainwadstally = packetsizetally; // technically not accurate atm, remember to port the two-stage -file process from kart in 2.2.x
 
-	if (M_CheckParm("-warp") && M_IsNextParm())
-	{
-		const char *word = M_GetNextParm();
-		pstartmap = G_FindMapByNameOrCode(word, 0);
-		if (! pstartmap)
-			I_Error("Cannot find a map remotely named '%s'\n", word);
-		else
-		{
-			if (!M_CheckParm("-server"))
-				G_SetGameModified(true);
-			autostart = true;
-		}
-	}
-
 	cht_Init();
 
 	//---------------------------------------------------- READY SCREEN
@@ -1307,6 +1293,22 @@ void D_SRB2Main(void)
 
 	//------------------------------------------------ COMMAND LINE PARAMS
 
+	// this must be done after loading gamedata, to avoid setting off the corrupted gamedata flag in G_LoadGameData
+	// -- Monster Iestyn 20/02/20
+	if (M_CheckParm("-warp") && M_IsNextParm())
+	{
+		const char *word = M_GetNextParm();
+		pstartmap = G_FindMapByNameOrCode(word, 0);
+		if (! pstartmap)
+			I_Error("Cannot find a map remotely named '%s'\n", word);
+		else
+		{
+			if (!M_CheckParm("-server"))
+				G_SetGameModified(true);
+			autostart = true;
+		}
+	}
+
 	// Initialize CD-Audio
 	if (M_CheckParm("-usecd") && !dedicated)
 		I_InitCD();