Skip to content

OpenJKDF2 - RetroBIOS

Type standalone
Classification Game engines
Source https://github.com/shinyquagsire23/OpenJKDF2
Version 0.9.9.0
Profiled 2026-10-04
Systems dark-forces-ii, mysteries-of-the-sith, droidworks
Technical notes

Reimplementation of LucasArts' Sith engine. Runs Star Wars Jedi Knight: Dark Forces II (1997), its Mysteries of the Sith expansion (1998) with the -motsCompat switch, and Star Wars DroidWorks (1998) via the DroidWorks branch of the build.

Resource mounting (src/Main/jkRes.c): aGobDirectories[3] "resource" root, auto-mounted at startup (src/Main/jkRes.c:37 jkRes_LoadNew) aGobDirectories[1] "episode\<name>.gob" / ".goo" for the active episode, mounted by jkRes_LoadGob (src/Main/jkRes.c:103-106) aGobDirectories[4] gamedata\resource (CD overlay), mounted by jkRes_LoadCd (src/Main/jkRes.c:130-131)

The asset root is the working directory when it holds resource/jk_.cd, else the per-user data directory, whose last component is openjkdf2, openjkmots or opendroidworks (src/Main/InstallHelper.c:97, src/Main/InstallHelper.c:239-270). Paths below are written under that component.

jkRes_LoadNew mounts every .gob (.goo in Mysteries of the Sith mode) of resource/ (src/Main/jkRes.c:287-300) and jkEpisode lists every one of episode/ (src/Main/jkEpisode.c:106).

Required-asset lists are declared in src/Main/InstallHelper.c and checked by InstallHelper_CheckInstalled / AttemptInstallFromExisting; a missing entry aborts installation (src/Main/InstallHelper.c:748-756, 1091-1097, 1229-1256).

JK.EXE / JKM.EXE are only consumed by the 32-bit static-recomp build (src/main.c:696-718, gated by !ARCH_64BIT && !ARCH_WASM && !TARGET_ANDROID), which mmaps the retail binary at 0x400000 and patches it via do_hooks(). The 64-bit, WASM and Android builds skip that path and do not read JK.EXE at all.

23 files | 17 required, 6 optional | 5 in repo, 18 missing Categories: 23 game data

JK1.gob required missing game_data

JK1CTF.gob required missing game_data

JK1MP.gob required missing game_data

  • Path: openjkdf2/episode/JK1MP.gob
  • System: dark-forces-ii
  • Source: src/Main/InstallHelper.c:36
  • Multiplayer deathmatch episode. Default -episode value in Main.c:120.

Res1hi.gob required missing game_data

Res2.gob required missing game_data

  • Path: openjkdf2/resource/Res2.gob
  • System: dark-forces-ii
  • Source: src/Main/InstallHelper.c:38
  • Shared engine resources: sounds, 3DOs, materials.

jk_.cd required in repo game_data

jk1demo.gob optional in repo game_data

jk1mpdem.gob optional in repo game_data

res1demo.gob optional in repo game_data

Res1low.gob optional missing game_data

  • Path: openjkdf2/resource/Res1low.gob
  • System: dark-forces-ii
  • Source: src/Main/InstallHelper.c:71
  • Low-resolution textures shipped on the CD under MININSTALL/.

JK.EXE optional missing game_data

JKM.goo required missing game_data

JKM_KFY.goo required missing game_data

JKM_MP.goo required missing game_data

JKM_SABER.goo required missing game_data

Jkmres.goo required missing game_data

JKMsndLO.goo required missing game_data

  • Path: openjkmots/resource/JKMsndLO.goo
  • System: mysteries-of-the-sith
  • Source: src/Main/InstallHelper.c:50
  • Low-quality sound bank (MININSTALL/JKMSNDLO.GOO on the CD).

jk_.cd required in repo game_data

JKM.EXE optional missing game_data

dwCD.GOB required missing game_data

dwHD.GOB required missing game_data

dwMin.GOB required missing game_data

dwStream.GOB required missing game_data

Generated on 2026-10-10T11:26:01Z