Xash3D FWGS - RetroBIOS¶
Technical notes
GoldSrc / Half-Life 1 engine reimplementation by Flying With Gauss.
Game directories are discovered at startup: FS_CheckForXashGameDir
(filesystem/gameinfo.c:611-634) walks each sub-folder of the base path
and keeps the ones that contain gameinfo.txt or liblist.gam.
FS_ParseGenericGameInfo (filesystem/gameinfo.c:231-430) reads the mod
descriptor out of either file: basedir names the fallback game
(chained one level, e.g. czeror -> czero -> cstrike -> valve, see
filesystem/searchpath.c:327), fallback_dir names a second fallback,
and game / gamename carry the human-readable title.
Each supported mod's data is a Valve-style game folder with a game descriptor, maps/, models/, sound/, overviews/ and any number of .pak archives. FS_AddGameDirectory mounts every .pak of the folder, then every .pk3, .pk3dir and .wad, each kind in sorted name order and each above the previous one, then the folder itself on top, so loose files win over packed ones (filesystem/searchpath.c:188-224). No archive name is required. The engine does not hash any file; the pak header is the only sanity check (filesystem/pak.c:98-157). liblist.gam ships inside each retail mod and is also written out by the engine as gameinfo.txt the first time it imports a Valve folder (filesystem/gameinfo.c:538-544).
A Quake-engine game dir is recognised separately by FS_CheckForQuakeGameDir (filesystem/gameinfo.c:578-603), which looks for pak0.pak + progs.dat / quake.rc; Xash3D FWGS can run Quake 1 total conversions this way.
Below are the folders Half-Life retail / official addon releases install under the Steam install root. The descriptor is what makes the engine detect a folder (filesystem/gameinfo.c:614-630); the pak entries name the archives the retail releases ship. Map / model / sound trees that live beside them are too open-ended to enumerate and are counted as part of the same game data.
19 files | 9 required, 10 optional | 6 in repo, 0 missing, 13 unsourceable Categories: 19 game data
liblist.gam required in repo game_data
- Path:
valve/liblist.gam - System: halflife
- Source:
filesystem/gameinfo.c:617,filesystem/gameinfo.c:538-544,filesystem/gameinfo.c:695 - Game descriptor shipped with retail Half-Life. Engine converts it to gameinfo.txt on first run.
pak0.pak optional unsourceable game_data
- Path:
valve/pak0.pak - System: halflife
- Source:
filesystem/searchpath.c:188-224,filesystem/pak.c:98-157 - Half-Life game data packed in one archive, as the CD and WON releases install it. The engine mounts whatever .pak the folder holds and requires none: the Steam depot ships valve/ as loose files with no .pak, and the game runs from those.
pak1.pak optional unsourceable game_data
- Path:
valve/pak1.pak - System: halflife
- Source:
filesystem/searchpath.c:188-224,filesystem/pak.c:98-157 - Mounted above pak0.pak when present, as any second .pak of the folder would be. The only valve/pak1.pak released is the one the Blue Shift High Definition Pack installer writes (7839196 bytes, 99 entries: HD models, sounds and sprites for Half-Life); Steam ships no .pak in valve/.
liblist.gam required unsourceable game_data
- Path:
cstrike/liblist.gam - System: cstrike
- Source:
filesystem/gameinfo.c:617,filesystem/searchpath.c:327 - Declares fallback_dir "valve". Counter-Strike 1.6 retail descriptor.
pak0.pak optional unsourceable game_data
- Path:
cstrike/pak0.pak - System: cstrike
- Source:
filesystem/pak.c - Loose files (maps/, sprites/, sound/, models/) are the usual retail layout; a bundled pak0.pak is optional.
liblist.gam required unsourceable game_data
- Path:
czero/liblist.gam - System: czero
- Source:
filesystem/searchpath.c:327
pak0.pak optional unsourceable game_data
- Path:
czero/pak0.pak - System: czero
- Source:
filesystem/pak.c
liblist.gam required unsourceable game_data
- Path:
czeror/liblist.gam - System: czeror
- Source:
filesystem/searchpath.c:327
pak0.pak optional unsourceable game_data
- Path:
czeror/pak0.pak - System: czeror
- Source:
filesystem/pak.c
liblist.gam required in repo game_data
- Path:
dmc/liblist.gam - System: dmc
- Source:
filesystem/gameinfo.c:617
pak0.pak optional unsourceable game_data
- Path:
dmc/pak0.pak - System: dmc
- Source:
filesystem/pak.c
liblist.gam required in repo game_data
- Path:
gearbox/liblist.gam - System: gearbox
- Source:
filesystem/gameinfo.c:617 - Gearbox folder is the retail Opposing Force game dir.
pak0.pak optional unsourceable game_data
- Path:
gearbox/pak0.pak - System: gearbox
- Source:
filesystem/pak.c
liblist.gam required unsourceable game_data
- Path:
bshift/liblist.gam - System: bshift
- Source:
filesystem/gameinfo.c:617
pak0.pak optional unsourceable game_data
- Path:
bshift/pak0.pak - System: bshift
- Source:
filesystem/pak.c
liblist.gam required in repo game_data
- Path:
ricochet/liblist.gam - System: ricochet
- Source:
filesystem/gameinfo.c:617
pak0.pak optional unsourceable game_data
- Path:
ricochet/pak0.pak - System: ricochet
- Source:
filesystem/pak.c
liblist.gam required in repo game_data
- Path:
tfc/liblist.gam - System: tfc
- Source:
filesystem/gameinfo.c:617
pak0.pak optional in repo game_data
- Path:
tfc/pak0.pak - System: tfc
- Source:
filesystem/pak.c
Generated on 2026-10-10T11:26:02Z