Files

236 lines
10 KiB
YAML

emulator: Xash3D FWGS
type: standalone
core_classification: game_engine
source: "https://github.com/FWGS/xash3d-fwgs"
upstream: "https://github.com/FWGS/xash3d-fwgs"
profiled_date: "2026-10-04"
source_commit: "1414fc281b6dc986378ea7ae35086c62d782a865"
core_version: "0.21+git"
display_name: "Xash3D FWGS"
cores: [xash3d_fwgs]
systems: [halflife, cstrike, czero, czeror, dmc, gearbox, bshift, ricochet, tfc]
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.
files:
# ================================================================
# Half-Life (valve/), base game, chained parent of every HL1 mod
# ================================================================
- name: "liblist.gam"
category: game_data
system: halflife
path: "valve/liblist.gam"
required: true
source_ref: "filesystem/gameinfo.c:617 (gamedir probe), 538-544 (liblist.gam -> gameinfo.txt conversion), 695 (parser)"
note: "Game descriptor shipped with retail Half-Life. Engine converts it to gameinfo.txt on first run."
- name: "pak0.pak"
category: game_data
system: halflife
path: "valve/pak0.pak"
required: false
source_ref: "filesystem/searchpath.c:188-224, filesystem/pak.c:98-157"
note: "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."
unsourceable: "The WON Linux dedicated servers 1.0.0.9 to 3.1.1.1 carry a server-only valve/pak0.pak (65022757, 47500556 or 33772308 bytes, at most 1035 entries: multiplayer maps, models, sounds, sprites and skies, with no single-player map, gfx/shell or sound/vox), not the client archive of the CD and WON releases."
- name: "pak1.pak"
category: game_data
system: halflife
path: "valve/pak1.pak"
required: false
source_ref: "filesystem/searchpath.c:188-224, filesystem/pak.c:98-157"
note: "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/."
unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in"
# ================================================================
# Counter-Strike 1.6 (cstrike/)
# ================================================================
- name: "liblist.gam"
category: game_data
system: cstrike
path: "cstrike/liblist.gam"
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
system: cstrike
path: "cstrike/pak0.pak"
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: "The Linux dedicated servers hlds_l 1.1.2.0 and hlds_l_11262003 ship cstrike/ as loose files with no .pak."
# ================================================================
# Condition Zero (czero/)
# ================================================================
- name: "liblist.gam"
category: game_data
system: czero
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
system: czero
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/)
# ================================================================
- name: "liblist.gam"
category: game_data
system: czeror
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
system: czeror
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/)
# ================================================================
- name: "liblist.gam"
category: game_data
system: dmc
path: "dmc/liblist.gam"
required: true
source_ref: "filesystem/gameinfo.c:617"
- name: "pak0.pak"
category: game_data
system: dmc
path: "dmc/pak0.pak"
required: false
source_ref: "filesystem/pak.c"
unsourceable: "The Linux dedicated servers that carry dmc/ (hlds_l 3.1.1.1 and 1.1.2.0) ship it as loose files with no .pak, and none of the WON patches checked carries a dmc/pak0.pak."
# ================================================================
# Opposing Force (gearbox/)
# ================================================================
- name: "liblist.gam"
category: game_data
system: gearbox
path: "gearbox/liblist.gam"
required: true
source_ref: "filesystem/gameinfo.c:617"
note: "Gearbox folder is the retail Opposing Force game dir."
- name: "pak0.pak"
category: game_data
system: gearbox
path: "gearbox/pak0.pak"
required: false
source_ref: "filesystem/pak.c"
unsourceable: "The free 1.1.0.8 WON patch ofo1108.exe installs a gearbox/pak0.pak of 83750141 bytes (sha1 aefbe228c010ade60e73d1ddf1f9b2878090b596) holding 514 entries with the 25 multiplayer maps and none of the of0a0 to of7a single-player maps, and the free Linux server opfor_linux.tar.gz carries a 529-entry multiplayer-only pak of 74390909 bytes, so neither is the client archive of the retail release."
# ================================================================
# Blue Shift (bshift/)
# Half-Life source dir still called "bshift" in Steam depot.
# ================================================================
- name: "liblist.gam"
category: game_data
system: bshift
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
system: bshift
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/)
# ================================================================
- name: "liblist.gam"
category: game_data
system: ricochet
path: "ricochet/liblist.gam"
required: true
source_ref: "filesystem/gameinfo.c:617"
- name: "pak0.pak"
category: game_data
system: ricochet
path: "ricochet/pak0.pak"
required: false
source_ref: "filesystem/pak.c"
unsourceable: "The Linux dedicated servers that carry ricochet/ (hlds_l 3.1.1.1 and 1.1.2.0) ship it as loose files with no .pak, and none of the WON patches checked carries a ricochet/pak0.pak."
# ================================================================
# Team Fortress Classic (tfc/)
# ================================================================
- name: "liblist.gam"
category: game_data
system: tfc
path: "tfc/liblist.gam"
required: true
source_ref: "filesystem/gameinfo.c:617"
- name: "pak0.pak"
category: game_data
system: tfc
path: "tfc/pak0.pak"
required: false
source_ref: "filesystem/pak.c"