Files
libretro/emulators/vkquake3.yml
T
Abdessamad Derraz b3b3880c19 chore: say which repository each source_ref cites
Profiles that read two repositories, a libretro port and its upstream,
now prefix each citation with source or upstream, decided by which tree
carries the cited value at its pin. The emulator pages use the word to
tell libretro glue, emulator code as the port carries it, and the
upstream emulator apart.
2026-10-20 09:23:41 +02:00

148 lines
6.1 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: "source 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, and 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: "source 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: "source 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: "source 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: "source 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: "source 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: "source 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: "source 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: "source 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: "source 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, and 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: "source 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, and 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: "source 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: "source 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: "source code/qcommon/files.c:196 (missionpak_checksums[3]=1438664554u), 3622-3640 (fatal when a Team Arena pak is absent)"