mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 13:33:24 -05:00
feat: profile build and quake family engines
This commit is contained in:
1 parent
6821e00354
commit
1050fc3cbb
7 files changed
+843
No files matched your search
@@ -0,0 +1,155 @@
|
||||
emulator: EDuke32
|
||||
type: standalone
|
||||
core_classification: game_engine
|
||||
source: "https://voidpoint.io/terminx/eduke32"
|
||||
upstream: "https://voidpoint.io/terminx/eduke32"
|
||||
profiled_date: "2026-10-04"
|
||||
source_commit: "ec5824db81817866f70da326d3811bb0f52b3517"
|
||||
core_version: "r11007"
|
||||
display_name: "EDuke32"
|
||||
cores: [eduke32]
|
||||
systems: [duke3d, nam, napalm, ww2gi]
|
||||
|
||||
notes: |
|
||||
Build-engine port by TerminX, Hendricks266, Plagman and others. Covers
|
||||
Duke Nukem 3D (and its official addons), NAM, NAPALM, WWII GI and
|
||||
Platoon Leader. Startup scans the search path for registered GRPs by
|
||||
CRC32 (source/duke3d/src/grpscan.cpp:39-76 internalgrpfiles[]). Each GRP
|
||||
carries a game flag (DUKE / NAM / NAPALM / WW2GI) and optional addon
|
||||
dependency; EDuke32 picks the user selection, mounts it with
|
||||
initgroupfile and loads the DEF / CON / RTS the GRP points to.
|
||||
|
||||
G_DefaultGrpFile (source/duke3d/src/common.cpp:60-73) returns the base
|
||||
GRP for the active game flag: DUKE3D.GRP, NAM.GRP, NAPALM.GRP, WW2GI.GRP.
|
||||
G_DefaultConFile and G_DefaultRtsFile pick EDUKE.CON / NAM.CON /
|
||||
NAPALM.CON / WW2GI.CON and DUKE.RTS / NAM.RTS / NAPALM.RTS / WW2GI.RTS.
|
||||
|
||||
CRCs listed in source/duke3d/src/grpscan.h match the retail GRP byte
|
||||
for byte; the loader only checks CRC32 (not MD5) and only to pick the
|
||||
entry, never to refuse an unknown GRP. CON / RTS / addon files are
|
||||
referenced from the chosen entry but their contents are not validated.
|
||||
|
||||
files:
|
||||
# ================================================================
|
||||
# Duke Nukem 3D (base game, GAMEFLAG_DUKE)
|
||||
# ================================================================
|
||||
|
||||
- name: "DUKE3D.GRP"
|
||||
category: game_data
|
||||
system: duke3d
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/common.cpp:36 (defaultgamegrp GAME_DUKE), source/duke3d/src/grpscan.cpp:41-50 (CRC-indexed variants)"
|
||||
note: >
|
||||
Any retail variant plays: Atomic Edition / Plus / World Tour
|
||||
(DUKE15_CRC 0xFD3DCFF1, 44356548 bytes, grpscan.h:35), v1.3D
|
||||
registered (DUKE13_CRC 0xBBC9CE44, 26524524 bytes, grpscan.h:33),
|
||||
Shareware v1.3D (DUKESW_CRC 0x983AD923, 11035779 bytes,
|
||||
grpscan.h:41), World Tour (DUKEWT_CRC 0x982AFE4A, grpscan.h:37),
|
||||
Plutonium Pak (DUKEPP_CRC 0xF514A6AC, grpscan.h:36), South Korean
|
||||
censored (DUKEKR_CRC 0xAA4F6A40, grpscan.h:34). CRC32 identifies
|
||||
the variant and selects the matching entry in internalgrpfiles[];
|
||||
no MD5 or SHA1 is read.
|
||||
|
||||
- name: "EDUKE.CON"
|
||||
category: game_data
|
||||
system: duke3d
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/common.cpp:38 (defaultgameconfilename GAME_DUKE)"
|
||||
note: "EDuke32 CON script. Shipped inside the GRP by default; external copy only when the user overrides it."
|
||||
|
||||
- name: "DUKE.RTS"
|
||||
category: game_data
|
||||
system: duke3d
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/grpscan.cpp:39-76 (rtsname field)"
|
||||
note: "Remote Ridicule speech. Not loaded if absent."
|
||||
|
||||
# ---- Duke 3D addons ----
|
||||
|
||||
- name: "DUKEDC.GRP"
|
||||
category: game_data
|
||||
system: duke3d
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/grpscan.cpp:56-59 (Duke it out in D.C., GAMEFLAG_ADDON)"
|
||||
|
||||
- name: "VACATION.GRP"
|
||||
category: game_data
|
||||
system: duke3d
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/grpscan.cpp:60-64 (Duke Caribbean: Life's a Beach, GAMEFLAG_ADDON)"
|
||||
|
||||
- name: "NWINTER.GRP"
|
||||
category: game_data
|
||||
system: duke3d
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/grpscan.cpp:65-66 (Duke: Nuclear Winter, GAMEFLAG_ADDON)"
|
||||
|
||||
- name: "DZ2.GRP"
|
||||
category: game_data
|
||||
system: duke3d
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/grpscan.cpp:67-69 (Duke!ZONE II, GAMEFLAG_ADDON)"
|
||||
|
||||
- name: "PENTP.GRP"
|
||||
category: game_data
|
||||
system: duke3d
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/grpscan.cpp:70-71 (Penthouse Paradise, GAMEFLAG_ADDON)"
|
||||
|
||||
# ================================================================
|
||||
# NAM (GAMEFLAG_NAM)
|
||||
# ================================================================
|
||||
|
||||
- name: "NAM.GRP"
|
||||
category: game_data
|
||||
system: nam
|
||||
size: 43448927
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/grpscan.h:54 (NAM_CRC 0x75C1F07B), source/duke3d/src/grpscan.cpp:72"
|
||||
|
||||
- name: "NAM.CON"
|
||||
category: game_data
|
||||
system: nam
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/common.cpp:38 (defaultgameconfilename GAME_NAM)"
|
||||
|
||||
# ================================================================
|
||||
# NAPALM (GAMEFLAG_NAM | GAMEFLAG_NAPALM)
|
||||
# ================================================================
|
||||
|
||||
- name: "NAPALM.GRP"
|
||||
category: game_data
|
||||
system: napalm
|
||||
size: 44365728
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/grpscan.h:55 (NAPALM_CRC 0x3DE1589A), source/duke3d/src/grpscan.cpp:73"
|
||||
|
||||
- name: "NAPALM.CON"
|
||||
category: game_data
|
||||
system: napalm
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/common.cpp:38 (defaultgameconfilename GAME_NAPALM)"
|
||||
|
||||
# ================================================================
|
||||
# WWII GI (GAMEFLAG_WW2GI)
|
||||
# ================================================================
|
||||
|
||||
- name: "WW2GI.GRP"
|
||||
category: game_data
|
||||
system: ww2gi
|
||||
size: 77939508
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/grpscan.h:56 (WW2GI_CRC 0x907B82BF), source/duke3d/src/grpscan.cpp:74"
|
||||
|
||||
- name: "WW2GI.CON"
|
||||
category: game_data
|
||||
system: ww2gi
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/common.cpp:38 (defaultgameconfilename GAME_WW2GI)"
|
||||
|
||||
- name: "PLATOONL.GRP"
|
||||
category: game_data
|
||||
system: ww2gi
|
||||
size: 37852572
|
||||
required: false
|
||||
source_ref: "source/duke3d/src/grpscan.h:57 (PLATOONL_CRC 0xD1ED8C0C), source/duke3d/src/grpscan.cpp:75 (Platoon Leader, GAMEFLAG_ADDON)"
|
||||
@@ -0,0 +1,71 @@
|
||||
emulator: ET Legacy
|
||||
type: standalone
|
||||
core_classification: game_engine
|
||||
source: "https://github.com/etlegacy/etlegacy"
|
||||
upstream: "https://github.com/etlegacy/etlegacy"
|
||||
profiled_date: "2026-10-04"
|
||||
source_commit: "f8974d1861e3e95c236d3a7c05362d05f408275f"
|
||||
core_version: "2.83.0+git"
|
||||
display_name: "ET: Legacy"
|
||||
cores: [etlegacy]
|
||||
systems: [enemyterritory]
|
||||
|
||||
notes: |
|
||||
Wolfenstein: Enemy Territory source port. BASEGAME = "etmain"
|
||||
(src/qcommon/qcommon.h:787). FS_InitFilesystem (src/qcommon/files.c:
|
||||
5066-5094) refuses to start if pak0.pk3 is not reachable under etmain
|
||||
and prints "Please copy pak0.pk3 from the 'etmain' path of your
|
||||
Wolfenstein: Enemy Territory installation to <path>". pak1.pk3 and
|
||||
pak2.pk3 are checked against the server's requested pak list in
|
||||
FS_ComparePaks (src/qcommon/files.c:4011-4018) but neither is a
|
||||
startup gate; third-party mods pull them in as needed (see README.md
|
||||
"In addition, third party mods might also require pak1.pk3 and
|
||||
pak2.pk3"). mp_bin.pk3 ships in the retail release and holds the
|
||||
stock multiplayer binaries.
|
||||
|
||||
NUM_ID_PAKS = 9 (src/qcommon/qcommon.h:815) counts the names recognised
|
||||
by FS_idPak; retail Enemy Territory 2.60b publishes only pak0, pak1,
|
||||
pak2 and mp_bin, so the extra slots are reserved for forward compatible
|
||||
server lists, never filled by id.
|
||||
|
||||
The ET Legacy project ships its own replacement etmain/ assets (configs,
|
||||
presets, locale files) directly in the source tree, plus a Legacy mod
|
||||
pk3 downloaded on first run. The user still has to supply the retail
|
||||
pak0.pk3 from the free Enemy Territory 2.60b download; pak0.pk3 holds
|
||||
every id map, model, texture and sound.
|
||||
|
||||
files:
|
||||
- name: "pak0.pk3"
|
||||
category: game_data
|
||||
system: enemyterritory
|
||||
path: "etmain/pak0.pk3"
|
||||
required: true
|
||||
md5: "c8ce5e3eafb9faa74b9af03a9d6f3f5e"
|
||||
source_ref: "src/qcommon/files.c:5066-5094 (fatal if absent), 5076 (FS_FOpenFileRead \"pak0.pk3\"), src/qcommon/qcommon.h:787 (BASEGAME \"etmain\")"
|
||||
note: "Retail Wolfenstein: Enemy Territory 2.60b data pak. Startup gate. MD5 informational, not validated by the engine."
|
||||
|
||||
- name: "pak1.pk3"
|
||||
category: game_data
|
||||
system: enemyterritory
|
||||
path: "etmain/pak1.pk3"
|
||||
required: false
|
||||
md5: "0d1cb16a147b0f12d79fd3b045e07706"
|
||||
source_ref: "src/qcommon/files.c:4011-4018 (FS_idPak, NUM_ID_PAKS=9), README.md"
|
||||
note: "Retail content update pak. Required by servers running 2.60b, pulled in by FS_ComparePaks."
|
||||
|
||||
- name: "pak2.pk3"
|
||||
category: game_data
|
||||
system: enemyterritory
|
||||
path: "etmain/pak2.pk3"
|
||||
required: false
|
||||
md5: "61e3bbae9c1cd522cf7fcc27e3a4bbab"
|
||||
source_ref: "src/qcommon/files.c:4011-4018 (FS_idPak), README.md"
|
||||
note: "Retail content update pak."
|
||||
|
||||
- name: "mp_bin.pk3"
|
||||
category: game_data
|
||||
system: enemyterritory
|
||||
path: "etmain/mp_bin.pk3"
|
||||
required: false
|
||||
source_ref: "src/qcommon/files.c:4011-4018 (FS_idPak)"
|
||||
note: "Retail multiplayer QVM binaries. ET Legacy ships its own cgame/ui binaries; retail pack is for pure clients joining stock servers."
|
||||
@@ -0,0 +1,42 @@
|
||||
emulator: Ion Fury
|
||||
type: standalone
|
||||
core_classification: game_engine
|
||||
source: "https://voidpoint.io/terminx/eduke32"
|
||||
upstream: "https://voidpoint.io/terminx/eduke32"
|
||||
profiled_date: "2026-10-04"
|
||||
source_commit: "ec5824db81817866f70da326d3811bb0f52b3517"
|
||||
core_version: "r11007"
|
||||
display_name: "Ion Fury"
|
||||
cores: [fury]
|
||||
systems: [fury]
|
||||
|
||||
notes: |
|
||||
Ion Fury runs on EDuke32 built with FURY=1 (GNUmakefile:6-15), which
|
||||
defines EDUKE32_STANDALONE and sets APPBASENAME=fury, APPNAME="Ion Fury".
|
||||
In standalone mode the GRP-detection table of EDuke32
|
||||
(source/duke3d/src/grpscan.cpp:38-77) is compiled out by #ifndef
|
||||
EDUKE32_STANDALONE, G_DefaultGrpFile returns "(none)"
|
||||
(source/duke3d/src/common.cpp:60-77), and the loader autoscans the search
|
||||
paths for *.grp / *.zip / *.ssi / *.pk3 / *.pk4
|
||||
(source/duke3d/src/common.cpp:913).
|
||||
|
||||
Search paths added for the Fury binary include the Steam install (Ion
|
||||
Fury) and the GOG install (ION Fury), marked with SEARCHPATH_FURY
|
||||
(source/duke3d/src/common.cpp:585-587, 622-625, 822-833). After scanning,
|
||||
G_CleanupSearchPaths removes all non-FURY entries when the FURY game
|
||||
flag is active (source/duke3d/src/common.cpp:850-851), so Fury only
|
||||
reads from its own install directory.
|
||||
|
||||
No hash or filename is validated by the engine: Ion Fury ships one GRP
|
||||
(fury.grp) that holds every map, art bank, sound and DEF the game needs,
|
||||
plus a small number of top-level files the retail installers lay down
|
||||
alongside it. Only the GRP is listed below; the other files
|
||||
(fury.cfg, settings.cfg, saves, screenshots) are user state.
|
||||
|
||||
files:
|
||||
- name: "fury.grp"
|
||||
category: game_data
|
||||
system: fury
|
||||
required: true
|
||||
source_ref: "source/duke3d/src/common.cpp:913 (autoscan extensions), 585-587 (Steam path), 822-833 (GOG path)"
|
||||
note: "Main data archive bundled with the retail Ion Fury release. Autoscan picks it up as the only GRP under the Fury search paths."
|
||||
@@ -0,0 +1,138 @@
|
||||
emulator: ioquake3
|
||||
type: standalone
|
||||
core_classification: game_engine
|
||||
source: "https://github.com/ioquake/ioq3"
|
||||
upstream: "https://github.com/ioquake/ioq3"
|
||||
profiled_date: "2026-10-04"
|
||||
source_commit: "83a776283bdb958f82db25554b5ed0966aaf6e49"
|
||||
core_version: "1.36+git"
|
||||
display_name: "ioquake3"
|
||||
cores: [ioquake3]
|
||||
systems: [quake3, teamarena]
|
||||
|
||||
notes: |
|
||||
Quake III Arena / Team Arena source port maintained by the ioquake
|
||||
team. BASEGAME = "baseq3", BASETA = "missionpack" (code/qcommon/q_shared.h
|
||||
:44,65). FS_Startup (code/qcommon/files.c:3360) scans each search path
|
||||
for pak0.pk3 through pak(NUM_ID_PAKS-1).pk3 under baseq3, and up to
|
||||
NUM_TA_PAKS paks under missionpack (code/qcommon/qcommon.h:591-593,
|
||||
NUM_ID_PAKS=9, NUM_TA_PAKS=4).
|
||||
|
||||
Loaded paks are matched against hardcoded unsigned 32-bit checksums
|
||||
(code/qcommon/files.c:178-198: pak_checksums[], missionpak_checksums[]).
|
||||
These are NOT MD5 / SHA1 / CRC32 of the file; they are id's own custom
|
||||
pak checksum (sum of each lump CRC, see FS_LoadZipFile). A mismatch
|
||||
prints "WARNING: baseq3/pak0.pk3 is present but its checksum (%u) is
|
||||
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).
|
||||
|
||||
files:
|
||||
# ================================================================
|
||||
# Quake III Arena (baseq3/, 9 numbered paks)
|
||||
# Retail v1.32 ships pak0.pk3 through pak8.pk3 under baseq3.
|
||||
# pak_checksums[0..8] = { 1566731103, 298122907, 412165236,
|
||||
# 2991495316, 1197932710, 4087071573,
|
||||
# 3709064859, 908855077, 977125798 }
|
||||
# ================================================================
|
||||
|
||||
- name: "pak0.pk3"
|
||||
category: game_data
|
||||
system: quake3
|
||||
path: "baseq3/pak0.pk3"
|
||||
required: true
|
||||
source_ref: "code/qcommon/files.c:179 (pak_checksums[0]=1566731103u), 3568 (per-index checksum compare)"
|
||||
note: "Retail Quake III Arena base pak. Engine prints a warning on checksum mismatch, does not refuse the file."
|
||||
|
||||
- name: "pak1.pk3"
|
||||
category: game_data
|
||||
system: quake3
|
||||
path: "baseq3/pak1.pk3"
|
||||
required: false
|
||||
source_ref: "code/qcommon/files.c:180 (pak_checksums[1]=298122907u)"
|
||||
|
||||
- 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)"
|
||||
|
||||
- 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)"
|
||||
|
||||
- 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)"
|
||||
|
||||
- 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)"
|
||||
|
||||
- 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)"
|
||||
|
||||
- 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)"
|
||||
|
||||
- name: "pak8.pk3"
|
||||
category: game_data
|
||||
system: quake3
|
||||
path: "baseq3/pak8.pk3"
|
||||
required: false
|
||||
source_ref: "code/qcommon/files.c:187 (pak_checksums[8]=977125798u)"
|
||||
|
||||
# ================================================================
|
||||
# Team Arena (missionpack/, 4 numbered paks)
|
||||
# missionpak_checksums[0..3] = { 2430342401, 511014160,
|
||||
# 2662638993, 1438664554 }
|
||||
# ================================================================
|
||||
|
||||
- name: "pak0.pk3"
|
||||
category: game_data
|
||||
system: teamarena
|
||||
path: "missionpack/pak0.pk3"
|
||||
required: false
|
||||
source_ref: "code/qcommon/files.c:192 (missionpak_checksums[0]=2430342401u)"
|
||||
note: "Team Arena base pak. Required only when launching +set fs_game missionpack."
|
||||
|
||||
- name: "pak1.pk3"
|
||||
category: game_data
|
||||
system: teamarena
|
||||
path: "missionpack/pak1.pk3"
|
||||
required: false
|
||||
source_ref: "code/qcommon/files.c:193 (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)"
|
||||
|
||||
- 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)"
|
||||
@@ -0,0 +1,116 @@
|
||||
emulator: Taradino
|
||||
type: standalone
|
||||
core_classification: game_engine
|
||||
source: "https://github.com/fabiangreffrath/taradino"
|
||||
upstream: "https://github.com/fabiangreffrath/taradino"
|
||||
profiled_date: "2026-10-04"
|
||||
source_commit: "2b4ea3c6c18caf60959efee1f2534c2122607716"
|
||||
core_version: "0.1"
|
||||
display_name: "Taradino"
|
||||
cores: [taradino]
|
||||
systems: [rott]
|
||||
|
||||
notes: |
|
||||
SDL2 port of Rise of the Triad by Fabian Greffrath, forked from the
|
||||
original 1995 Apogee/3D Realms source release.
|
||||
|
||||
Build-time switch: SHAREWARE=0 (default, "registered") expects
|
||||
DARKWAR.WAD / DARKWAR.RTL / DARKWAR.RTC; SHAREWARE=1 (dropped by the
|
||||
CMakeLists SHAREWARE option) expects HUNTBGIN.WAD / HUNTBGIN.RTL /
|
||||
HUNTBGIN.RTC (rott/rt_main.h:33-45). The repo distributes the
|
||||
non-shareware binary; shareware builds are compiled by users from the
|
||||
same tree.
|
||||
|
||||
Startup assembles argv in SetupWadFile (rott/rt_main.c:808-842), joining
|
||||
`datadir` and STANDARDGAMEWAD, then feeds it to W_InitMultipleFiles
|
||||
(rott/rt_main.c:842, rott/w_wad.c). The WAD search tries each path
|
||||
registered through add_datadir() (rott/rt_datadir.c:198-209); a missing
|
||||
main WAD aborts with FileNotFoundError(STANDARDGAMEWAD)
|
||||
(rott/rt_main.c:812).
|
||||
|
||||
Game-product detection runs after the main WAD opens: FindFileByName
|
||||
(rott/rt_main.c:165-177) looks for ROTTSITE.RTC (site license),
|
||||
ROTTCD.RTC (SuperROTT, i.e. ROTT CD extra battle levels), and
|
||||
DARKWAR.RTC (registered battle levels), setting gamestate.Product to
|
||||
ROTT_SITELICENSE, ROTT_SUPERCD or ROTT_REGISTERED. Shareware builds
|
||||
stay on ROTT_SHAREWARE.
|
||||
|
||||
REMOTE1.RTS carries the "Remote Ridicule" speech bank; its absence is
|
||||
silently tolerated (rott/rt_main.c:830-834).
|
||||
|
||||
No hash is validated — the loader relies on WAD lump names and the
|
||||
SHAREWARE_TAG magic number inside the RTL (rott/rt_ted.c:1432).
|
||||
|
||||
files:
|
||||
# ================================================================
|
||||
# Rise of the Triad: Dark War (registered release, Apogee 1995)
|
||||
# Default build (SHAREWARE=0, rott/rt_main.h:33-39)
|
||||
# ================================================================
|
||||
|
||||
- name: "DARKWAR.WAD"
|
||||
category: game_data
|
||||
system: rott
|
||||
required: true
|
||||
source_ref: "rott/rt_main.h:34 (STANDARDGAMEWAD), rott/rt_main.c:808-812 (FileNotFoundError on miss)"
|
||||
note: "Main data WAD. Fatal if absent in non-shareware build."
|
||||
|
||||
- name: "DARKWAR.RTL"
|
||||
category: game_data
|
||||
system: rott
|
||||
required: true
|
||||
source_ref: "rott/rt_main.h:35 (STANDARDGAMELEVELS), rott/rt_main.c:192"
|
||||
note: "Single-player level data. Opened alongside the main WAD."
|
||||
|
||||
- name: "DARKWAR.RTC"
|
||||
category: game_data
|
||||
system: rott
|
||||
required: false
|
||||
source_ref: "rott/rt_main.h:36 (STANDARDBATTLELEVELS), rott/rt_main.c:174-177 (ROTT_REGISTERED when present)"
|
||||
note: "Comm-bat (deathmatch) level data. Marks gamestate as ROTT_REGISTERED."
|
||||
|
||||
- name: "ROTTCD.RTC"
|
||||
category: game_data
|
||||
system: rott
|
||||
required: false
|
||||
source_ref: "rott/rt_main.h:38 (SUPERROTTBATTLELEVELS), rott/rt_main.c:170-172"
|
||||
note: "SuperROTT (ROTT CD) extra battle levels. Promotes product to ROTT_SUPERCD."
|
||||
|
||||
- name: "ROTTSITE.RTC"
|
||||
category: game_data
|
||||
system: rott
|
||||
required: false
|
||||
source_ref: "rott/rt_main.h:39 (SITELICENSEBATTLELEVELS), rott/rt_main.c:164-166"
|
||||
note: "Site License battle levels. Promotes product to ROTT_SITELICENSE."
|
||||
|
||||
- name: "REMOTE1.RTS"
|
||||
category: game_data
|
||||
system: rott
|
||||
required: false
|
||||
source_ref: "rott/rt_main.c:832 (datadir/REMOTE1.RTS fallback)"
|
||||
note: "Remote Ridicule speech bank. Loaded if present, silently skipped otherwise."
|
||||
|
||||
# ================================================================
|
||||
# Shareware build (SHAREWARE=1, rott/rt_main.h:41-43)
|
||||
# Produced only when users set -DSHAREWARE=1; file names differ.
|
||||
# ================================================================
|
||||
|
||||
- name: "HUNTBGIN.WAD"
|
||||
category: game_data
|
||||
system: rott
|
||||
required: false
|
||||
source_ref: "rott/rt_main.h:41 (STANDARDGAMEWAD under SHAREWARE)"
|
||||
note: "Shareware main WAD (Hunt Begins). Required only in shareware builds."
|
||||
|
||||
- name: "HUNTBGIN.RTL"
|
||||
category: game_data
|
||||
system: rott
|
||||
required: false
|
||||
source_ref: "rott/rt_main.h:42 (STANDARDGAMELEVELS under SHAREWARE)"
|
||||
note: "Shareware level data."
|
||||
|
||||
- name: "HUNTBGIN.RTC"
|
||||
category: game_data
|
||||
system: rott
|
||||
required: false
|
||||
source_ref: "rott/rt_main.h:43 (STANDARDBATTLELEVELS under SHAREWARE)"
|
||||
note: "Shareware comm-bat level data."
|
||||
@@ -0,0 +1,217 @@
|
||||
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 its own
|
||||
pak0.pak / pak1.pak, maps/, models/, sound/, overviews/ and a game
|
||||
descriptor. The engine does not hash any file; the pak header is the
|
||||
only sanity check (filesystem/pak.c). 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. Each entry marks the per-mod
|
||||
descriptor and base pak so the engine can detect the game; 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: true
|
||||
source_ref: "filesystem/pak.c (PAK loader), filesystem/searchpath.c:912 (valve fallback)"
|
||||
note: "Retail Half-Life base pak."
|
||||
|
||||
- name: "pak1.pak"
|
||||
category: game_data
|
||||
system: halflife
|
||||
path: "valve/pak1.pak"
|
||||
required: false
|
||||
source_ref: "filesystem/pak.c"
|
||||
note: "Patch pak, present on Steam Half-Life installs."
|
||||
|
||||
# ================================================================
|
||||
# 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."
|
||||
|
||||
- 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."
|
||||
|
||||
# ================================================================
|
||||
# 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)"
|
||||
|
||||
- name: "pak0.pak"
|
||||
category: game_data
|
||||
system: czero
|
||||
path: "czero/pak0.pak"
|
||||
required: false
|
||||
source_ref: "filesystem/pak.c"
|
||||
|
||||
# ================================================================
|
||||
# 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)"
|
||||
|
||||
- name: "pak0.pak"
|
||||
category: game_data
|
||||
system: czeror
|
||||
path: "czeror/pak0.pak"
|
||||
required: false
|
||||
source_ref: "filesystem/pak.c"
|
||||
|
||||
# ================================================================
|
||||
# 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"
|
||||
|
||||
# ================================================================
|
||||
# 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"
|
||||
|
||||
# ================================================================
|
||||
# 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"
|
||||
|
||||
- name: "pak0.pak"
|
||||
category: game_data
|
||||
system: bshift
|
||||
path: "bshift/pak0.pak"
|
||||
required: false
|
||||
source_ref: "filesystem/pak.c"
|
||||
|
||||
# ================================================================
|
||||
# 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"
|
||||
|
||||
# ================================================================
|
||||
# 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"
|
||||
@@ -0,0 +1,104 @@
|
||||
emulator: Yamagi Quake II
|
||||
type: standalone
|
||||
core_classification: game_engine
|
||||
source: "https://github.com/yquake2/yquake2"
|
||||
upstream: "https://github.com/yquake2/yquake2"
|
||||
profiled_date: "2026-10-04"
|
||||
source_commit: "f190ac496d00ef9238a5f16dd012c6dc81a997c9"
|
||||
core_version: "8.51+git"
|
||||
display_name: "Yamagi Quake II"
|
||||
cores: [yquake2]
|
||||
systems: [quake2, xatrix, rogue, ctf]
|
||||
|
||||
notes: |
|
||||
Quake II source port. BASEDIRNAME = "baseq2" (src/common/header/common.h
|
||||
:36). FS_AddDirToSearchPath (src/common/filesystem.c:1646) loops
|
||||
pak%d.<ext> 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.
|
||||
|
||||
Supported official mods are listed in first_mods[]
|
||||
(src/common/filesystem.c:1331) = { "baseq2", "xatrix", "rogue", "ctf" }.
|
||||
Mod game dirs are selected via the `game` cvar (FS_InitFilesystem +
|
||||
FS_BuildGameSpecificSearchPath, src/common/filesystem.c:2075-2097).
|
||||
Each mod ships its own pak0.pak / pak1.pak (The Reckoning, Ground Zero,
|
||||
Three Wave CTF). Zaero support uses the same path layout (`game zaero`)
|
||||
but no official repository under the yquake2 org.
|
||||
|
||||
The engine never hashes a pak. Validation is "does the pack read as a
|
||||
valid PAK header" (FS_LoadPAK, src/common/filesystem.c:873). Missing
|
||||
files produce "Couldn't load %s" at Com_Error level only for the
|
||||
baseq2 lookup when the game cannot find any game assets at all.
|
||||
|
||||
Background music is streamed from <game>/music/track02.ogg ... track22.ogg
|
||||
by OGG_InitTrackList (src/client/sound/ogg.c), not required for gameplay.
|
||||
|
||||
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+.
|
||||
# ================================================================
|
||||
|
||||
- name: "pak0.pak"
|
||||
category: game_data
|
||||
system: quake2
|
||||
path: "baseq2/pak0.pak"
|
||||
required: true
|
||||
source_ref: "src/common/filesystem.c:1688 (pak%d.%s scan), 36 (BASEDIRNAME), 1331 (first_mods[0]=baseq2)"
|
||||
note: "Retail Quake II data pak. Not hash-validated."
|
||||
|
||||
- name: "pak1.pak"
|
||||
category: game_data
|
||||
system: quake2
|
||||
path: "baseq2/pak1.pak"
|
||||
required: false
|
||||
source_ref: "src/common/filesystem.c:1688"
|
||||
|
||||
- name: "pak2.pak"
|
||||
category: game_data
|
||||
system: quake2
|
||||
path: "baseq2/pak2.pak"
|
||||
required: false
|
||||
source_ref: "src/common/filesystem.c:1688"
|
||||
note: "Added by community re-releases and the KMQuake2 content pack."
|
||||
|
||||
# ================================================================
|
||||
# The Reckoning (xatrix/) — official Mission Pack 1
|
||||
# Separate yquake2 game library repo: yquake2/xatrix.
|
||||
# ================================================================
|
||||
|
||||
- name: "pak0.pak"
|
||||
category: game_data
|
||||
system: xatrix
|
||||
path: "xatrix/pak0.pak"
|
||||
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."
|
||||
|
||||
# ================================================================
|
||||
# Ground Zero (rogue/) — official Mission Pack 2
|
||||
# Separate yquake2 game library repo: yquake2/rogue.
|
||||
# ================================================================
|
||||
|
||||
- name: "pak0.pak"
|
||||
category: game_data
|
||||
system: rogue
|
||||
path: "rogue/pak0.pak"
|
||||
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."
|
||||
|
||||
# ================================================================
|
||||
# Three Wave Capture The Flag (ctf/) — official free addon
|
||||
# Separate yquake2 game library repo: yquake2/ctf.
|
||||
# ================================================================
|
||||
|
||||
- name: "pak0.pak"
|
||||
category: game_data
|
||||
system: ctf
|
||||
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."
|
||||
Reference in new issue
Block a user