Files
libretro/emulators/vkquake.yml
T
Abdessamad Derraz 937c79a1b6 chore: advance vkquake to 1.37.1 at 80ec429
Base directory falls back to a Steam, GOG or Epic install when it has no
game data. The embedded pak gained crosshairs and a console background.
QuakeEX.kpf documented: it serves rerelease localization when no loose copy exists.
2026-10-23 15:52:34 +02:00

100 lines
4.7 KiB
YAML

emulator: vkQuake
type: standalone
core_classification: game_engine
source: "https://github.com/Novum/vkQuake"
upstream: "https://sourceforge.net/projects/quakespasm/"
profiled_date: "2026-10-23"
source_commit: "80ec4293066505fefc1714408abd887369185c74"
core_version: "1.37.1"
display_name: "Quake (vkQuake)"
cores: ["vkquake"]
systems: [quake]
notes: |
Vulkan Quake engine derived from QuakeSpasm. VKQUAKE_VERSION 1.37,
VKQUAKE_VER_PATCH 1 (Quake/quakever.h:37-41). GAMENAME = "id1"
(Quake/quakedef.h:36).
COM_InitFilesystem takes the base directory from -basedir, otherwise
host_parms->basedir (Quake/common.c:3877-3881). Without -basedir, when
that directory holds neither id1/pak0.pak nor QuakeEX.kpf, it looks for a
Steam, GOG or Epic Games Store install of Quake or of the rerelease
(Quake/common.c:3888-3895, 3159-3171). COM_AddGameDirectory
opens <basedir>/<dir>/pak0.pak, pak1.pak, ... and stops at the first
index that does not open (Quake/common.c:2882-2886). Right after
id1/pak0.pak it mounts vkquake.pak, built from Misc/vq_pak and embedded
in the binary (Quake/common.c:2898-2923). It carries default.cfg, menu
pictures, a console background, crosshair images and entity fixes, no
gfx.wad and no palette (Misc/vq_pak/vq_pak_contents.txt).
gfx.wad and gfx/colormap.lmp come from id1/pak0.pak, and without either the
engine stops with Sys_Error (Quake/wad.c:80-87, Quake/host.c:1415-1417).
gfx/pop.lmp, present only in the registered id1/pak1.pak, sets the
registered cvar (Quake/common.c:2023-2049).
COM_LoadPackFile compares the file count (339) and the CRC of the pak
directory against id1/pak0.pak v1.00, v1.01 and v1.06
(Quake/common.c:58-61, 2773-2786). A mismatch only sets com_modified,
the file is still mounted. With com_modified set and no gfx/pop.lmp the
engine stops (Quake/common.c:2029-2035), so -game, -hipnotic and -rogue,
whose paks differ from id1/pak0.pak, need the registered id1/pak1.pak.
-rogue and -hipnotic add rogue/ and hipnotic/ after id1/
(Quake/common.c:3948-3951). Batocera 43.1 runs
`vkquake -basedir /userdata/roms/quake` and adds -hipnotic or -rogue
from the ROM name (configgen generators/vkquake/vkquakeGenerator.py).
Background music is streamed from <game>/music/trackNN.<ext>, ogg, opus,
flac, mp3 and wav, when present (Quake/bgmusic.c:29, 321).
Localized strings for the 2021 rerelease content are read from
localization/loc_<language>.txt, falling back to loc_english.txt, first
through the search path, then as a loose file in the base directory, then
inside <basedir>/QuakeEX.kpf (Quake/common.c:4300-4302, 4322-4326,
4612-4619).
files:
- name: "pak0.pak"
category: game_data
system: quake
path: "id1/pak0.pak"
required: true
source_ref: "Quake/common.c:2882-2886 (pak%i.pak loop), Quake/common.c:3937 (id1 by default), Quake/wad.c:80-87 (gfx.wad fatal)"
note: "Shareware and registered Quake data, one file in both releases. Directory CRC compared to v1.00, v1.01, v1.06, but a mismatch does not refuse the file."
- name: "pak1.pak"
category: game_data
system: quake
path: "id1/pak1.pak"
required: false
source_ref: "Quake/common.c:2882-2886 (pak%i.pak loop), Quake/common.c:2023-2035 (gfx/pop.lmp, registered check)"
note: "Registered episodes 2 to 4. Read only after pak0.pak opens. Needed by -hipnotic, -rogue and -game."
unsourceable: "retail data the collection does not hold, and a same-named file of another game must not stand in"
- name: "pak0.pak"
category: game_data
system: quake
path: "hipnotic/pak0.pak"
required: false
source_ref: "Quake/common.c:3950-3951 (-hipnotic), Quake/common.c:2882-2886 (pak%i.pak loop)"
note: "Scourge of Armagon data. Loaded with -hipnotic."
unsourceable: "retail data the collection does not hold, and a same-named file of another game must not stand in"
- name: "pak0.pak"
category: game_data
system: quake
path: "rogue/pak0.pak"
required: false
source_ref: "Quake/common.c:3948-3949 (-rogue), Quake/common.c:2882-2886 (pak%i.pak loop)"
note: "Dissolution of Eternity data. Loaded with -rogue."
unsourceable: "retail data the collection does not hold, and a same-named file of another game must not stand in"
- name: "QuakeEX.kpf"
category: game_data
system: quake
path: "QuakeEX.kpf"
required: false
source_ref: "Quake/common.c:4322-4326 (localization fallback), Quake/common.c:3159-3171 (rerelease data directory test)"
note: "Zip archive of the 2021 rerelease. Opened only for localization/loc_<language>.txt when no loose copy is found, and tested by the store detection to tell a rerelease folder."
unsourceable: "retail data the collection does not hold"