Files
libretro/emulators/openjk.yml
T
Abdessamad Derraz f2e21f3a44 docs: name profiles as their projects write them
emulator: carried the file stem on 67 profiles, so site links read like ids. Each now takes the project's own name (libretro .info corename, README title, window title or site title). tests/test_profile_names.py allows the stem only on a commented list: lowercase project names, test cores, aliases and the template.
2026-10-24 00:40:13 +02:00

121 lines
4.8 KiB
YAML

emulator: "OpenJK"
type: standalone
core_classification: game_engine
source: "https://github.com/JACoders/OpenJK"
upstream: "https://github.com/JACoders/OpenJK"
profiled_date: "2026-10-04"
source_commit: "260c59c2907187af555a676fe0cc798893bf7757"
display_name: "OpenJK"
cores: [openjk]
systems: [jediacademy, jediknight2]
notes: |
id Tech 3 source port for Star Wars Jedi Knight: Jedi Academy (JKA, single
and multiplayer) and Star Wars Jedi Knight II: Jedi Outcast (JK2, single
player only, as JK2 MP is not supported and upstream points users to JK2MV).
One source tree, three binaries:
openjk_sp JKA SP, built from code/ with BuildSPEngine
openjk JKA MP, built from codemp/ with BuildMPEngine
openjo_sp JK2 SP, built from code/ with BuildJK2SPEngine
(same translation units, JK2_MODE defined,
code/CMakeLists.txt:450-453)
BASEGAME = "base" (code/qcommon/q_shared.h:86). FS_Startup( BASEGAME )
adds base/ from cdpath, basepath, apppath, homepath via
FS_AddGameDirectory (code/qcommon/files.cpp:2730) which enumerates every
*.pk3 found there with Sys_ListFiles (code/qcommon/files.cpp:2770). No
specific pak filename is hard-coded in the loader: the retail archives
listed below are the files the stock games ship under base/, not a list
the engine looks up by name.
Hard engine dependency: default.cfg (SP) or mpdefault.cfg (MP) must be
readable through the virtual filesystem, otherwise FS_Startup aborts
with Com_Error( ERR_FATAL, "Couldn't load default.cfg" ) at
code/qcommon/files.cpp:3002-3003,3041 and
codemp/qcommon/files.cpp:4039-4040,4089.
Both config files live inside the retail assets0.pk3.
FS_idPak matches base/assets0 through base/assets8 (NUM_ID_PAKS = 9,
codemp/qcommon/qcommon.h:567, codemp/qcommon/files.cpp:3169-3170). The
MP client never auto-downloads a pak with one of those names
(codemp/qcommon/files.cpp:3241) and never offers one for download
(codemp/qcommon/files.cpp:4447). The check does not make any of them
required.
files:
# ================================================================
# Jedi Academy retail (base/, assets0.pk3 through assets3.pk3)
# Shared by openjk_sp (SP) and openjk (MP), same base/ directory.
# ================================================================
- name: "assets0.pk3"
category: game_data
system: jediacademy
path: "base/assets0.pk3"
required: true
source_ref: "code/qcommon/files.cpp:3002-3003 (default.cfg ERR_FATAL), codemp/qcommon/files.cpp:4039-4040 (mpdefault.cfg ERR_FATAL), codemp/qcommon/files.cpp:3169-3170 (NUM_ID_PAKS index 0)"
note: "Carries default.cfg and mpdefault.cfg, the only files the SP and MP engines refuse to start without."
- name: "assets1.pk3"
category: game_data
system: jediacademy
path: "base/assets1.pk3"
required: false
source_ref: "codemp/qcommon/files.cpp:3169-3170 (NUM_ID_PAKS index 1)"
note: "Retail JKA base content (audio). Loader scans the directory, no hard reference."
- name: "assets2.pk3"
category: game_data
system: jediacademy
path: "base/assets2.pk3"
required: false
source_ref: "codemp/qcommon/files.cpp:3169-3170 (NUM_ID_PAKS index 2)"
note: "Retail JKA base content (video/cinematics)."
- name: "assets3.pk3"
category: game_data
system: jediacademy
path: "base/assets3.pk3"
required: false
source_ref: "codemp/qcommon/files.cpp:3169-3170 (NUM_ID_PAKS index 3)"
note: "Retail JKA patch 1.01 content."
# ================================================================
# Jedi Outcast retail (base/, assets0.pk3, assets1.pk3, assets2.pk3,
# assets5.pk3). Loaded by openjo_sp (JK2_MODE). openjk upstream does
# not build a JK2 MP engine.
# ================================================================
- name: "assets0.pk3"
category: game_data
system: jediknight2
path: "base/assets0.pk3"
required: true
source_ref: "code/qcommon/files.cpp:3002-3003 (default.cfg ERR_FATAL), code/CMakeLists.txt:450-453 (JK2_MODE build)"
note: "Retail JK2 base archive. Carries default.cfg, and openjo_sp aborts without it."
- name: "assets1.pk3"
category: game_data
system: jediknight2
path: "base/assets1.pk3"
required: false
source_ref: "code/qcommon/files.cpp:2770 (Sys_ListFiles over .pk3)"
note: "Retail JK2 base content."
- name: "assets2.pk3"
category: game_data
system: jediknight2
path: "base/assets2.pk3"
required: false
source_ref: "code/qcommon/files.cpp:2770 (Sys_ListFiles over .pk3)"
note: "Retail JK2 base content."
- name: "assets5.pk3"
category: game_data
system: jediknight2
path: "base/assets5.pk3"
required: false
source_ref: "code/qcommon/files.cpp:2770 (Sys_ListFiles over .pk3)"
note: "Retail JK2 patch 1.04 content."