diff --git a/bios/3D Realms/Duke Nukem 3D/NWINTER.GRP b/bios/3D Realms/Duke Nukem 3D/NWINTER.GRP new file mode 100644 index 00000000..0c1a8349 Binary files /dev/null and b/bios/3D Realms/Duke Nukem 3D/NWINTER.GRP differ diff --git a/bios/3D Realms/Duke Nukem 3D/penthous.zip b/bios/3D Realms/Duke Nukem 3D/penthous.zip new file mode 100644 index 00000000..54206097 Binary files /dev/null and b/bios/3D Realms/Duke Nukem 3D/penthous.zip differ diff --git a/bios/3D Realms/Shadow Warrior/.variants/SW.GRP.c80e4272 b/bios/3D Realms/Shadow Warrior/.variants/SW.GRP.c80e4272 new file mode 100644 index 00000000..87e0b8c4 Binary files /dev/null and b/bios/3D Realms/Shadow Warrior/.variants/SW.GRP.c80e4272 differ diff --git a/bios/3D Realms/Shadow Warrior/.variants/SW.GRP.f0385b82 b/bios/3D Realms/Shadow Warrior/.variants/SW.GRP.f0385b82 new file mode 100644 index 00000000..f4362773 Binary files /dev/null and b/bios/3D Realms/Shadow Warrior/.variants/SW.GRP.f0385b82 differ diff --git a/bios/3D Realms/Shadow Warrior/SW.GRP b/bios/3D Realms/Shadow Warrior/SW.GRP new file mode 100644 index 00000000..a143e2ae Binary files /dev/null and b/bios/3D Realms/Shadow Warrior/SW.GRP differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak0.pk3.528eccd0 b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak0.pk3.528eccd0 new file mode 100644 index 00000000..705bc523 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak0.pk3.528eccd0 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak1.pk3.56d659e3 b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak1.pk3.56d659e3 new file mode 100644 index 00000000..186a5fc7 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak1.pk3.56d659e3 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak2.pk3.ed00c365 b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak2.pk3.ed00c365 new file mode 100644 index 00000000..bb7c8eeb Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak2.pk3.ed00c365 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak3.pk3.e6bae955 b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak3.pk3.e6bae955 new file mode 100644 index 00000000..216c00af Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak3.pk3.e6bae955 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak4.pk3.7a610452 b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak4.pk3.7a610452 new file mode 100644 index 00000000..8a4e5e05 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak4.pk3.7a610452 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak5.pk3.e8a18e62 b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak5.pk3.e8a18e62 new file mode 100644 index 00000000..8d2bbc3b Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak5.pk3.e8a18e62 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak6.pk3.492ab480 b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak6.pk3.492ab480 new file mode 100644 index 00000000..6da20d18 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/main/.variants/Pak6.pk3.492ab480 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/main/Pak6.pk3 b/bios/Electronic Arts/Medal of Honor Allied Assault/main/Pak6.pk3 new file mode 100644 index 00000000..b0b97cac Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/main/Pak6.pk3 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.66dc926b b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.66dc926b new file mode 100644 index 00000000..47df3802 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.66dc926b differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.6dcc74c1 b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.6dcc74c1 new file mode 100644 index 00000000..82fc716e Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.6dcc74c1 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.8cc49d26 b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.8cc49d26 new file mode 100644 index 00000000..4dd6d042 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.8cc49d26 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.9dcad7e1 b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.9dcad7e1 new file mode 100644 index 00000000..e41d2ba3 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.9dcad7e1 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.b38c96b1 b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.b38c96b1 new file mode 100644 index 00000000..d69a635c Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/.variants/pak5.pk3.b38c96b1 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/pak4.pk3 b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/pak4.pk3 new file mode 100644 index 00000000..8a17580a Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/pak4.pk3 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/pak5.pk3 b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/pak5.pk3 new file mode 100644 index 00000000..fc8c9883 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/mainta/pak5.pk3 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.1be50fbc b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.1be50fbc new file mode 100644 index 00000000..901fd771 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.1be50fbc differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.35e29bca b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.35e29bca new file mode 100644 index 00000000..15a94660 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.35e29bca differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.54a18053 b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.54a18053 new file mode 100644 index 00000000..9f856ddf Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.54a18053 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.bb84c050 b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.bb84c050 new file mode 100644 index 00000000..1540e154 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.bb84c050 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.f62c9a0c b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.f62c9a0c new file mode 100644 index 00000000..60f722a2 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/.variants/pak4.pk3.f62c9a0c differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/pak3.pk3 b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/pak3.pk3 new file mode 100644 index 00000000..ed7a4177 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/pak3.pk3 differ diff --git a/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/pak4.pk3 b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/pak4.pk3 new file mode 100644 index 00000000..e5aed268 Binary files /dev/null and b/bios/Electronic Arts/Medal of Honor Allied Assault/maintt/pak4.pk3 differ diff --git a/bios/Game Engines/GZDoom/brightmaps.pk3 b/bios/Game Engines/GZDoom/brightmaps.pk3 new file mode 100644 index 00000000..0898dc18 Binary files /dev/null and b/bios/Game Engines/GZDoom/brightmaps.pk3 differ diff --git a/bios/Game Engines/GZDoom/game_support.pk3 b/bios/Game Engines/GZDoom/game_support.pk3 new file mode 100644 index 00000000..eac15c5a Binary files /dev/null and b/bios/Game Engines/GZDoom/game_support.pk3 differ diff --git a/bios/Game Engines/GZDoom/game_widescreen_gfx.pk3 b/bios/Game Engines/GZDoom/game_widescreen_gfx.pk3 new file mode 100644 index 00000000..0f01e4ed Binary files /dev/null and b/bios/Game Engines/GZDoom/game_widescreen_gfx.pk3 differ diff --git a/bios/Game Engines/GZDoom/gzdoom.pk3 b/bios/Game Engines/GZDoom/gzdoom.pk3 new file mode 100644 index 00000000..b26b009c Binary files /dev/null and b/bios/Game Engines/GZDoom/gzdoom.pk3 differ diff --git a/bios/Game Engines/GZDoom/lights.pk3 b/bios/Game Engines/GZDoom/lights.pk3 new file mode 100644 index 00000000..acf0afca Binary files /dev/null and b/bios/Game Engines/GZDoom/lights.pk3 differ diff --git a/bios/Game Engines/Raze/raze.pk3 b/bios/Game Engines/Raze/raze.pk3 new file mode 100644 index 00000000..62236796 Binary files /dev/null and b/bios/Game Engines/Raze/raze.pk3 differ diff --git a/bios/Id Software/Doom 3/base/pak005.pk4 b/bios/Id Software/Doom 3/base/pak005.pk4 new file mode 100644 index 00000000..79596f27 Binary files /dev/null and b/bios/Id Software/Doom 3/base/pak005.pk4 differ diff --git a/bios/Id Software/Doom 3/base/pak006.pk4 b/bios/Id Software/Doom 3/base/pak006.pk4 new file mode 100644 index 00000000..420794e1 Binary files /dev/null and b/bios/Id Software/Doom 3/base/pak006.pk4 differ diff --git a/bios/Id Software/Doom 3/base/pak007.pk4 b/bios/Id Software/Doom 3/base/pak007.pk4 new file mode 100644 index 00000000..8fd2802c Binary files /dev/null and b/bios/Id Software/Doom 3/base/pak007.pk4 differ diff --git a/bios/Id Software/Doom 3/base/pak008.pk4 b/bios/Id Software/Doom 3/base/pak008.pk4 new file mode 100644 index 00000000..8a9c8113 Binary files /dev/null and b/bios/Id Software/Doom 3/base/pak008.pk4 differ diff --git a/bios/Id Software/Doom 3/d3xp/pak001.pk4 b/bios/Id Software/Doom 3/d3xp/pak001.pk4 new file mode 100644 index 00000000..372d23fa Binary files /dev/null and b/bios/Id Software/Doom 3/d3xp/pak001.pk4 differ diff --git a/bios/Id Software/Quake II/baseq2/pak1.pak b/bios/Id Software/Quake II/baseq2/pak1.pak new file mode 100644 index 00000000..8189343f Binary files /dev/null and b/bios/Id Software/Quake II/baseq2/pak1.pak differ diff --git a/bios/Id Software/Quake II/baseq2/pak2.pak b/bios/Id Software/Quake II/baseq2/pak2.pak new file mode 100644 index 00000000..462bb0d4 Binary files /dev/null and b/bios/Id Software/Quake II/baseq2/pak2.pak differ diff --git a/bios/Id Software/Quake II/ctf/pak0.pak b/bios/Id Software/Quake II/ctf/pak0.pak new file mode 100644 index 00000000..f740bc37 Binary files /dev/null and b/bios/Id Software/Quake II/ctf/pak0.pak differ diff --git a/bios/Id Software/Quake III Arena/baseq3/pak1.pk3 b/bios/Id Software/Quake III Arena/baseq3/pak1.pk3 new file mode 100644 index 00000000..b4c775b0 Binary files /dev/null and b/bios/Id Software/Quake III Arena/baseq3/pak1.pk3 differ diff --git a/bios/Id Software/Quake III Arena/baseq3/pak2.pk3 b/bios/Id Software/Quake III Arena/baseq3/pak2.pk3 new file mode 100644 index 00000000..93179e25 Binary files /dev/null and b/bios/Id Software/Quake III Arena/baseq3/pak2.pk3 differ diff --git a/bios/Id Software/Quake III Arena/baseq3/pak3.pk3 b/bios/Id Software/Quake III Arena/baseq3/pak3.pk3 new file mode 100644 index 00000000..baf78f4b Binary files /dev/null and b/bios/Id Software/Quake III Arena/baseq3/pak3.pk3 differ diff --git a/bios/Id Software/Quake III Arena/baseq3/pak4.pk3 b/bios/Id Software/Quake III Arena/baseq3/pak4.pk3 new file mode 100644 index 00000000..b132c599 Binary files /dev/null and b/bios/Id Software/Quake III Arena/baseq3/pak4.pk3 differ diff --git a/bios/Id Software/Quake III Arena/baseq3/pak5.pk3 b/bios/Id Software/Quake III Arena/baseq3/pak5.pk3 new file mode 100644 index 00000000..0076eec7 Binary files /dev/null and b/bios/Id Software/Quake III Arena/baseq3/pak5.pk3 differ diff --git a/bios/Id Software/Quake III Arena/baseq3/pak6.pk3 b/bios/Id Software/Quake III Arena/baseq3/pak6.pk3 new file mode 100644 index 00000000..f8b78ac8 Binary files /dev/null and b/bios/Id Software/Quake III Arena/baseq3/pak6.pk3 differ diff --git a/bios/Id Software/Quake III Arena/baseq3/pak7.pk3 b/bios/Id Software/Quake III Arena/baseq3/pak7.pk3 new file mode 100644 index 00000000..b395daf7 Binary files /dev/null and b/bios/Id Software/Quake III Arena/baseq3/pak7.pk3 differ diff --git a/bios/Id Software/Quake III Arena/baseq3/pak8.pk3 b/bios/Id Software/Quake III Arena/baseq3/pak8.pk3 new file mode 100644 index 00000000..cae8d5d4 Binary files /dev/null and b/bios/Id Software/Quake III Arena/baseq3/pak8.pk3 differ diff --git a/bios/Id Software/Quake III Arena/demoq3/pak0.pk3 b/bios/Id Software/Quake III Arena/demoq3/pak0.pk3 new file mode 100644 index 00000000..1bd8eca2 Binary files /dev/null and b/bios/Id Software/Quake III Arena/demoq3/pak0.pk3 differ diff --git a/bios/Id Software/Quake III Arena/missionpack/pak1.pk3 b/bios/Id Software/Quake III Arena/missionpack/pak1.pk3 new file mode 100644 index 00000000..de4f25eb Binary files /dev/null and b/bios/Id Software/Quake III Arena/missionpack/pak1.pk3 differ diff --git a/bios/Id Software/Quake III Arena/missionpack/pak2.pk3 b/bios/Id Software/Quake III Arena/missionpack/pak2.pk3 new file mode 100644 index 00000000..d4b6e4c5 Binary files /dev/null and b/bios/Id Software/Quake III Arena/missionpack/pak2.pk3 differ diff --git a/bios/Id Software/Quake III Arena/missionpack/pak3.pk3 b/bios/Id Software/Quake III Arena/missionpack/pak3.pk3 new file mode 100644 index 00000000..de84e62a Binary files /dev/null and b/bios/Id Software/Quake III Arena/missionpack/pak3.pk3 differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/.variants/sp_pak3.pk3.3823c432 b/bios/Id Software/Return to Castle Wolfenstein/main/.variants/sp_pak3.pk3.3823c432 new file mode 100644 index 00000000..4aff99ec Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/.variants/sp_pak3.pk3.3823c432 differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/.variants/sp_pak3.pk3.3b79baa3 b/bios/Id Software/Return to Castle Wolfenstein/main/.variants/sp_pak3.pk3.3b79baa3 new file mode 100644 index 00000000..7089aabf Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/.variants/sp_pak3.pk3.3b79baa3 differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/.variants/sp_pak3.pk3.4958f217 b/bios/Id Software/Return to Castle Wolfenstein/main/.variants/sp_pak3.pk3.4958f217 new file mode 100644 index 00000000..138b7907 Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/.variants/sp_pak3.pk3.4958f217 differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/.variants/sp_pak3.pk3.f5dbd82f b/bios/Id Software/Return to Castle Wolfenstein/main/.variants/sp_pak3.pk3.f5dbd82f new file mode 100644 index 00000000..1551a7dd Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/.variants/sp_pak3.pk3.f5dbd82f differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/mp_bin.pk3 b/bios/Id Software/Return to Castle Wolfenstein/main/mp_bin.pk3 new file mode 100644 index 00000000..123d508d Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/mp_bin.pk3 differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/mp_bin0.pk3 b/bios/Id Software/Return to Castle Wolfenstein/main/mp_bin0.pk3 new file mode 100644 index 00000000..2c7e6c08 Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/mp_bin0.pk3 differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak1.pk3 b/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak1.pk3 new file mode 100644 index 00000000..cb6f5b44 Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak1.pk3 differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak2.pk3 b/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak2.pk3 new file mode 100644 index 00000000..5ec21998 Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak2.pk3 differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak3.pk3 b/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak3.pk3 new file mode 100644 index 00000000..a9864d5b Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak3.pk3 differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak4.pk3 b/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak4.pk3 new file mode 100644 index 00000000..5616e202 Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak4.pk3 differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak5.pk3 b/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak5.pk3 new file mode 100644 index 00000000..bc4588c6 Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/mp_pak5.pk3 differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/sp_pak2.pk3 b/bios/Id Software/Return to Castle Wolfenstein/main/sp_pak2.pk3 new file mode 100644 index 00000000..ab38e24b Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/sp_pak2.pk3 differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/sp_pak3.pk3 b/bios/Id Software/Return to Castle Wolfenstein/main/sp_pak3.pk3 new file mode 100644 index 00000000..3aaf35bd Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/sp_pak3.pk3 differ diff --git a/bios/Id Software/Return to Castle Wolfenstein/main/sp_pak4.pk3 b/bios/Id Software/Return to Castle Wolfenstein/main/sp_pak4.pk3 new file mode 100644 index 00000000..f26d3b61 Binary files /dev/null and b/bios/Id Software/Return to Castle Wolfenstein/main/sp_pak4.pk3 differ diff --git a/bios/Monolith/Blood/BLOOD.RFF b/bios/Monolith/Blood/BLOOD.RFF new file mode 100644 index 00000000..c965e1e7 Binary files /dev/null and b/bios/Monolith/Blood/BLOOD.RFF differ diff --git a/bios/Monolith/Blood/GUI.RFF b/bios/Monolith/Blood/GUI.RFF new file mode 100644 index 00000000..7ea223cf Binary files /dev/null and b/bios/Monolith/Blood/GUI.RFF differ diff --git a/bios/Monolith/Blood/SOUNDS.RFF b/bios/Monolith/Blood/SOUNDS.RFF new file mode 100644 index 00000000..92e3b598 Binary files /dev/null and b/bios/Monolith/Blood/SOUNDS.RFF differ diff --git a/bios/Monolith/Blood/SURFACE.DAT b/bios/Monolith/Blood/SURFACE.DAT new file mode 100644 index 00000000..dc9b0a6a Binary files /dev/null and b/bios/Monolith/Blood/SURFACE.DAT differ diff --git a/bios/Monolith/Blood/VOXEL.DAT b/bios/Monolith/Blood/VOXEL.DAT new file mode 100644 index 00000000..fc85ec83 Binary files /dev/null and b/bios/Monolith/Blood/VOXEL.DAT differ diff --git a/bios/Valve/Half-Life/cstrike/.variants/liblist.gam.452dc2d3 b/bios/Valve/Half-Life/cstrike/.variants/liblist.gam.452dc2d3 new file mode 100644 index 00000000..896c3743 --- /dev/null +++ b/bios/Valve/Half-Life/cstrike/.variants/liblist.gam.452dc2d3 @@ -0,0 +1,16 @@ +game "Counter-Strike" +url_info "www.counter-strike.net" +url_dl "" +version "1.5" +size "184000000" +svonly "0" +secure "1" +type "multiplayer_only" +cldll "1" +hlversion "1110" +nomodels "1" +nohimodel "1" +mpentity "info_player_start" +gamedll "dlls\mp.dll" +gamedll_linux "dlls/cs_i386.so" +trainmap "tr_1" diff --git a/bios/Valve/Half-Life/dmc/liblist.gam b/bios/Valve/Half-Life/dmc/liblist.gam new file mode 100644 index 00000000..1e8448fc --- /dev/null +++ b/bios/Valve/Half-Life/dmc/liblist.gam @@ -0,0 +1,13 @@ +// Quake Classic Game .dll Listing File +// Load order is determined by file order. +game "Deathmatch Classic " +url_info "www.valvesoftware.com" +url_dl "" +version "1" +size "37000000" +svonly "0" +cldll "0" +type "multiplayer_only" +mpentity "info_player_deathmatch" +gamedll "dlls\dmc.dll" +gamedll_linux "dlls/dmc_i386.so" diff --git a/bios/Valve/Half-Life/gearbox/liblist.gam b/bios/Valve/Half-Life/gearbox/liblist.gam new file mode 100644 index 00000000..60997920 --- /dev/null +++ b/bios/Valve/Half-Life/gearbox/liblist.gam @@ -0,0 +1,12 @@ +gamedir "gearbox" +game "Opposing Force" +startmap "of0a0" +trainmap "ofboot0" +url_info "www.gearboxsoftware.com" +version "1" +size "96000000" +svonly "0" +cldll "1" +hlversion "1108" +type "single" +gamedll "dlls\opfor.dll" diff --git a/bios/Valve/Half-Life/ricochet/liblist.gam b/bios/Valve/Half-Life/ricochet/liblist.gam new file mode 100644 index 00000000..ff20a3b4 --- /dev/null +++ b/bios/Valve/Half-Life/ricochet/liblist.gam @@ -0,0 +1,14 @@ +// Team Fortress Classes Game .dll Listing File +// Load order is determined by file order. +game "Ricochet" +url_info "www.valvesoftware.com" +url_dl "" +version "1" +size "14200000" +svonly "0" +cldll "0" +type "multiplayer_only" +nomodels "1" // Don't show models in browser, since you don't pick them there anyway. +mpentity "info_ricochet" +gamedll "dlls\mp.dll" +gamedll_linux "dlls/ricochet_i386.so" diff --git a/bios/Valve/Half-Life/tfc/liblist.gam b/bios/Valve/Half-Life/tfc/liblist.gam new file mode 100644 index 00000000..637a564d --- /dev/null +++ b/bios/Valve/Half-Life/tfc/liblist.gam @@ -0,0 +1,14 @@ +// Team Fortress Classes Game .dll Listing File +// Load order is determined by file order. +game "Team Fortress" +url_info "www.teamfortressclassic.com" +url_dl "" +version "1.5" +size "37000000" +svonly "0" +cldll "0" +type "multiplayer_only" +nomodels "1" // Don't show models in browser, since you don't pick them there anyway. +mpentity "info_tfdetect" +gamedll "dlls\tfc.dll" +gamedll_linux "dlls/tfc_i386.so" diff --git a/bios/Valve/Half-Life/tfc/pak0.pak b/bios/Valve/Half-Life/tfc/pak0.pak new file mode 100644 index 00000000..6aab1409 Binary files /dev/null and b/bios/Valve/Half-Life/tfc/pak0.pak differ diff --git a/bios/Valve/Half-Life/valve/.variants/liblist.gam.01b160ae b/bios/Valve/Half-Life/valve/.variants/liblist.gam.01b160ae new file mode 100644 index 00000000..ca0481a4 --- /dev/null +++ b/bios/Valve/Half-Life/valve/.variants/liblist.gam.01b160ae @@ -0,0 +1,8 @@ +// Valve Game .dll Listing File +// Load order is determined by file order. +// The first line is the descriptive title of the game +// and is used to display modified games in the server create +// dialog of the front end. The "game" token is ignored and +// the double quotes are removed. +game "Half-Life" +d:\quiver\valve\dlls\hl.dll diff --git a/bios/Valve/Half-Life/valve/liblist.gam b/bios/Valve/Half-Life/valve/liblist.gam new file mode 100644 index 00000000..c6889c15 --- /dev/null +++ b/bios/Valve/Half-Life/valve/liblist.gam @@ -0,0 +1,9 @@ +// Valve Game Info file +// These are key/value pairs. Certain mods will use different settings. +// +game "Half-Life" +startmap "c0a0" +trainmap "t0a0" +mpentity "info_player_deathmatch" +gamedll "dlls\hl.dll" +gamedll_linux "dlls/hl_i386.so" diff --git a/emulators/dhewm3.yml b/emulators/dhewm3.yml index 2f58c121..218cb99a 100644 --- a/emulators/dhewm3.yml +++ b/emulators/dhewm3.yml @@ -15,8 +15,8 @@ notes: | Doom 3 engine (idTech 4). Carries the original Doom 3 1.3.1 game code plus bug fixes, SDL abstraction and 64-bit cleanup. - The engine refuses to run without a `base/` directory containing - the retail pak files. Resurrection of Evil goes in `d3xp/`. + Game data is read from the pak files of `base/`, or from `demo/` when + base/ yields no default.cfg. Resurrection of Evil goes in `d3xp/`. ref: neo/framework/FileSystem.cpp:88-112 ("either base or demo"), neo/framework/FileSystem.cpp:2089 AddGameDirectory, neo/framework/FileSystem.cpp:2235 SetupGameDirectories(BASE_GAMEDIR) @@ -26,6 +26,12 @@ notes: | order so a later pak overrides earlier ones. ref: neo/framework/FileSystem.cpp:2125-2143 (ListOSFiles ".pk4"). + When default.cfg cannot be read and fs_game is unset or "base", the + engine sets fs_game and fs_game_base to "demo" and restarts the file + system on the demo data. With any other fs_game it stops with + "Couldn't load default.cfg". + ref: neo/framework/FileSystem.cpp:2703-2716 + files: # ================================================================ # base/ - Doom 3 retail paks @@ -47,6 +53,7 @@ files: path: "base/pak001.pk4" required: true source_ref: "neo/framework/FileSystem.cpp:2125" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "pak002.pk4" category: game_data @@ -120,3 +127,23 @@ files: required: false source_ref: "neo/framework/FileSystem.cpp:3744-3754 (explicit d3xp/pak000.pk4 probe)" note: "Resurrection of Evil main pak." + + - name: "pak001.pk4" + category: game_data + system: doom3 + path: "d3xp/pak001.pk4" + required: false + source_ref: "neo/framework/FileSystem.cpp:2125" + note: "Resurrection of Evil patch pak, shipped by the 1.3.1 patch." + + # ================================================================ + # demo/ - Doom 3 demo, read when base/ holds no default.cfg + # ================================================================ + + - name: "demo00.pk4" + category: game_data + system: doom3 + path: "demo/demo00.pk4" + required: false + source_ref: "neo/framework/FileSystem.cpp:2703-2709 (demo/ fallback), 2125" + note: "Doom 3 demo data. Every .pk4 of demo/ is loaded once the fallback sets fs_game to demo." diff --git a/emulators/eduke32.yml b/emulators/eduke32.yml index ca48ed4d..74b22f5b 100644 --- a/emulators/eduke32.yml +++ b/emulators/eduke32.yml @@ -29,6 +29,12 @@ notes: | entry, never to refuse an unknown GRP. CON / RTS / addon files are referenced from the chosen entry but their contents are not validated. + The scan checksums every *.grp, *.ssi, *.dat and *.zip file of the + search path and matches size and CRC32 against the table; the table + holds no file name (source/duke3d/src/grpscan.cpp:360-370, 486-492). + An addon whose dependency is not found is removed from the list + (source/duke3d/src/grpscan.cpp:503-517). + files: # ================================================================ # Duke Nukem 3D (base game, GAMEFLAG_DUKE) @@ -79,10 +85,25 @@ files: source_ref: "source/duke3d/src/grpscan.cpp:60-64 (Duke Caribbean: Life's a Beach, GAMEFLAG_ADDON)" - name: "NWINTER.GRP" + description: "Duke: Nuclear Winter" category: game_data system: duke3d required: false - source_ref: "source/duke3d/src/grpscan.cpp:65-66 (Duke: Nuclear Winter, GAMEFLAG_ADDON)" + size: 16169365 + crc32: "f1cae8e4" + validation: [size, crc32] + source_ref: "source/duke3d/src/grpscan.cpp:65 (Duke: Nuclear Winter, GAMEFLAG_ADDON), 366 (crc and size compare), source/duke3d/src/grpscan.h:51 (DUKENW_CRC)" + + - name: "NWINTER.GRP" + description: "Duke: Nuclear Winter Demo" + category: game_data + system: duke3d + required: false + size: 10965909 + crc32: "c7efbfa9" + validation: [size, crc32] + source_ref: "source/duke3d/src/grpscan.cpp:66 (Duke: Nuclear Winter Demo, GAMEFLAG_ADDON), 366 (crc and size compare)" + note: "Addon of the Atomic Edition (dependency DUKE15_CRC); dropped from the list when that GRP is not found." - name: "DZ2.GRP" category: game_data @@ -90,11 +111,26 @@ files: required: false source_ref: "source/duke3d/src/grpscan.cpp:67-69 (Duke!ZONE II, GAMEFLAG_ADDON)" - - name: "PENTP.GRP" + - name: "penthous.zip" + description: "Duke Nukem's Penthouse Paradise" category: game_data system: duke3d required: false - source_ref: "source/duke3d/src/grpscan.cpp:70-71 (Penthouse Paradise, GAMEFLAG_ADDON)" + size: 2112419 + crc32: "7cd82a3b" + validation: [size, crc32] + source_ref: "source/duke3d/src/grpscan.cpp:70 (Penthouse Paradise, original .zip release), 366 (crc and size compare), 486-492 (scanned extensions)" + note: "The original ZIP release, identified as a whole file by its size and CRC32. Addon of the Atomic Edition (dependency DUKE15_CRC)." + + - name: "PENTP.GRP" + description: "Duke Nukem's Penthouse Paradise" + category: game_data + system: duke3d + required: false + size: 4247491 + crc32: "cf928a58" + validation: [size, crc32] + source_ref: "source/duke3d/src/grpscan.cpp:71 (Penthouse Paradise, ZOOM Platform repacked .grp), 366 (crc and size compare)" # ================================================================ # NAM (GAMEFLAG_NAM) diff --git a/emulators/gzdoom.yml b/emulators/gzdoom.yml index 036fe926..69fd9696 100644 --- a/emulators/gzdoom.yml +++ b/emulators/gzdoom.yml @@ -56,32 +56,29 @@ files: required: false source_ref: "src/version.h:92, src/d_main.cpp:3794-3796, wadsrc_extra/CMakeLists.txt:1" note: "Per-game filters under static/filter/ (doom.id, strife, hexen, heretic, chex...)." - unsourceable: "ships inside the engine package; a same-named file of another program must not stand in" - name: "lights.pk3" category: game_data required: false source_ref: "src/d_main.cpp:2053-2058, wadsrc_lights/CMakeLists.txt:1" - unsourceable: "ships inside the engine package; a same-named file of another program must not stand in" - name: "brightmaps.pk3" category: game_data required: false source_ref: "src/d_main.cpp:2059-2064, wadsrc_bm/CMakeLists.txt:1" - unsourceable: "ships inside the engine package; a same-named file of another program must not stand in" - name: "game_widescreen_gfx.pk3" category: game_data required: false source_ref: "src/d_main.cpp:2065-2070, wadsrc_widepix/CMakeLists.txt:1" - unsourceable: "ships inside the engine package; a same-named file of another program must not stand in" - name: "gzdoom.sf2" + aliases: ["uzdoom.sf2"] category: game_data path: "soundfonts/gzdoom.sf2" required: false - source_ref: "src/common/audio/music/i_soundfont.cpp:427-430, src/CMakeLists.txt:1429" - note: "Default soundfont, used when the soundfont directories hold none." + source_ref: "src/common/audio/music/i_soundfont.cpp:334-352, 427-430, 439-459, src/CMakeLists.txt:1429" + note: "Default soundfont, used when the soundfont directories hold none. Every file of those directories is taken by its content; when no soundfont is named gzdoom the first SF2 found is used." - name: "GENMIDI.GS.wopl" category: game_data diff --git a/emulators/ioquake3.yml b/emulators/ioquake3.yml index c4203f36..fe248277 100644 --- a/emulators/ioquake3.yml +++ b/emulators/ioquake3.yml @@ -26,13 +26,21 @@ notes: | not correct" (code/qcommon/files.c:3574) and keeps running: the loader does not refuse the file, so no md5/sha1 is written below. - Missing paks are only fatal when neither com_standalone nor fs_basegame - override the base game (code/qcommon/files.c:3697, 3738). + A missing baseq3 pak is fatal unless the engine runs standalone, which + it does when no id pak is found and com_basegame is not baseq3 + (code/qcommon/files.c:3652-3657, 3697). Team Arena paks are checked the + same way once fs_game or fs_basegame is missionpack + (code/qcommon/files.c:3738-3739). + + A pak0.pk3 loaded from demoq3/ with checksum DEMO_PAK0_CHECKSUM stands + in for baseq3/pak0.pk3 with a warning (code/qcommon/files.c:3557-3562, + 3661-3674). files: # ================================================================ # Quake III Arena (baseq3/, 9 numbered paks) - # Retail v1.32 ships pak0.pk3 through pak8.pk3 under baseq3. + # pak0.pk3 comes from the retail disc, pak1.pk3 through pak8.pk3 from + # the 1.32 point release (code/qcommon/files.c:3715-3717). # pak_checksums[0..8] = { 1566731103, 298122907, 412165236, # 2991495316, 1197932710, 4087071573, # 3709064859, 908855077, 977125798 } @@ -43,7 +51,7 @@ files: system: quake3 path: "baseq3/pak0.pk3" required: true - source_ref: "code/qcommon/files.c:179 (pak_checksums[0]=1566731103u), 3568 (per-index checksum compare)" + source_ref: "code/qcommon/files.c:180 (pak_checksums[0]=1566731103u), 3568 (per-index checksum compare), 3697 (fatal when a baseq3 pak is absent)" note: "Retail Quake III Arena base pak. Engine prints a warning on checksum mismatch, does not refuse the file." unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" @@ -51,59 +59,70 @@ files: category: game_data system: quake3 path: "baseq3/pak1.pk3" - required: false - source_ref: "code/qcommon/files.c:180 (pak_checksums[1]=298122907u)" - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" + required: true + source_ref: "code/qcommon/files.c:181 (pak_checksums[1]=298122907u), 3697 (fatal when a baseq3 pak is absent)" - name: "pak2.pk3" category: game_data system: quake3 path: "baseq3/pak2.pk3" - required: false - source_ref: "code/qcommon/files.c:181 (pak_checksums[2]=412165236u)" - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" + required: true + source_ref: "code/qcommon/files.c:182 (pak_checksums[2]=412165236u), 3697 (fatal when a baseq3 pak is absent)" - name: "pak3.pk3" category: game_data system: quake3 path: "baseq3/pak3.pk3" - required: false - source_ref: "code/qcommon/files.c:182 (pak_checksums[3]=2991495316u)" + required: true + source_ref: "code/qcommon/files.c:183 (pak_checksums[3]=2991495316u), 3697 (fatal when a baseq3 pak is absent)" - name: "pak4.pk3" category: game_data system: quake3 path: "baseq3/pak4.pk3" - required: false - source_ref: "code/qcommon/files.c:183 (pak_checksums[4]=1197932710u)" + required: true + source_ref: "code/qcommon/files.c:184 (pak_checksums[4]=1197932710u), 3697 (fatal when a baseq3 pak is absent)" - name: "pak5.pk3" category: game_data system: quake3 path: "baseq3/pak5.pk3" - required: false - source_ref: "code/qcommon/files.c:184 (pak_checksums[5]=4087071573u)" + required: true + source_ref: "code/qcommon/files.c:185 (pak_checksums[5]=4087071573u), 3697 (fatal when a baseq3 pak is absent)" - name: "pak6.pk3" category: game_data system: quake3 path: "baseq3/pak6.pk3" - required: false - source_ref: "code/qcommon/files.c:185 (pak_checksums[6]=3709064859u)" + required: true + source_ref: "code/qcommon/files.c:186 (pak_checksums[6]=3709064859u), 3697 (fatal when a baseq3 pak is absent)" - name: "pak7.pk3" category: game_data system: quake3 path: "baseq3/pak7.pk3" - required: false - source_ref: "code/qcommon/files.c:186 (pak_checksums[7]=908855077u)" + required: true + source_ref: "code/qcommon/files.c:187 (pak_checksums[7]=908855077u), 3697 (fatal when a baseq3 pak is absent)" - name: "pak8.pk3" category: game_data system: quake3 path: "baseq3/pak8.pk3" + required: true + source_ref: "code/qcommon/files.c:188 (pak_checksums[8]=977125798u), 3697 (fatal when a baseq3 pak is absent)" + + # ================================================================ + # Quake III Arena demo (demoq3/) + # DEMO_PAK0_CHECKSUM = 2985612116 + # ================================================================ + + - name: "pak0.pk3" + category: game_data + system: quake3 + path: "demoq3/pak0.pk3" required: false - source_ref: "code/qcommon/files.c:187 (pak_checksums[8]=977125798u)" + source_ref: "code/qcommon/files.c:178 (DEMO_PAK0_CHECKSUM=2985612116u), 3557-3562 (demoq3 pak0 checksum compare), 3661-3674 (accepted in place of baseq3/pak0.pk3)" + note: "Demo pak. Recognised only under demoq3/ and only with this checksum; the engine then prints a warning and counts baseq3/pak0.pk3 as found." # ================================================================ # Team Arena (missionpack/, 4 numbered paks) @@ -116,7 +135,7 @@ files: system: teamarena path: "missionpack/pak0.pk3" required: false - source_ref: "code/qcommon/files.c:192 (missionpak_checksums[0]=2430342401u)" + source_ref: "code/qcommon/files.c:193 (missionpak_checksums[0]=2430342401u)" note: "Team Arena base pak. Required only when launching +set fs_game missionpack." unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" @@ -125,20 +144,18 @@ files: system: teamarena path: "missionpack/pak1.pk3" required: false - source_ref: "code/qcommon/files.c:193 (missionpak_checksums[1]=511014160u)" - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" + source_ref: "code/qcommon/files.c:194 (missionpak_checksums[1]=511014160u)" - name: "pak2.pk3" category: game_data system: teamarena path: "missionpack/pak2.pk3" required: false - source_ref: "code/qcommon/files.c:194 (missionpak_checksums[2]=2662638993u)" - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" + source_ref: "code/qcommon/files.c:195 (missionpak_checksums[2]=2662638993u)" - name: "pak3.pk3" category: game_data system: teamarena path: "missionpack/pak3.pk3" required: false - source_ref: "code/qcommon/files.c:195 (missionpak_checksums[3]=1438664554u)" + source_ref: "code/qcommon/files.c:196 (missionpak_checksums[3]=1438664554u)" diff --git a/emulators/iortcw.yml b/emulators/iortcw.yml index d6b454fb..7d88a59d 100644 --- a/emulators/iortcw.yml +++ b/emulators/iortcw.yml @@ -59,11 +59,11 @@ files: required: true source_ref: "SP/code/qcommon/files.c:183-185, 3865-3882, 3950-3967, MP/code/qcommon/files.c:194-196, 3859-3876, 3944-3961" note: "RTCW retail base. Checksum 1886207346 in both builds; fatal when missing or when the checksum differs." + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" # ================================================================ # main/ - single-player point-release paks # ================================================================ - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "sp_pak1.pk3" category: game_data @@ -155,8 +155,7 @@ files: path: "main/mp_bin.pk3" required: false source_ref: "MP/code/qcommon/files.c:209, 1596-1613" - note: "VM/binary pak, 1.4/1.41 retail. The client extracts game dlls only from paks whose checksum is listed." - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" + note: "VM/binary pak, 1.4/1.41. The client extracts game dlls only from paks whose checksum is listed." - name: "mp_bin0.pk3" category: game_data @@ -165,3 +164,27 @@ files: required: false source_ref: "MP/code/qcommon/files.c:210, 1596-1613" note: "VM/binary pak, 1.51c variant." + + # ================================================================ + # demomain/ - demo paks, one per build + # ================================================================ + + - name: "pak0.pk3" + description: "Single-player demo" + category: game_data + system: return-to-castle-wolfenstein + path: "demomain/pak0.pk3" + required: false + source_ref: "SP/code/qcommon/files.c:181, 3858-3863, 3933-3946, 3969-3970" + note: "Single-player build: a pak0 under demomain/ with checksum 2985661941 stands in for main/pak0.pk3 with a warning, and the point-release check is skipped." + unsourceable: "demo data the collection does not hold yet; a same-named file of another game must not stand in" + + - name: "pak0.pk3" + description: "Multiplayer demo" + category: game_data + system: return-to-castle-wolfenstein + path: "demomain/pak0.pk3" + required: false + source_ref: "MP/code/qcommon/files.c:192, 3852-3857, 3927-3940, 3963-3964" + note: "Multiplayer build: a pak0 under demomain/ with checksum 2031778175 stands in for main/pak0.pk3 with a warning, and the point-release check is skipped." + unsourceable: "demo data the collection does not hold yet; a same-named file of another game must not stand in" diff --git a/emulators/openmohaa.yml b/emulators/openmohaa.yml index 7a29b74c..694948f8 100644 --- a/emulators/openmohaa.yml +++ b/emulators/openmohaa.yml @@ -47,6 +47,11 @@ notes: | comment at 3710-3712 notes that MOHAA ships in too many localised pak versions to pin a checksum, so no CRC / MD5 is enforced on the paks. + com_target_demo 1 selects the demo protocol. The Allied Assault demo + is read from main/ like the full game; the Spearhead and Breakthrough + demos are read from demota/ and demott/ + (code/qcommon/common.c:3168-3182, 3203, 3230, 3249). + files: # ================================================================ # Medal of Honor: Allied Assault retail (BASEGAME = "main") @@ -84,6 +89,7 @@ files: path: "main/Pak3.pk3" required: false source_ref: "code/qcommon/files.cpp:329 (fs_originalPaks_main[3])" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "Pak4.pk3" category: game_data @@ -91,6 +97,7 @@ files: path: "main/Pak4.pk3" required: false source_ref: "code/qcommon/files.cpp:330 (fs_originalPaks_main[4])" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "Pak5.pk3" category: game_data @@ -98,6 +105,7 @@ files: path: "main/Pak5.pk3" required: false source_ref: "code/qcommon/files.cpp:331 (fs_originalPaks_main[5])" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "Pak6.pk3" category: game_data @@ -105,6 +113,7 @@ files: path: "main/Pak6.pk3" required: false source_ref: "code/qcommon/files.cpp:332 (fs_originalPaks_main[6])" + note: "Added by the 1.11 patch." # ================================================================ # Spearhead expansion (fs_basegame = "mainta", TG_MOHTA) @@ -135,6 +144,8 @@ files: path: "mainta/pak3.pk3" required: false source_ref: "code/qcommon/files.cpp:339 (fs_originalPaks_mainta[2])" + note: "Added by the 2.11 patch." + unsourceable: "patch data the collection does not hold yet; a same-named file of another game must not stand in" - name: "pak4.pk3" category: game_data @@ -142,6 +153,7 @@ files: path: "mainta/pak4.pk3" required: false source_ref: "code/qcommon/files.cpp:340 (fs_originalPaks_mainta[3])" + note: "Added by the 2.15 patch." - name: "pak5.pk3" category: game_data @@ -149,6 +161,7 @@ files: path: "mainta/pak5.pk3" required: false source_ref: "code/qcommon/files.cpp:341 (fs_originalPaks_mainta[4])" + note: "Added by the 2.15 patch, one build per language." # ================================================================ # Breakthrough expansion (fs_basegame = "maintt", TG_MOHTT) @@ -179,6 +192,7 @@ files: path: "maintt/pak3.pk3" required: false source_ref: "code/qcommon/files.cpp:348 (fs_originalPaks_maintt[2])" + note: "Added by the 2.40b patch." - name: "pak4.pk3" category: game_data @@ -186,3 +200,4 @@ files: path: "maintt/pak4.pk3" required: false source_ref: "code/qcommon/files.cpp:349 (fs_originalPaks_maintt[3])" + note: "Added by the 2.40b patch, one build per language." diff --git a/emulators/raze.yml b/emulators/raze.yml index 4b1b043f..7428969f 100644 --- a/emulators/raze.yml +++ b/emulators/raze.yml @@ -38,10 +38,17 @@ notes: | At least one game's GRP (or equivalent archive) must be present for Raze to run. An addon block names the CRC of its base game in `dependency`. grpinfo.txt also identifies the Mac demos of Duke Nukem - 3D and Shadow Warrior, the Nuclear Winter demo, Duke!ZONE II, + 3D and Shadow Warrior, Duke!ZONE II, the ZOOM Platform repack of Penthouse Paradise, Alien World Order, Platoon Leader, the ProAsm build of Wanton Destruction and the SSI build of Cryptic Passage. + The directory of the first identified resource is mounted as well, so + loose files beside it are read by name. Tiles come from + tiles000.art to tiles199.art, from the `loadart` list of the block and + from the -art switch; no other ART name is looked up. + ref: source/core/initfs.cpp:342-372, source/core/textures/tiletexture.cpp:468-481, + source/core/gamecontrol.cpp:424 + files: # ================================================================ # Engine resource @@ -53,6 +60,14 @@ files: source_ref: "source/core/version.h:66, source/core/gamecontrol.cpp:1020-1023" note: "I_FatalError(\"Cannot find raze.pk3\") if absent." + - name: "raze.sf2" + aliases: ["Roland_SC-55.sf2"] + category: game_data + path: "soundfonts/raze.sf2" + required: false + source_ref: "source/common/audio/music/i_soundfont.cpp:334-352, 427-430, 439-459, source/CMakeLists.txt:1452" + note: "Default soundfont, used when the soundfont directories hold none. Every file of those directories is taken by its content; when no soundfont is named raze the first SF2 found is used." + # ================================================================ # Duke Nukem 3D family # ================================================================ @@ -328,6 +343,30 @@ files: source_ref: "wadsrc/static/engine/grpinfo.txt:21, 375-388" note: "Addon of the Atomic Edition (dependency DUKE15_CRC)." + - name: "NWINTER.GRP" + description: "Duke: Nuclear Winter Demo" + category: game_data + system: duke3d + path: "NWINTER.GRP" + required: false + size: 10965909 + crc32: "c7efbfa9" + validation: [size, crc32] + source_ref: "wadsrc/static/engine/grpinfo.txt:390-402" + note: "Addon of the Atomic Edition (dependency DUKE15_CRC)." + + - name: "penthous.zip" + description: "Duke Nukem's Penthouse Paradise" + category: game_data + system: duke3d + path: "penthous.zip" + required: false + size: 2112419 + crc32: "7cd82a3b" + validation: [size, crc32] + source_ref: "wadsrc/static/engine/grpinfo.txt:459-470" + note: "The original ZIP release, identified as a whole file. Addon of the Atomic Edition (dependency DUKE15_CRC)." + # ================================================================ # Blood # ================================================================ @@ -364,7 +403,15 @@ files: crc32: "a8fdda84" validation: [size, crc32] source_ref: "wadsrc/static/engine/grpinfo.txt:34, 517-531" - note: "Any other archive holding help1.qav, normal.plu, inverse.clu, cosine.dat and blood.pal is taken as an unknown Blood version (lines 533-544)." + + - name: "BLOOD.RFF" + description: "BLOOD: Unknown Version" + category: game_data + system: blood + path: "BLOOD.RFF" + required: false + source_ref: "wadsrc/static/engine/grpinfo.txt:533-544, source/core/searchpaths.cpp:772-828" + note: "Any archive holding help1.qav, normal.plu, inverse.clu, cosine.dat and blood.pal whose size and CRC32 match no block. The shareware release is identified this way." - name: "SOUNDS.RFF" category: game_data @@ -390,6 +437,30 @@ files: source_ref: "wadsrc/static/engine/grpinfo.txt:494, 510, 526, 542" note: "Named by loadgrp in every Blood block; loaded with the main resource." + - name: "SURFACE.DAT" + category: game_data + system: blood + path: "SURFACE.DAT" + required: false + source_ref: "source/games/blood/src/tile.cpp:67-75, source/core/initfs.cpp:351-372" + note: "Surface type of each tile. Read from the directory of the main resource; skipped when absent." + + - name: "VOXEL.DAT" + category: game_data + system: blood + path: "VOXEL.DAT" + required: false + source_ref: "source/games/blood/src/tile.cpp:77-93, source/core/initfs.cpp:351-372" + note: "Voxel index of each tile. Read from the directory of the main resource; skipped when absent." + + - name: "SHADE.DAT" + category: game_data + system: blood + path: "SHADE.DAT" + required: false + source_ref: "source/games/blood/src/tile.cpp:95-103, source/core/initfs.cpp:351-372" + note: "Shade offset of each tile. Read from the directory of the main resource; skipped when absent." + - name: "CRYPTIC.INI" category: game_data system: blood diff --git a/emulators/xash3d_fwgs.yml b/emulators/xash3d_fwgs.yml index 8a1df726..4788d0e6 100644 --- a/emulators/xash3d_fwgs.yml +++ b/emulators/xash3d_fwgs.yml @@ -68,6 +68,7 @@ files: required: false source_ref: "filesystem/pak.c" note: "Patch pak, present on Steam Half-Life installs." + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" # ================================================================ # Counter-Strike 1.6 (cstrike/) @@ -80,6 +81,7 @@ files: required: true source_ref: "filesystem/gameinfo.c:617, filesystem/searchpath.c:327 (cstrike -> valve chain)" note: "Declares fallback_dir \"valve\". Counter-Strike 1.6 retail descriptor." + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "pak0.pak" category: game_data @@ -88,11 +90,11 @@ files: required: false source_ref: "filesystem/pak.c" note: "Loose files (maps/, sprites/, sound/, models/) are the usual retail layout; a bundled pak0.pak is optional." + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" # ================================================================ # Condition Zero (czero/) # ================================================================ - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "liblist.gam" category: game_data @@ -100,6 +102,7 @@ files: path: "czero/liblist.gam" required: true source_ref: "filesystem/searchpath.c:327 (czero -> cstrike -> valve chain)" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "pak0.pak" category: game_data @@ -107,11 +110,11 @@ files: path: "czero/pak0.pak" required: false source_ref: "filesystem/pak.c" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" # ================================================================ # Condition Zero: Deleted Scenes (czeror/) # ================================================================ - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "liblist.gam" category: game_data @@ -119,6 +122,7 @@ files: path: "czeror/liblist.gam" required: true source_ref: "filesystem/searchpath.c:327 (czeror -> czero -> cstrike -> valve chain)" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "pak0.pak" category: game_data @@ -126,11 +130,11 @@ files: path: "czeror/pak0.pak" required: false source_ref: "filesystem/pak.c" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" # ================================================================ # Deathmatch Classic (dmc/) # ================================================================ - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "liblist.gam" category: game_data @@ -145,11 +149,11 @@ files: path: "dmc/pak0.pak" required: false source_ref: "filesystem/pak.c" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" # ================================================================ # Opposing Force (gearbox/) # ================================================================ - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "liblist.gam" category: game_data @@ -165,12 +169,12 @@ files: path: "gearbox/pak0.pak" required: false source_ref: "filesystem/pak.c" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" # ================================================================ # Blue Shift (bshift/) # Half-Life source dir still called "bshift" in Steam depot. # ================================================================ - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "liblist.gam" category: game_data @@ -178,6 +182,7 @@ files: path: "bshift/liblist.gam" required: true source_ref: "filesystem/gameinfo.c:617" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "pak0.pak" category: game_data @@ -185,11 +190,11 @@ files: path: "bshift/pak0.pak" required: false source_ref: "filesystem/pak.c" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" # ================================================================ # Ricochet (ricochet/) # ================================================================ - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "liblist.gam" category: game_data @@ -204,11 +209,11 @@ files: path: "ricochet/pak0.pak" required: false source_ref: "filesystem/pak.c" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" # ================================================================ # Team Fortress Classic (tfc/) # ================================================================ - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "liblist.gam" category: game_data @@ -223,4 +228,3 @@ files: path: "tfc/pak0.pak" required: false source_ref: "filesystem/pak.c" - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" diff --git a/emulators/yquake2.yml b/emulators/yquake2.yml index e1d522ba..5e2e824a 100644 --- a/emulators/yquake2.yml +++ b/emulators/yquake2.yml @@ -15,8 +15,8 @@ notes: | :36). FS_AddDirToSearchPath (src/common/filesystem.c:1646) loops pak%d. from 0 to MAX_PAKS-1 (=99) across fs_packtypes = { pak, pk3 } for the active game directory, loading each one as a protected pak. - retail Quake II ships only pak0.pak and pak1.pak; later paks are - consumed by community mods and the Nightdive remaster. + baseq2/pak0.pak is the retail data; id's 3.20 point release adds + baseq2/pak1.pak, baseq2/pak2.pak and the Three Wave CTF data under ctf/. Supported official mods are listed in first_mods[] (src/common/filesystem.c:1331) = { "baseq2", "xatrix", "rogue", "ctf" }. @@ -37,8 +37,9 @@ notes: | files: # ================================================================ # Quake II (baseq2/) - # Retail v3.20 ships pak0.pak (max 2 GiB PAK, holds everything) and - # pak1.pak (demo-related). Patched installations may add pak2.pak+. + # pak0.pak is the retail data. The 3.20 point release adds pak1.pak + # (deathmatch maps q2dm1 to q2dm8 and their textures) and pak2.pak + # (two weapon skins). # ================================================================ - name: "pak0.pak" @@ -55,6 +56,7 @@ files: path: "baseq2/pak1.pak" required: false source_ref: "src/common/filesystem.c:1688" + note: "Shipped by the 3.20 point release." - name: "pak2.pak" category: game_data @@ -62,7 +64,7 @@ files: path: "baseq2/pak2.pak" required: false source_ref: "src/common/filesystem.c:1688" - note: "Added by community re-releases and the KMQuake2 content pack." + note: "Shipped by the 3.20 point release." # ================================================================ # The Reckoning (xatrix/), official Mission Pack 1 @@ -76,12 +78,12 @@ files: required: false source_ref: "src/common/filesystem.c:1331 (first_mods[1]=xatrix), 1688" note: "The Reckoning data. Loaded when `+set game xatrix` is passed." + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" # ================================================================ # Ground Zero (rogue/), official Mission Pack 2 # Separate yquake2 game library repo: yquake2/rogue. # ================================================================ - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "pak0.pak" category: game_data @@ -90,12 +92,12 @@ files: required: false source_ref: "src/common/filesystem.c:1331 (first_mods[2]=rogue), 1688" note: "Ground Zero data. Loaded when `+set game rogue` is passed." + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" # ================================================================ # Three Wave Capture The Flag (ctf/), official free addon # Separate yquake2 game library repo: yquake2/ctf. # ================================================================ - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" - name: "pak0.pak" category: game_data @@ -103,5 +105,4 @@ files: path: "ctf/pak0.pak" required: false source_ref: "src/common/filesystem.c:1331 (first_mods[3]=ctf), 1688" - note: "Three Wave CTF data. Loaded when `+set game ctf` is passed." - unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" + note: "Three Wave CTF data, shipped by the 3.20 point release. Loaded when `+set game ctf` is passed."