Files
libretro/emulators/vkquake3.yml
T
Abdessamad Derraz 856383136e feat: profile batocera vulkan quakes, supermodel
Batocera 43.1 ships vkQuake, vkQuake2, vkQuake3 and a Supermodel held
at 0eef09ba for the Raspberry Pi 4; none had a profile, so a targeted
pack dropped them. Each profile is read from the commit Batocera
builds. Collected with them: the Quake 1.06 id1/pak0.pak, the same file
in the shareware and registered releases, and the Games.xml that
Supermodel revision installs.
2026-10-17 12:33:33 +02:00

148 lines
6.0 KiB
YAML

emulator: vkQuake3
type: standalone
core_classification: game_engine
source: "https://github.com/suijingfeng/vkQuake3"
upstream: "https://github.com/ioquake/ioq3"
profiled_date: "2026-10-17"
source_commit: "5300b32803c1c61bc3b6bdf86a084c1db1a217ad"
core_version: "1.36"
display_name: "Quake III Arena (vkQuake3)"
cores: ["vkquake3"]
systems: [quake3, teamarena]
notes: |
ioquake3 fork with a Vulkan renderer. PRODUCT_VERSION "1.36",
BASEGAME = "baseq3", BASETA = "missionpack" (code/qcommon/q_shared.h:45,
68, 71). NUM_ID_PAKS 9, NUM_TA_PAKS 4 (code/qcommon/qcommon.h:597-598).
fs_basepath defaults to Sys_DefaultInstallPath, the directory of the
binary (code/qcommon/files.c:3323, code/sys/sys_main.c:88-94, 738).
FS_Startup mounts baseq3 under fs_basepath and fs_homepath, then fs_game
when set (code/qcommon/files.c:3362-3377, 3396-3409). FS_AddGameDirectory
mounts every .pk3 of each directory (code/qcommon/files.c:2933).
FS_CheckPak0 compares the pak checksum of baseq3/pak0.pk3 through
pak8.pk3 and missionpack/pak0.pk3 through pak3.pk3 to pak_checksums[] and
missionpak_checksums[] (code/qcommon/files.c:179-197, 3486, 3516). The
value is a block checksum over the CRC32 of every member
(code/qcommon/files.c:2111), not a file hash. A mismatch prints a warning and the pak stays
mounted. A missing baseq3 pak is fatal unless the engine runs standalone,
which needs com_basegame other than baseq3 (code/qcommon/files.c:3570-3572,
3596-3619). Once any Team Arena pak is found the four are required
(code/qcommon/files.c:3622-3640). demoq3/pak0.pk3 with
DEMO_PAK0_CHECKSUM counts as baseq3/pak0.pk3 (code/qcommon/files.c:178,
3475-3479, 3580-3590).
Batocera 43.1 installs the binary as /usr/bin/ioquake3/ioquake3 and runs
it through the ioquake3 generator, which copies /usr/bin/ioquake3 into
/userdata/roms/quake3 and starts /userdata/roms/quake3/ioquake3 with the
arguments written in the ROM file (configgen
generators/ioquake3/ioquake3Generator.py). fs_basepath is therefore
/userdata/roms/quake3. Patch 001-config-dir.patch sets
HOMEPATH_NAME_UNIX to "/configs/ioquake3", appended to $HOME
(code/sys/sys_unix.c:65, 79).
files:
- name: "pak0.pk3"
category: game_data
system: quake3
path: "baseq3/pak0.pk3"
required: true
source_ref: "code/qcommon/files.c:180 (pak_checksums[0]=1566731103u), 3486 (checksum compare), 3596-3619 (fatal when a baseq3 pak is absent)"
note: "Retail Quake III Arena pak. A checksum mismatch prints a warning, the file is not refused."
unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in"
- name: "pak1.pk3"
category: game_data
system: quake3
path: "baseq3/pak1.pk3"
required: true
source_ref: "code/qcommon/files.c:181 (pak_checksums[1]=298122907u), 3596-3619 (fatal when a baseq3 pak is absent)"
- name: "pak2.pk3"
category: game_data
system: quake3
path: "baseq3/pak2.pk3"
required: true
source_ref: "code/qcommon/files.c:182 (pak_checksums[2]=412165236u), 3596-3619 (fatal when a baseq3 pak is absent)"
- name: "pak3.pk3"
category: game_data
system: quake3
path: "baseq3/pak3.pk3"
required: true
source_ref: "code/qcommon/files.c:183 (pak_checksums[3]=2991495316u), 3596-3619 (fatal when a baseq3 pak is absent)"
- name: "pak4.pk3"
category: game_data
system: quake3
path: "baseq3/pak4.pk3"
required: true
source_ref: "code/qcommon/files.c:184 (pak_checksums[4]=1197932710u), 3596-3619 (fatal when a baseq3 pak is absent)"
- name: "pak5.pk3"
category: game_data
system: quake3
path: "baseq3/pak5.pk3"
required: true
source_ref: "code/qcommon/files.c:185 (pak_checksums[5]=4087071573u), 3596-3619 (fatal when a baseq3 pak is absent)"
- name: "pak6.pk3"
category: game_data
system: quake3
path: "baseq3/pak6.pk3"
required: true
source_ref: "code/qcommon/files.c:186 (pak_checksums[6]=3709064859u), 3596-3619 (fatal when a baseq3 pak is absent)"
- name: "pak7.pk3"
category: game_data
system: quake3
path: "baseq3/pak7.pk3"
required: true
source_ref: "code/qcommon/files.c:187 (pak_checksums[7]=908855077u), 3596-3619 (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), 3596-3619 (fatal when a baseq3 pak is absent)"
- name: "pak0.pk3"
category: game_data
system: quake3
path: "demoq3/pak0.pk3"
required: false
source_ref: "code/qcommon/files.c:178 (DEMO_PAK0_CHECKSUM=2985612116u), 3475-3479 (demoq3 pak0 checksum compare), 3580-3590 (counted as baseq3/pak0.pk3)"
note: "Demo pak. Recognised only under demoq3/ with this checksum; the engine then prints a warning and counts baseq3/pak0.pk3 as found."
- name: "pak0.pk3"
category: game_data
system: teamarena
path: "missionpack/pak0.pk3"
required: false
source_ref: "code/qcommon/files.c:193 (missionpak_checksums[0]=2430342401u), 3622-3640 (fatal when a Team Arena pak is absent)"
note: "Team Arena pak. Read with `+set fs_game missionpack`."
unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in"
- name: "pak1.pk3"
category: game_data
system: teamarena
path: "missionpack/pak1.pk3"
required: false
source_ref: "code/qcommon/files.c:194 (missionpak_checksums[1]=511014160u), 3622-3640 (fatal when a Team Arena pak is absent)"
- name: "pak2.pk3"
category: game_data
system: teamarena
path: "missionpack/pak2.pk3"
required: false
source_ref: "code/qcommon/files.c:195 (missionpak_checksums[2]=2662638993u), 3622-3640 (fatal when a Team Arena pak is absent)"
- name: "pak3.pk3"
category: game_data
system: teamarena
path: "missionpack/pak3.pk3"
required: false
source_ref: "code/qcommon/files.c:196 (missionpak_checksums[3]=1438664554u), 3622-3640 (fatal when a Team Arena pak is absent)"