From fba7d7dd95721dcc41ec5ebc703f1dd9e55310ed Mon Sep 17 00:00:00 2001 From: Jaime Ita Passos <jp6781615@gmail.com> Date: Mon, 19 Apr 2021 04:46:32 -0300 Subject: [PATCH] Raise the file limit to 65535. --- src/d_netcmd.c | 11 ++++++++--- src/doomdef.h | 3 +++ src/m_menu.c | 4 ++++ src/w_wad.c | 7 +++---- src/w_wad.h | 12 +++++++++--- 5 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index d6fc5bdfa8..f96b036ae1 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -3322,7 +3322,7 @@ static void Command_Addfile(void) break; ++p; - // check total packet size and no of files currently loaded + // check no of files currently loaded // See W_LoadWadFile in w_wad.c if (numwadfiles >= MAX_WADFILES) { @@ -3400,7 +3400,6 @@ static void Got_RequestAddfilecmd(UINT8 **cp, INT32 playernum) return; } - // See W_LoadWadFile in w_wad.c if (numwadfiles >= MAX_WADFILES) toomany = true; else @@ -3483,7 +3482,13 @@ static void Command_ListWADS_f(void) { INT32 i = numwadfiles; char *tempname; - CONS_Printf(M_GetText("There are %d/%d wads loaded:\n"),numwadfiles,MAX_WADFILES); + +#ifdef ENFORCE_WAD_LIMIT + CONS_Printf(M_GetText("There are %d/%d files loaded:\n"),numwadfiles,MAX_WADFILES); +#else + CONS_Printf(M_GetText("There are %d files loaded:\n"),numwadfiles); +#endif + for (i--; i >= 0; i--) { nameonly(tempname = va("%s", wadfiles[i]->filename)); diff --git a/src/doomdef.h b/src/doomdef.h index 52abc95972..11bf27ab0b 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -151,6 +151,9 @@ extern char logfilename[1024]; // Comment or uncomment this as necessary. #define USE_PATCH_DTA +// Enforce a limit of loaded WAD files. +//#define ENFORCE_WAD_LIMIT + // Use .kart extension addons //#define USE_KART diff --git a/src/m_menu.c b/src/m_menu.c index b3c0f1c767..148473378f 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -6307,6 +6307,7 @@ static void M_Addons(INT32 choice) M_SetupNextMenu(&MISC_AddonsDef); } +#ifdef ENFORCE_WAD_LIMIT #define width 4 #define vpadding 27 #define h (BASEVIDHEIGHT-(2*vpadding)) @@ -6354,6 +6355,7 @@ static void M_DrawTemperature(INT32 x, fixed_t t) #undef vpadding #undef h #undef NUMCOLOURS +#endif static char *M_AddonsHeaderPath(void) { @@ -6447,6 +6449,7 @@ static void M_DrawAddons(void) V_DrawCenteredString(BASEVIDWIDTH/2, 5, 0, LOCATIONSTRING1); // (recommendedflags == V_SKYMAP ? LOCATIONSTRING2 : LOCATIONSTRING1) +#ifdef ENFORCE_WAD_LIMIT if (numwadfiles <= mainwads+1) y = 0; else if (numwadfiles >= MAX_WADFILES) @@ -6459,6 +6462,7 @@ static void M_DrawAddons(void) } M_DrawTemperature(BASEVIDWIDTH - 19 - 5, y); +#endif // DRAW MENU x = currentMenu->x; diff --git a/src/w_wad.c b/src/w_wad.c index 14bdad9e3e..695b392cda 100644 --- a/src/w_wad.c +++ b/src/w_wad.c @@ -734,9 +734,8 @@ UINT16 W_InitFile(const char *filename, boolean mainfile, boolean startup) refreshdirname = NULL; //CONS_Debug(DBG_SETUP, "Loading %s\n", filename); - // - // check if limit of active wadfiles - // + + // Check if the game reached the limit of active wadfiles. if (numwadfiles >= MAX_WADFILES) { CONS_Alert(CONS_ERROR, M_GetText("Maximum wad files reached\n")); @@ -900,7 +899,7 @@ void W_InitMultipleFiles(addfilelist_t *list) */ static boolean TestValidLump(UINT16 wad, UINT16 lump) { - I_Assert(wad < MAX_WADFILES); + I_Assert(wad < numwadfiles); if (!wadfiles[wad]) // make sure the wad file exists return false; diff --git a/src/w_wad.h b/src/w_wad.h index 88929c187e..bd7809b8bf 100644 --- a/src/w_wad.h +++ b/src/w_wad.h @@ -96,9 +96,15 @@ virtlump_t* vres_Find(const virtres_t*, const char*); // DYNAMIC WAD LOADING // ========================================================================= +// Maximum of files that can be loaded +// (there is a max of simultaneous open files anyway) +#ifdef ENFORCE_WAD_LIMIT +#define MAX_WADFILES 2048 // This cannot be any higher than UINT16_MAX. +#else +#define MAX_WADFILES UINT16_MAX +#endif + #define MAX_WADPATH 512 -#define MAX_WADFILES 2048 // Maximum of files that can be loaded -// (there is a max of simultaneous open files anyway, and this should be plenty) #define lumpcache_t void * @@ -127,7 +133,7 @@ typedef struct wadfile_s boolean important; // also network - !W_VerifyNMUSlumps } wadfile_t; -#define WADFILENUM(lumpnum) (UINT16)((lumpnum)>>16) // wad flumpnum>>16) // wad file number in upper word +#define WADFILENUM(lumpnum) (UINT16)((lumpnum)>>16) // wad file number in upper word #define LUMPNUM(lumpnum) (UINT16)((lumpnum)&0xFFFF) // lump number for this pwad extern UINT16 numwadfiles; -- GitLab