diff --git a/src/d_main.c b/src/d_main.c
index 2dc00da5da935bf46f14b800694d102690d8ae6d..e9969459907499d206595048cc47cd1c9ecd5ac2 100644
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -101,9 +101,6 @@ int SUBVERSION;
 // platform independant focus loss
 UINT8 window_notinfocus = false;
 
-static addfilelist_t startupwadfiles;
-static addfilelist_t startuppwads;
-
 boolean devparm = false; // started game with -devparm
 
 boolean singletics = false; // timedemo
@@ -1125,7 +1122,7 @@ static void ChangeDirForUrlHandler(void)
 // Identify the SRB2 version, and IWAD file to use.
 // ==========================================================================
 
-static void IdentifyVersion(void)
+static void IdentifyVersion(addfilelist_t *startupwadfiles)
 {
 	char *srb2wad;
 	const char *srb2waddir = NULL;
@@ -1168,7 +1165,7 @@ static void IdentifyVersion(void)
 
 	// Load the IWAD
 	if (srb2wad != NULL && FIL_ReadFileOK(srb2wad))
-		D_AddFile(&startupwadfiles, srb2wad);
+		D_AddFile(startupwadfiles, srb2wad);
 	else
 		I_Error("srb2.pk3 not found! Expected in %s, ss file: %s\n", srb2waddir, srb2wad);
 
@@ -1179,14 +1176,14 @@ static void IdentifyVersion(void)
 	// checking in D_SRB2Main
 
 	// Add the maps
-	D_AddFile(&startupwadfiles, va(pandf,srb2waddir, "zones.pk3"));
+	D_AddFile(startupwadfiles, va(pandf,srb2waddir, "zones.pk3"));
 
 	// Add the characters
-	D_AddFile(&startupwadfiles, va(pandf,srb2waddir, "characters.pk3"));
+	D_AddFile(startupwadfiles, va(pandf,srb2waddir, "characters.pk3"));
 
 #ifdef USE_PATCH_DTA
 	// Add our crappy patches to fix our bugs
-	D_AddFile(&startupwadfiles, va(pandf,srb2waddir, "patch.pk3"));
+	D_AddFile(startupwadfiles, va(pandf,srb2waddir, "patch.pk3"));
 #endif
 
 #if !defined (HAVE_SDL) || defined (HAVE_MIXER)
@@ -1196,7 +1193,7 @@ static void IdentifyVersion(void)
 			const char *musicpath = va(pandf,srb2waddir,str);\
 			int ms = W_VerifyNMUSlumps(musicpath, false); \
 			if (ms == 1) \
-				D_AddFile(&startupwadfiles, musicpath); \
+				D_AddFile(startupwadfiles, musicpath); \
 			else if (ms == 0) \
 				I_Error("File "str" has been modified with non-music/sound lumps"); \
 		}
@@ -1241,6 +1238,14 @@ void D_SRB2Main(void)
 	INT32 pstartmap = 1;
 	boolean autostart = false;
 
+	addfilelist_t startupwads;
+	addfilelist_t startupwadfiles;
+
+	startupwads.files = NULL;
+	startupwads.numfiles = 0;
+	startupwadfiles.files = NULL;
+	startupwadfiles.numfiles = 0;
+
 	/* break the version string into version numbers, for netplay */
 	D_ConvertVersionNumbers();
 
@@ -1285,7 +1290,7 @@ void D_SRB2Main(void)
 	ChangeDirForUrlHandler();
 
 	// identify the main IWAD file to use
-	IdentifyVersion();
+	IdentifyVersion(&startupwadfiles);
 
 #if !defined(NOTERMIOS)
 	setbuf(stdout, NULL); // non-buffered output
@@ -1403,9 +1408,9 @@ void D_SRB2Main(void)
 			else if (myargv[i][0] == '-' || myargv[i][0] == '+')
 				addontype = 0;
 			else if (addontype == 1)
-				D_AddFile(&startuppwads, myargv[i]);
+				D_AddFile(&startupwads, myargv[i]);
 			else if (addontype == 2)
-				D_AddFolder(&startuppwads, myargv[i]);
+				D_AddFolder(&startupwads, myargv[i]);
 		}
 	}
 
@@ -1490,11 +1495,11 @@ void D_SRB2Main(void)
 
 	CON_StopRefresh(); // Temporarily stop refreshing the screen for wad loading
 
-	if (startuppwads.numfiles)
+	if (startupwads.numfiles)
 	{
 		CONS_Printf("W_InitMultipleFiles(): Adding extra PWADs.\n");
-		W_InitMultipleFiles(&startuppwads);
-		D_CleanFile(&startuppwads);
+		W_InitMultipleFiles(&startupwads);
+		D_CleanFile(&startupwads);
 	}
 
 	CON_StartRefresh(); // Restart the refresh!