Skip to content

Commit

Permalink
load id24res if present
Browse files Browse the repository at this point in the history
  • Loading branch information
RicardoLuis0 committed Aug 14, 2024
1 parent c385391 commit f4c9bc6
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 6 deletions.
37 changes: 33 additions & 4 deletions src/d_iwad.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,12 @@ void FIWadManager::ParseIWadInfo(const char *fn, const char *data, int datasize,
iwad->prio = sc.Number;
}
}
else if (sc.Compare("SupportWAD"))
{
sc.MustGetStringName("=");
sc.MustGetString();
iwad->SupportWAD = sc.String;
}
else if (sc.Compare("Config"))
{
sc.MustGetStringName("=");
Expand Down Expand Up @@ -558,6 +564,18 @@ void FIWadManager::ValidateIWADs()

static bool havepicked = false;


FString FIWadManager::IWADPathFileSearch(const FString &file)
{
for(const FString &path : mSearchPaths)
{
FString f = path + "/" + file;
if(FileExists(f)) return f;
}

return "";
}

int FIWadManager::IdentifyVersion (std::vector<std::string>&wadfiles, const char *iwad, const char *zdoom_wad, const char *optional_wad)
{
const char *iwadparm = Args->CheckValue ("-iwad");
Expand Down Expand Up @@ -798,11 +816,11 @@ int FIWadManager::IdentifyVersion (std::vector<std::string>&wadfiles, const char
D_AddFile (wadfiles, zdoom_wad, true, -1, GameConfig);

// [SP] Load non-free assets if available. This must be done before the IWAD.
int iwadnum;
int iwadnum = 1;
if (D_AddFile(wadfiles, optional_wad, true, -1, GameConfig))
iwadnum = 2;
else
iwadnum = 1;
{
iwadnum++;
}

fileSystem.SetIwadNum(iwadnum);
if (picks[pick].mRequiredPath.IsNotEmpty())
Expand All @@ -814,6 +832,17 @@ int FIWadManager::IdentifyVersion (std::vector<std::string>&wadfiles, const char
fileSystem.SetMaxIwadNum(iwadnum);

auto info = mIWadInfos[picks[pick].mInfoIndex];

if(info.SupportWAD.IsNotEmpty())
{
FString supportWAD = IWADPathFileSearch(info.SupportWAD);

if(supportWAD.IsNotEmpty())
{
D_AddFile(wadfiles, supportWAD.GetChars(), true, -1, GameConfig);
}
}

// Load additional resources from the same directory as the IWAD itself.
for (unsigned i=0; i < info.Load.Size(); i++)
{
Expand Down
3 changes: 3 additions & 0 deletions src/d_main.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ struct FIWADInfo
FString Name; // Title banner text for this IWAD
FString Autoname; // Name of autoload ini section for this IWAD
FString IWadname; // Default name this game would use - this is for IWAD detection in GAMEINFO.
FString SupportWAD; // Optional support WAD, load if present (initially implemented for id24)
int prio = 0; // selection priority for given IWAD name.
FString Configname; // Name of config section for this IWAD
FString Required; // Requires another IWAD
Expand Down Expand Up @@ -132,7 +133,9 @@ class FIWadManager
void CollectSearchPaths();
void AddIWADCandidates(const char *dir);
void ValidateIWADs();
FString IWADPathFileSearch(const FString &file);
public:

FIWadManager(const char *fn, const char *fnopt);
const FIWADInfo *FindIWAD(std::vector<std::string>& wadfiles, const char *iwad, const char *basewad, const char *optionalwad);
const FString *GetAutoname(unsigned int num) const
Expand Down
24 changes: 22 additions & 2 deletions wadsrc_extra/static/iwadinfo.txt
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,7 @@ IWad
"DMENUPIC", "M_ACPT", "M_CAN", "M_EXITO", "M_CHG"
BannerColors = "54 54 54", "a8 a8 a8"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -342,7 +343,7 @@ IWad
Autoname = "doom.id.doom1.kex"
Game = "Doom"
Config = "Doom"
IWADName = "doom.wad", 2
IWADName = "doomkex.wad", 2
Mapinfo = "mapinfo/ultdoom.txt"
Compatibility = "Shorttex", "nosectionmerge"
MustContain = "E1M1","E2M1","E2M2","E2M3","E2M4","E2M5","E2M6","E2M7","E2M8","E2M9",
Expand All @@ -352,6 +353,7 @@ IWad
Load = "extras.wad"
BannerColors = "00 7c 00", "a8 a8 a8"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -370,6 +372,7 @@ IWad
Load = "extras.wad", "soundtrack"
BannerColors = "00 7c 00", "a8 a8 a8"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -384,6 +387,7 @@ IWad
MustContain = "SMOOSHED", "ANIMDEFS", "LANGUAGE", "MAPINFO", "ENDOOM", "M_DOOM", "TITLEPIC", "TEXTURES"
BannerColors = "a8 00 00", "a8 a8 a8"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -400,6 +404,7 @@ IWad
"DPHOOF","BFGGA0","HEADA1","CYBRA1","SPIDA1D1", "E4M2", "E1M10", "SEWERS"
BannerColors = "18 18 18", "a8 a8 a8"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -416,6 +421,7 @@ IWad
"DPHOOF","BFGGA0","HEADA1","CYBRA1","SPIDA1D1", "E4M2"
BannerColors = "54 54 54", "a8 a8 a8"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -432,6 +438,7 @@ IWad
"DPHOOF","BFGGA0","HEADA1","CYBRA1","SPIDA1D1"
BannerColors = "54 54 54", "a8 a8 a8"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -445,6 +452,7 @@ IWad
MustContain = "E1M1"
BannerColors = "54 54 54", "a8 a8 a8"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -459,6 +467,7 @@ IWad
MustContain = "MAP01", "REDTNT2", "DMAPINFO"
BannerColors = "00 7c 00", "a8 a8 a8"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -474,6 +483,7 @@ IWad
BannerColors = "a8 00 00", "a8 a8 a8"
Load = "extras.wad"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -488,6 +498,7 @@ IWad
MustContain = "MAP01", "REDTNT2"
BannerColors = "a8 00 00", "a8 a8 a8"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -502,6 +513,7 @@ IWad
MustContain = "MAP01", "CAMO1", "DMAPINFO"
BannerColors = "00 7c 00", "a8 a8 a8"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -517,6 +529,7 @@ IWad
BannerColors = "a8 00 00", "a8 a8 a8"
Load = "extras.wad"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -531,6 +544,7 @@ IWad
MustContain = "MAP01", "CAMO1"
BannerColors = "a8 00 00", "a8 a8 a8"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -546,6 +560,7 @@ IWad
BannerColors = "a8 00 00", "a8 a8 a8"
Load = "nerve.wad"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -554,13 +569,14 @@ IWad
Autoname = "doom.id.doom2.kex"
Game = "Doom"
Config = "Doom"
IWADName = "doom2.wad", 2
IWADName = "doom2kex.wad", 2
Mapinfo = "mapinfo/doom2.txt"
Compatibility = "Shorttex", "nosectionmerge"
MustContain = "MAP01", "DMENUPIC", "GAMECONF"
BannerColors = "00 7c 00", "a8 a8 a8"
IgnoreTitlePatches = 1
Load = "extras.wad"
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -576,6 +592,7 @@ IWad
BannerColors = "00 7c 00", "a8 a8 a8"
IgnoreTitlePatches = 1
Load = "nerveunity.wad", "extras.wad", "soundtrack"
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -592,6 +609,7 @@ IWad
IgnoreTitlePatches = 1
Load = "nerve.wad"
DeleteLumps = "M_EPI1", "M_EPI2", "M_EPISOD"
SupportWAD = "id24res.wad"
}

IWad
Expand All @@ -605,6 +623,7 @@ IWad
Compatibility = "Shorttex", "nosectionmerge"
MustContain = "MAP01", "WIOBJ"
BannerColors = "ff ff ff", "a8 00 00"
SupportWAD = "id24res.wad"
}

// Doom 2 must be last to be checked because MAP01 is its only requirement
Expand All @@ -620,6 +639,7 @@ IWad
MustContain = "MAP01"
BannerColors = "a8 00 00", "a8 a8 a8"
IgnoreTitlePatches = 1
SupportWAD = "id24res.wad"
}


Expand Down

0 comments on commit f4c9bc6

Please sign in to comment.