feat: profile arcade and indie game engines

This commit is contained in:
Abdessamad Derraz committed 2026-10-04 15:39:55 +02:00
1 parent 24fb0ebd33
commit a394e93dc5
12 files changed
+1558

No files matched your search

+62
View File
@@ -0,0 +1,62 @@
emulator: Abuse
type: standalone
core_classification: game_engine
source: "https://github.com/Xenoveritas/abuse"
upstream: "https://github.com/Xenoveritas/abuse"
profiled_date: "2026-10-04"
source_commit: "c855a923cd7fb27b629b4e1af78b1fcc5f263d01"
core_version: "v0.9.1"
display_name: "Abuse"
cores: [abuse]
systems: []
verification: existence
notes: |
Side-scrolling 1995 action game by Crack dot Com, SDL2 fork from the Xenoveritas
branch. The port ships its own game data in-tree under data/ (14 MB), including
the Lisp scripts, levels, art and freedesktop metadata; the fRaBs expansion was
removed from this fork over licensing uncertainty.
Entry point abuse.lsp is loaded relative to the data directory. The data root
is set in src/sdlport/setup.cpp:
1. -datadir <path> CLI argument (setup.cpp:327-332)
2. datadir= in abuse.cfg (setup.cpp:182)
3. ASSETDIR compile-time constant, filled by CMakeLists.txt:45-54 — "." on
Windows, abuse.app/Contents/Resources/data on macOS, share/games/abuse on
Linux (setup.cpp:441-474)
Loader1 reads abuse.lsp via lisp (loader2.cpp:284), which chain-loads
lisp/english.lsp -> lisp/common.lsp -> lisp/startup.lsp -> ...
Batocera's packaging (package/batocera/ports/abuse/abuse.mk) pins DASSETDIR to
/userdata/roms/abuse and splits the data into the Pacman package abuse-data
which pulls abuse.zoy.org's abuse-data-2.00.tar.gz, a 16 MB public-domain pack
that includes music/ and sfx/ (which the Xenoveritas tree omits).
No separate BIOS or firmware. The whole game is open content.
files:
- name: "abuse.lsp"
category: game_data
description: "Lisp entry point loaded first after setting the data directory"
required: true
bundled: true
source_ref: "src/loader2.cpp:284 (lsf default), src/netcfg.cpp:204 (lsf override)"
note: >
Shipped in the source tree under data/. Loader2 reads it via load(); the
file in turn chain-loads the rest of the Lisp data (english.lsp,
common.lsp, startup.lsp, options.lsp, input.lsp, startup).
- name: "defaults.prp"
category: game_data
description: "Default properties for level objects"
required: true
bundled: true
source_ref: "data/abuse.lsp"
- name: "english.lsp"
path: "lisp/english.lsp"
category: game_data
description: "Localized strings loaded first by abuse.lsp"
required: true
bundled: true
source_ref: "data/abuse.lsp:9"
+217
View File
@@ -0,0 +1,217 @@
emulator: BStone
type: standalone
core_classification: game_engine
source: "https://github.com/bibendovsky/bstone"
upstream: "https://github.com/bibendovsky/bstone"
profiled_date: "2026-10-04"
source_commit: "e65a6b40b960a409d7ea840580c2431f56fb6fd4"
core_version: "v1.3.4"
display_name: "Blake Stone (BStone)"
cores: [bstone]
systems: [blake-stone]
verification: md5
notes: |
Blake Stone source port by bibendovsky, covering Aliens of Gold (shareware
v1.0/v2.0/v2.1/v3.0 and registered v1.0/v2.0/v2.1/v3.0) plus Planet Strike.
The engine identifies the installed game by SHA1-hashing every file in the
content directory against a hardcoded resource table in id_ca.cpp.
Assets::get_aog_sw_v1_0_resources, get_aog_sw_v2_0_resources,
get_aog_sw_v2_1_resources, get_aog_sw_v3_0_resources,
get_aog_full_v1_0_resources through get_aog_full_v3_0_resources, and
get_ps_resources (id_ca.cpp:1493-1687) each list one shipping variant.
has_content() in jm_free.cpp:195-220 opens every file in the chosen set and
fails the match on the first SHA1 mismatch.
Search paths come from the command line (-aog_dir, -ps_dir), the Steam install
(bstone_steam_content_path.cpp) and the GOG install (bstone_gog_content_path.cpp)
before the current working directory. File names carry the game suffix:
.BS1 Aliens of Gold shareware
.BS6 Aliens of Gold registered
.VSI Planet Strike
Every file in a set is required; the game refuses to start otherwise. Levels
are checked separately: a modded-levels hash saves to the player data instead
of being refused (jm_free.cpp:934-946).
No separate BIOS. BStone requires one of the three retail/shareware data sets.
files:
# ─── Aliens of Gold registered v3.0 (the common retail dump) ───
- name: "AUDIOHED.BS6"
category: game_data
system: blake-stone
description: "Aliens of Gold v3.0 audio header"
required: true
sha1: "e2c101f9fd4bc7e22ddbfa3f019c9303877de4e2"
source_ref: "src/bstone/src/id_ca.cpp:1657 (get_aog_full_v3_0_resources)"
- name: "AUDIOT.BS6"
category: game_data
system: blake-stone
description: "Aliens of Gold v3.0 audio data"
required: true
sha1: "b79e7afcb4e4b29e59660ec261f72ff1ab4d3a25"
source_ref: "src/bstone/src/id_ca.cpp:1658"
- name: "EANIM.BS6"
category: game_data
system: blake-stone
description: "Aliens of Gold v3.0 ending animation"
required: true
sha1: "af5af59ad7ed17517d87b3ece3c0cac23ade535b"
source_ref: "src/bstone/src/id_ca.cpp:1659"
- name: "GANIM.BS6"
category: game_data
system: blake-stone
description: "Aliens of Gold v3.0 gameplay animation"
required: true
sha1: "9b2418a1a1f34abdcf6fcd9ed3344a49912c9b5e"
source_ref: "src/bstone/src/id_ca.cpp:1660"
- name: "IANIM.BS6"
category: game_data
system: blake-stone
description: "Aliens of Gold v3.0 intro animation"
required: true
sha1: "ba1fa5b0bc34f148deffb4977a3cd1e718e91bbd"
source_ref: "src/bstone/src/id_ca.cpp:1661"
- name: "MAPHEAD.BS6"
category: game_data
system: blake-stone
description: "Aliens of Gold v3.0 map header"
required: true
sha1: "028f624e150f84ffc8336336cb0ecea0932cc22d"
source_ref: "src/bstone/src/id_ca.cpp:1662"
- name: "MAPTEMP.BS6"
category: game_data
system: blake-stone
description: "Aliens of Gold v3.0 level data"
required: true
sha1: "8b48e7eb859382a4c84948c5a62899194288e853"
source_ref: "src/bstone/src/id_ca.cpp:1663"
- name: "SANIM.BS6"
category: game_data
system: blake-stone
description: "Aliens of Gold v3.0 story animation"
required: true
sha1: "22bf818465da0f32eef9611de936cba9966b14aa"
source_ref: "src/bstone/src/id_ca.cpp:1664"
- name: "VGADICT.BS6"
category: game_data
system: blake-stone
description: "Aliens of Gold v3.0 huffman dictionary"
required: true
sha1: "60da35e506d57753f83cca5f232a76dd1cf074ba"
source_ref: "src/bstone/src/id_ca.cpp:1665"
- name: "VGAGRAPH.BS6"
category: game_data
system: blake-stone
description: "Aliens of Gold v3.0 compressed graphics"
required: true
sha1: "001037fafdff124befb5437c563d0b9c613b3c00"
source_ref: "src/bstone/src/id_ca.cpp:1666"
- name: "VGAHEAD.BS6"
category: game_data
system: blake-stone
description: "Aliens of Gold v3.0 graphics offsets"
required: true
sha1: "ff165ca5924d738853587a7e4ab1cd239e10e359"
source_ref: "src/bstone/src/id_ca.cpp:1667"
- name: "VSWAP.BS6"
category: game_data
system: blake-stone
description: "Aliens of Gold v3.0 wall and sprite data"
required: true
sha1: "6fcc6e007b02b2e55892cfa7acfd42966ef9c9fb"
source_ref: "src/bstone/src/id_ca.cpp:1668"
# ─── Planet Strike (only one shipping version) ───
- name: "AUDIOHED.VSI"
category: game_data
system: blake-stone
description: "Planet Strike audio header"
required: false
sha1: "2ed9a587926b2b455f8176788f595d03f6359171"
source_ref: "src/bstone/src/id_ca.cpp:1696 (get_ps_resources)"
- name: "AUDIOT.VSI"
category: game_data
system: blake-stone
description: "Planet Strike audio data"
required: false
sha1: "ecac8a800c5d021c8b68d170066c8859df9bd79a"
source_ref: "src/bstone/src/id_ca.cpp:1697"
- name: "EANIM.VSI"
category: game_data
system: blake-stone
description: "Planet Strike ending animation"
required: false
sha1: "b668330e56ceb069c1b972cefddd8a3d618a14af"
source_ref: "src/bstone/src/id_ca.cpp:1698"
- name: "IANIM.VSI"
category: game_data
system: blake-stone
description: "Planet Strike intro animation"
required: false
sha1: "ba1fa5b0bc34f148deffb4977a3cd1e718e91bbd"
source_ref: "src/bstone/src/id_ca.cpp:1699"
- name: "MAPHEAD.VSI"
category: game_data
system: blake-stone
description: "Planet Strike map header"
required: false
sha1: "c3fb0a9b81e0240d12c952fe5b57b78c1108aa48"
source_ref: "src/bstone/src/id_ca.cpp:1700"
- name: "MAPTEMP.VSI"
category: game_data
system: blake-stone
description: "Planet Strike level data"
required: false
sha1: "acd03031d526eeaee64072518adf6814f96e2a37"
source_ref: "src/bstone/src/id_ca.cpp:1701"
- name: "VGADICT.VSI"
category: game_data
system: blake-stone
description: "Planet Strike huffman dictionary"
required: false
sha1: "061692d166f68d7e0b81568725439078cc728f33"
source_ref: "src/bstone/src/id_ca.cpp:1702"
- name: "VGAGRAPH.VSI"
category: game_data
system: blake-stone
description: "Planet Strike compressed graphics"
required: false
sha1: "e619a3e6245f79888da5436df138d63204d2caba"
source_ref: "src/bstone/src/id_ca.cpp:1703"
- name: "VGAHEAD.VSI"
category: game_data
system: blake-stone
description: "Planet Strike graphics offsets"
required: false
sha1: "ad5fed9de5d1d82145df3ff2286e4bc62cb80e2a"
source_ref: "src/bstone/src/id_ca.cpp:1704"
- name: "VSWAP.VSI"
category: game_data
system: blake-stone
description: "Planet Strike wall and sprite data"
required: false
sha1: "4113ce83c42e69dc5cb20de79f41971a100f876e"
source_ref: "src/bstone/src/id_ca.cpp:1705"
+285
View File
@@ -0,0 +1,285 @@
emulator: CatacombGL
type: standalone
core_classification: game_engine
source: "https://github.com/ArnoAnsems/CatacombGL"
upstream: "https://github.com/ArnoAnsems/CatacombGL"
profiled_date: "2026-10-04"
source_commit: "fc0e70bf69276939d8f2b02a9dd89817263095e5"
core_version: "0.5.5"
display_name: "Catacomb 3-D (CatacombGL)"
cores: [catacombgl]
systems: [catacomb-3d, catacomb-adventure]
verification: existence
notes: |
OpenGL source port by Arno Ansems of id Software's Catacomb Adventure series:
- Catacomb 3-D: The Descent (.C3D)
- Catacomb Abyss (.ABS) — three releases v1.12 / v1.13 / v1.24
- Catacomb Armageddon (.ARM)
- Catacomb Apocalypse (.APC)
The engine detects which game a search path points at by matching every
filename and byte-size against a hardcoded map in src/<game>/GameDetection
<game>.h. GameDetectionAbyss.h, GameDetectionArmageddon.h,
GameDetectionApocalypse.h and GameDetectionCatacomb3D.h declare the
<game>Files* std::map<std::string, uint32_t> tables used by
src/Engine/GameDetection.cpp.
Files are matched by exact byte size at this layer; the loaders downstream
then open each by name through src/Engine/EngineCore.cpp. Catacomb Abyss has
three distinct file sets (v1.12, v1.13, v1.24), and Catacomb 3-D has v1.00
and v1.22.
Each supported game sits in its own directory, picked by the user through
the game selection menu (src/Engine/GameSelection.cpp). No separate BIOS is
needed — the retail / shareware DOS data files are the only requirement.
The Catacomb Adventure Series releases (Abyss shareware, Armageddon,
Apocalypse) were made freeware by Flat Rock Software and are distributed by
3D Realms. Catacomb 3-D was released as shareware; the registered v1.22 data
is commercial.
files:
# ─── Catacomb 3-D v1.22 (registered) ───
- name: "AUDIO.C3D"
category: game_data
system: catacomb-3d
description: "Catacomb 3-D audio chunks"
required: false
size: 5062
source_ref: "src/Catacomb3D/GameDetectionCatacomb3D.h:36 (catacomb3Dv122Files)"
- name: "EGAGRAPH.C3D"
category: game_data
system: catacomb-3d
description: "Catacomb 3-D v1.22 EGA graphics"
required: false
size: 256899
source_ref: "src/Catacomb3D/GameDetectionCatacomb3D.h:37"
- name: "GAMEMAPS.C3D"
category: game_data
system: catacomb-3d
description: "Catacomb 3-D v1.22 level data"
required: false
size: 14288
source_ref: "src/Catacomb3D/GameDetectionCatacomb3D.h:38"
# ─── Catacomb Abyss v1.24 (final shareware) ───
- name: "AUDIO.ABS"
category: game_data
system: catacomb-adventure
description: "Catacomb Abyss v1.24 audio"
required: false
size: 6904
source_ref: "src/Abyss/GameDetectionAbyss.h (abyssFilesv124)"
- name: "EGAGRAPH.ABS"
category: game_data
system: catacomb-adventure
description: "Catacomb Abyss v1.24 EGA graphics"
required: false
size: 335994
source_ref: "src/Abyss/GameDetectionAbyss.h (abyssFilesv124)"
- name: "GAMEMAPS.ABS"
category: game_data
system: catacomb-adventure
description: "Catacomb Abyss v1.24 level data"
required: false
size: 20433
source_ref: "src/Abyss/GameDetectionAbyss.h (abyssFilesv124)"
- name: "SHP01.ABS"
category: game_data
system: catacomb-adventure
description: "Catacomb Abyss shapes bank 1"
required: false
size: 1376
source_ref: "src/Abyss/GameDetectionAbyss.h (abyssFilesv124)"
- name: "SHP02.ABS"
category: game_data
system: catacomb-adventure
description: "Catacomb Abyss shapes bank 2"
required: false
size: 14912
source_ref: "src/Abyss/GameDetectionAbyss.h (abyssFilesv124)"
- name: "SHP03.ABS"
category: game_data
system: catacomb-adventure
description: "Catacomb Abyss shapes bank 3"
required: false
size: 13186
source_ref: "src/Abyss/GameDetectionAbyss.h (abyssFilesv124)"
- name: "SHP04.ABS"
category: game_data
system: catacomb-adventure
description: "Catacomb Abyss shapes bank 4"
required: false
size: 12648
source_ref: "src/Abyss/GameDetectionAbyss.h (abyssFilesv124)"
- name: "SHP05.ABS"
category: game_data
system: catacomb-adventure
description: "Catacomb Abyss shapes bank 5"
required: false
size: 724
source_ref: "src/Abyss/GameDetectionAbyss.h (abyssFilesv124)"
- name: "SHP06.ABS"
category: game_data
system: catacomb-adventure
description: "Catacomb Abyss shapes bank 6"
required: false
size: 9182
source_ref: "src/Abyss/GameDetectionAbyss.h (abyssFilesv124)"
# ─── Catacomb Armageddon ───
- name: "AUDIO.ARM"
category: game_data
system: catacomb-adventure
description: "Catacomb Armageddon audio"
required: false
size: 7104
source_ref: "src/Armageddon/GameDetectionArmageddon.h (armageddonFiles)"
- name: "EGAGRAPH.ARM"
category: game_data
system: catacomb-adventure
description: "Catacomb Armageddon EGA graphics"
required: false
size: 355832
source_ref: "src/Armageddon/GameDetectionArmageddon.h (armageddonFiles)"
- name: "GAMEMAPS.ARM"
category: game_data
system: catacomb-adventure
description: "Catacomb Armageddon level data"
required: false
size: 17653
source_ref: "src/Armageddon/GameDetectionArmageddon.h (armageddonFiles)"
- name: "SHP1.ARM"
category: game_data
system: catacomb-adventure
description: "Catacomb Armageddon shapes bank 1"
required: false
size: 1376
source_ref: "src/Armageddon/GameDetectionArmageddon.h (armageddonFiles)"
- name: "SHP2.ARM"
category: game_data
system: catacomb-adventure
description: "Catacomb Armageddon shapes bank 2"
required: false
size: 3991
source_ref: "src/Armageddon/GameDetectionArmageddon.h (armageddonFiles)"
- name: "SHP3.ARM"
category: game_data
system: catacomb-adventure
description: "Catacomb Armageddon shapes bank 3"
required: false
size: 15036
source_ref: "src/Armageddon/GameDetectionArmageddon.h (armageddonFiles)"
- name: "SHP4.ARM"
category: game_data
system: catacomb-adventure
description: "Catacomb Armageddon shapes bank 4"
required: false
size: 15568
source_ref: "src/Armageddon/GameDetectionArmageddon.h (armageddonFiles)"
- name: "SHP5.ARM"
category: game_data
system: catacomb-adventure
description: "Catacomb Armageddon shapes bank 5"
required: false
size: 13234
source_ref: "src/Armageddon/GameDetectionArmageddon.h (armageddonFiles)"
- name: "SHP6.ARM"
category: game_data
system: catacomb-adventure
description: "Catacomb Armageddon shapes bank 6"
required: false
size: 10861
source_ref: "src/Armageddon/GameDetectionArmageddon.h (armageddonFiles)"
# ─── Catacomb Apocalypse ───
- name: "AUDIO.APC"
category: game_data
system: catacomb-adventure
description: "Catacomb Apocalypse audio"
required: false
size: 7366
source_ref: "src/Apocalypse/GameDetectionApocalypse.h (apocalypseFiles)"
- name: "EGAGRAPH.APC"
category: game_data
system: catacomb-adventure
description: "Catacomb Apocalypse EGA graphics"
required: false
size: 382078
source_ref: "src/Apocalypse/GameDetectionApocalypse.h (apocalypseFiles)"
- name: "GAMEMAPS.APC"
category: game_data
system: catacomb-adventure
description: "Catacomb Apocalypse level data"
required: false
size: 18855
source_ref: "src/Apocalypse/GameDetectionApocalypse.h (apocalypseFiles)"
- name: "SHP1.APC"
category: game_data
system: catacomb-adventure
description: "Catacomb Apocalypse shapes bank 1"
required: false
size: 1376
source_ref: "src/Apocalypse/GameDetectionApocalypse.h (apocalypseFiles)"
- name: "SHP2.APC"
category: game_data
system: catacomb-adventure
description: "Catacomb Apocalypse shapes bank 2"
required: false
size: 6329
source_ref: "src/Apocalypse/GameDetectionApocalypse.h (apocalypseFiles)"
- name: "SHP3.APC"
category: game_data
system: catacomb-adventure
description: "Catacomb Apocalypse shapes bank 3"
required: false
size: 13187
source_ref: "src/Apocalypse/GameDetectionApocalypse.h (apocalypseFiles)"
- name: "SHP4.APC"
category: game_data
system: catacomb-adventure
description: "Catacomb Apocalypse shapes bank 4"
required: false
size: 13592
source_ref: "src/Apocalypse/GameDetectionApocalypse.h (apocalypseFiles)"
- name: "SHP5.APC"
category: game_data
system: catacomb-adventure
description: "Catacomb Apocalypse shapes bank 5"
required: false
size: 12698
source_ref: "src/Apocalypse/GameDetectionApocalypse.h (apocalypseFiles)"
- name: "SHP6.APC"
category: game_data
system: catacomb-adventure
description: "Catacomb Apocalypse shapes bank 6"
required: false
size: 11131
source_ref: "src/Apocalypse/GameDetectionApocalypse.h (apocalypseFiles)"
+135
View File
@@ -0,0 +1,135 @@
emulator: C-Dogs SDL
type: standalone
core_classification: game_engine
source: "https://github.com/cxong/cdogs-sdl"
upstream: "https://github.com/cxong/cdogs-sdl"
profiled_date: "2026-10-04"
source_commit: "57782a74ae245d868487094d201d0e56e94a9390"
core_version: "2.4.0"
display_name: "C-Dogs"
cores: [cdogs, cdogs-sdl]
systems: []
verification: existence
notes: |
Top-down shooter engine, open-source remake of the DOS C-Dogs by Ronny Wester.
Ships every asset it needs in-tree: data/, graphics/, missions/, music/,
sounds/, dogfights/, doc/, wiki/ (about 100 MB).
The data root is baked into the binary via -DCDOGS_DATA_DIR (CMakeLists.txt
option). Batocera sets it to /userdata/roms/cdogs/; the Linux source default
is cdogs-data. GetDataFilePath() in src/cdogs/utils.c:392 either returns an
absolute override as-is, or joins the current working directory with
CDOGS_DATA_DIR plus the requested relative path.
Top-level sub-trees the game pulls files from (every path is relative to
CDOGS_DATA_DIR, resolved through GetDataFilePath):
data/ — ammo.json, bullets.json, guns.json, pickups.json,
map_objects.json, character_classes.json, particles.json,
gamecontrollerdb.txt, prefixes.txt (configuration data)
graphics/ — sprites, font, icons; grafx.c:92 (cdogs_icon.bmp),
grafx.c:156 (font.png + font.json)
missions/ — single-player campaigns, mission packs (JSON)
music/ — menu, briefing, game, end, lose, victory tracks
(music.c:45-50 LoadMusic calls)
sounds/ — sfx wavs
dogfights/ — deathmatch arenas
All open-source content (GPL-2.0). No separate BIOS or retail data required.
files:
- name: "ammo.json"
path: "data/ammo.json"
category: game_data
description: "Ammo type definitions"
required: true
bundled: true
source_ref: "src/cdogs/ammo.c (AmmoLoadJSON reads data/ammo.json)"
- name: "bullets.json"
path: "data/bullets.json"
category: game_data
description: "Bullet behaviour definitions"
required: true
bundled: true
source_ref: "src/cdogs/weapon_class.c (BulletsLoadJSON)"
- name: "guns.json"
path: "data/guns.json"
category: game_data
description: "Weapon definitions"
required: true
bundled: true
source_ref: "src/cdogs/weapon_class.c"
- name: "character_classes.json"
path: "data/character_classes.json"
category: game_data
description: "Character class definitions"
required: true
bundled: true
source_ref: "src/cdogs/character_class.c"
- name: "map_objects.json"
path: "data/map_objects.json"
category: game_data
description: "Interactive map object definitions"
required: true
bundled: true
source_ref: "src/cdogs/map_object.c"
- name: "particles.json"
path: "data/particles.json"
category: game_data
description: "Particle effect definitions"
required: true
bundled: true
source_ref: "src/cdogs/particle.c"
- name: "pickups.json"
path: "data/pickups.json"
category: game_data
description: "Pickup item definitions"
required: true
bundled: true
source_ref: "src/cdogs/pickup_class.c"
- name: "prefixes.txt"
path: "data/prefixes.txt"
category: game_data
description: "Random name generation prefixes"
required: true
bundled: true
source_ref: "src/cdogs/character.c"
- name: "gamecontrollerdb.txt"
path: "data/gamecontrollerdb.txt"
category: game_data
description: "SDL gamecontroller mapping database"
required: false
bundled: true
source_ref: "src/cdogs/joystick.c:43"
- name: "font.png"
path: "graphics/font.png"
category: game_data
description: "Main bitmap font"
required: true
bundled: true
source_ref: "src/cdogs/grafx.c:156 (FontLoadFromJSON)"
- name: "font.json"
path: "graphics/font.json"
category: game_data
description: "Main bitmap font layout"
required: true
bundled: true
source_ref: "src/cdogs/grafx.c:156"
- name: "cdogs_icon.bmp"
path: "graphics/cdogs_icon.bmp"
category: game_data
description: "Window icon"
required: false
bundled: true
source_ref: "src/cdogs/grafx.c:92"
+198
View File
@@ -0,0 +1,198 @@
emulator: Commander Genius
type: standalone
core_classification: game_engine
source: "https://gitlab.com/Dringgstein/Commander-Genius"
upstream: "https://gitlab.com/Dringgstein/Commander-Genius"
profiled_date: "2026-10-04"
source_commit: "bee4fcbd235b9d3d804a50cc6ecaccbbe89490f7"
core_version: "v3.6.3"
display_name: "Commander Genius"
cores: [cgenius]
systems: [commander-keen]
verification: existence
notes: |
Open-source reimplementation of the Commander Keen engines (Vorticon, Galaxy,
Dreams) and the Cosmo engine, by Gerstrong. Needs the original Commander Keen
data files from the user; the engine itself ships with a 876 KB vfsroot (UI
art, fonts, sounds) that is not a BIOS and is bundled with the binary.
For each supported game, Commander Genius expects a flat directory under its
"games/" tree containing the original DOS data files. KeenFiles::setupFilenames
(src/fileio/KeenFiles.h:36-57) names them by episode number:
Vorticon trilogy (episodes 1-3, Keen 1/2/3)
egagraph.ck{N}, egahead.ck{N}, egadict.ck{N},
audio.ck{N}, audiohed.ck{N}, audiodct.ck{N},
gamemaps.ck{N}, maphead.ck{N}
Galaxy trilogy (episodes 4-6, Keen 4/5/6)
same naming, {N} = 4..6
Keen Dreams (episode 7, "KDREAMS")
KDREAMSDICT.EGA, KDREAMS.AUD, AUDIODCT.KDR, AUDIOHHD.KDR, plus KDREAMS.EXE
(CExeFile.cpp:190-195 reads kdreams.exe to extract the Dreams tiles)
Episode 1-6 shareware and demo files are freely redistributable under the
Apogee/3D Realms terms; the registered Keen 4-6 and Keen Dreams data remain
commercial. CPatcher.cpp:129-140 lets a patch file override the default names
so GOG/Steam variants work in-place.
cosmos engine (added as a git submodule by the build) looks for Cosmo's
Cosmic Adventures data (COSMOx.STN, VOLUMES.STN, etc.) using the same
directory-per-game layout; those files are not profiled here because the
cosmos sub-engine is a separate upstream (Dringgstein/cosmos, pinned to
8497b5696c92b13ede4f5ad01dfb577b208404cb by cgenius.mk).
Game directories are searched under the user's roms root. The engine then
loads from vfsroot/global/ at startup — fonts, trophy UI, generic sounds —
which is bundled with the install, not with the Keen data.
files:
# ─── Keen 1: Marooned on Mars (shareware, freely distributable) ───
- name: "egahead.ck1"
category: game_data
system: commander-keen
description: "Keen 1 EGA graphics header"
required: false
source_ref: "src/fileio/KeenFiles.h:42 (egaheadFilename = egahead.ckN)"
- name: "egagraph.ck1"
category: game_data
system: commander-keen
description: "Keen 1 EGA graphics data"
required: false
source_ref: "src/fileio/KeenFiles.h:41"
- name: "egadict.ck1"
category: game_data
system: commander-keen
description: "Keen 1 EGA huffman dictionary"
required: false
source_ref: "src/fileio/KeenFiles.h:43"
- name: "audio.ck1"
category: game_data
system: commander-keen
description: "Keen 1 audio data"
required: false
source_ref: "src/fileio/KeenFiles.h:44"
- name: "audiohed.ck1"
category: game_data
system: commander-keen
description: "Keen 1 audio header"
required: false
source_ref: "src/fileio/KeenFiles.h:45"
- name: "audiodct.ck1"
category: game_data
system: commander-keen
description: "Keen 1 audio dictionary"
required: false
source_ref: "src/fileio/KeenFiles.h:46"
- name: "gamemaps.ck1"
category: game_data
system: commander-keen
description: "Keen 1 level data"
required: false
source_ref: "src/fileio/KeenFiles.h:47"
- name: "maphead.ck1"
category: game_data
system: commander-keen
description: "Keen 1 level header"
required: false
source_ref: "src/fileio/KeenFiles.h:48"
# ─── Keen 4: Secret of the Oracle (full version, Galaxy episode 1) ───
- name: "egahead.ck4"
category: game_data
system: commander-keen
description: "Keen 4 EGA graphics header"
required: false
source_ref: "src/fileio/KeenFiles.h:42"
- name: "egagraph.ck4"
category: game_data
system: commander-keen
description: "Keen 4 EGA graphics data"
required: false
source_ref: "src/fileio/KeenFiles.h:41"
- name: "egadict.ck4"
category: game_data
system: commander-keen
description: "Keen 4 EGA huffman dictionary"
required: false
source_ref: "src/fileio/KeenFiles.h:43"
- name: "audio.ck4"
category: game_data
system: commander-keen
description: "Keen 4 audio data"
required: false
source_ref: "src/fileio/KeenFiles.h:44"
- name: "audiohed.ck4"
category: game_data
system: commander-keen
description: "Keen 4 audio header"
required: false
source_ref: "src/fileio/KeenFiles.h:45"
- name: "audiodct.ck4"
category: game_data
system: commander-keen
description: "Keen 4 audio dictionary"
required: false
source_ref: "src/fileio/KeenFiles.h:46"
- name: "gamemaps.ck4"
category: game_data
system: commander-keen
description: "Keen 4 level data"
required: false
source_ref: "src/fileio/KeenFiles.h:47"
- name: "maphead.ck4"
category: game_data
system: commander-keen
description: "Keen 4 level header"
required: false
source_ref: "src/fileio/KeenFiles.h:48"
# ─── Keen Dreams (episode 7) ───
- name: "KDREAMS.EXE"
category: game_data
system: commander-keen
description: "Keen Dreams executable (CExeFile reads embedded tiles)"
required: false
source_ref: "src/fileio/CExeFile.cpp:190-195"
- name: "KDREAMSDICT.EGA"
category: game_data
system: commander-keen
description: "Keen Dreams EGA huffman dictionary"
required: false
source_ref: "src/fileio/KeenFiles.h:52"
- name: "KDREAMS.AUD"
category: game_data
system: commander-keen
description: "Keen Dreams audio data"
required: false
source_ref: "src/fileio/KeenFiles.h:53"
- name: "AUDIODCT.KDR"
category: game_data
system: commander-keen
description: "Keen Dreams audio dictionary"
required: false
source_ref: "src/fileio/KeenFiles.h:54"
- name: "AUDIOHHD.KDR"
category: game_data
system: commander-keen
description: "Keen Dreams audio header"
required: false
source_ref: "src/fileio/KeenFiles.h:55"
+137
View File
@@ -0,0 +1,137 @@
emulator: piFBA (fba2x)
type: standalone
core_classification: frozen_snapshot
source: "https://github.com/recalbox/pifba"
upstream: "https://github.com/finalburn/fbalpha-fork"
profiled_date: "2026-10-04"
source_commit: "419faa7c3967560f6fa149f2f78b5aedca5b123a"
core_version: "0.2.97.x"
display_name: "Arcade (piFBA / fba2x)"
cores: [fba2x, pifba]
systems:
- arcade
- snk-neogeo-mvs
- snk-neogeo-aes
- capcom-cps1
- capcom-cps2
- capcom-cps3
- igs-pgm
verification: md5
archive_prefix: fbneo
notes: |
Recalbox's standalone ARM port of Final Burn Alpha, lineage pifba (originally
by Franxis / Oopsware for the GP2X, modernised to SDL2 by Recalbox). The
binary is installed as fba2x and runs with a ZIP path on the command line
(rpi/main.cpp:187 — "Usage: fba2x <path to rom><shortname>.zip").
BIOS and ROM archives are resolved relative to szAppRomPath, hardcoded to
"roms/" in rpi/bzip.cpp:4 and overridden only through the rom path argument.
BzipOpen (rpi/bzip.cpp:355-394) iterates BurnDrvGetZipName(z) for every
BIOS/parent slot and opens "<roms/><name>" directly — no fallback
directory walking.
Shared BIOS ROM sets flagged BDF_BOARDROM in the driver source:
- neogeo (burn/neogeo/d_neogeo.cpp) — SNK Neo Geo system BIOS
- pgm (burn/pgm/d_pgm.cpp) — IGS PGM board BIOS
CPS1 and CPS2 titles embed their program/encryption ROMs directly in each
game archive — no CPS board BIOS zip. CPS3 (burn/cps3/d_cps3.cpp) carries
the SH-2 BIOS as a BRF_BIOS member of each game's archive (red-earth,
jojo, sfiii, etc.), so there is no shared cps3.zip here either.
pifba is a FROZEN snapshot of Final Burn Alpha 0.2.97.x with ARM-specific
speedhacks (NEOGEO_HACKS, OOPSWARE_FIX, USE_SPEEDHACKS) and a reduced driver
set compared with upstream FBA / FBNeo: 32 BIOS entries in d_neogeo.cpp vs
~45 in modern FBNeo, no newer Neo Geo UniBios revisions (uni-bios.10 through
uni-bios.13 are commented out), no Hyper Street Fighter 2 refresh, and no
SNK Hyper NeoGeo 64. Keep this separate from fbalpha2012 (libretro port of
the same base) because it does not share binaries or load behaviour.
files:
# ─── Neo Geo system BIOS (archive: neogeo.zip) ───
- name: "neogeo.zip"
category: bios_zip
system: snk-neogeo-mvs
description: "SNK Neo Geo system BIOS ROM set"
required: true
archive: neogeo
source_ref: "burn/neogeo/d_neogeo.cpp:923 (BurnDrvneogeo, BDF_BOARDROM)"
contents:
- name: "vs-bios.rom"
size: 131072
crc32: "f0e8f27d"
- name: "usa_2slt.bin"
size: 131072
crc32: "e72943de"
- name: "asia-s3.rom"
size: 131072
crc32: "91b64be3"
- name: "sp1.jipan.1024"
size: 131072
crc32: "9fb0abe4"
- name: "neo-po.bin"
size: 131072
crc32: "16d0c132"
- name: "neo-epo.bin"
size: 131072
crc32: "d27a71f1"
- name: "neodebug.bin"
size: 131072
crc32: "698ebb7d"
- name: "sp-s2.sp1"
size: 131072
crc32: "9036d879"
- name: "uni-bios.rom"
size: 131072
crc32: "2d50996a"
- name: "sp-e.sp1"
size: 131072
crc32: "2723a5b5"
- name: "sp-j2.rom"
size: 131072
crc32: "acede59c"
- name: "sp-s.sp1"
size: 131072
crc32: "c7f2fa45"
- name: "sm1.sm1"
size: 131072
crc32: "97cf998b"
- name: "sfix.sfx"
size: 131072
crc32: "354029fc"
- name: "000-lo.lo"
size: 65536
crc32: "e09e253c"
- name: "236-bios.bin"
size: 131072
crc32: "853e6b96"
- name: "268-bios.bin"
size: 524288
crc32: "b4590283"
- name: "sp-4x.sp1"
size: 524288
crc32: "b4590283"
- name: "271-bios.bin"
size: 524288
crc32: "148dd727"
# ─── PGM board BIOS (archive: pgm.zip) ───
- name: "pgm.zip"
category: bios_zip
system: igs-pgm
description: "IGS PGM (Polygame Master) System BIOS ROM set"
required: true
archive: pgm
source_ref: "burn/pgm/d_pgm.cpp:255 (BurnDrvpgm, BDF_BOARDROM)"
contents:
- name: "pgm_p01s.rom"
size: 131072
crc32: "e42b166e"
- name: "pgm_t01s.rom"
size: 2097152
crc32: "1a7123a0"
- name: "pgm_m01s.rom"
size: 2097152
crc32: "45ae7159"
+88
View File
@@ -0,0 +1,88 @@
emulator: Hydra Castle Labyrinth
type: standalone
core_classification: game_engine
source: "https://github.com/ptitSeb/hydracastlelabyrinth"
upstream: "https://github.com/ptitSeb/hydracastlelabyrinth"
profiled_date: "2026-10-04"
source_commit: "e31648688434a789e3056e52cdf1b9a842eeed48"
core_version: ~
display_name: "Hydra Castle Labyrinth (hcl)"
cores: [hcl]
systems: []
verification: existence
notes: |
Open-source port of E. Hashimoto's 2008 Japanese freeware Metroidvania Hydra
Castle Labyrinth. ptitSeb's SDL/SDL2/SDL3 fork is used by batocera (the
package batocera/ports/hcl pins HCL_VERSION to this commit).
The engine opens every data file from a relative "data/" prefix hard-coded
in the sources:
- qda.c:19 — strcpy(fullPath, "data/") before appending qda chunk names
- hero.c:202 — fopen("data/save.tmp", "rb")
- sdl2/audio.c:30 — strcpy(buff, "data/") before midi/wav loads
- sdl2/graphics.c, sdl3/graphics.c — fopen("data/bmp.qda", "rb")
- game.h:184 — savename macro = "data/save.tmp"
Save files are rewritten in that same relative data/ tree, so the game must
be launched from a working directory that contains data/ (batocera copies
the shipped data/ beside the binary).
The 31 MB data/ tree is shipped in the source repository and is open content.
Nothing else is required.
files:
- name: "bmp.qda"
path: "data/bmp.qda"
category: game_data
description: "Packed graphics (QDA archive of all bitmaps)"
required: true
bundled: true
source_ref: "src/sdl2/graphics.c:229 (fopen \"data/bmp.qda\" rb)"
- name: "en.dat"
path: "data/en.dat"
category: game_data
description: "English localization"
required: true
bundled: true
source_ref: "src/text.c (loaded via data/ prefix)"
- name: "jp.dat"
path: "data/jp.dat"
category: game_data
description: "Japanese localization"
required: true
bundled: true
source_ref: "src/text.c"
- name: "map"
path: "data/map"
category: game_data
description: "Level maps directory (060 .map files)"
required: true
bundled: true
source_ref: "src/stagedata.c (loads data/map/<nnn>.map)"
- name: "obj"
path: "data/obj"
category: game_data
description: "Per-stage object definitions directory"
required: true
bundled: true
source_ref: "src/stagedata.c (loads data/obj/<nnn>.dat)"
- name: "midi"
path: "data/midi"
category: game_data
description: "Music files (.mid + .ogg companions)"
required: false
bundled: true
source_ref: "src/sdl2/audio.c:30 (data/ prefix for midi loads)"
- name: "wav"
path: "data/wav"
category: game_data
description: "Sound effect samples"
required: false
bundled: true
source_ref: "src/sdl2/audio.c (data/wav/<name>.wav)"
+86
View File
@@ -0,0 +1,86 @@
emulator: Hurrican
type: standalone
core_classification: game_engine
source: "https://github.com/HurricanGame/Hurrican"
upstream: "https://github.com/HurricanGame/Hurrican"
profiled_date: "2026-10-04"
source_commit: "0d91d1f2d40f38d21e7f41afc01369ee55649fb6"
core_version: ~
display_name: "Hurrican"
cores: [hurrican]
systems: []
verification: existence
notes: |
Open-source Turrican-inspired platformer by Poke53280 / HurricanGame. The
tree ships all shipping assets under Hurrican/data/ (93 MB): textures,
levels, music, sfx, shaders, plus a bundled gamecontrollerdb.txt.
The engine resolves two paths at startup, both set in Hurrican/src/Main.cpp
(main() at line 342):
* g_storage_ext — the data root used for every asset load. Taken from the
-data= CLI flag first (Main.cpp:349-353), then from the compile-time
USE_STORAGE_PATH macro (355-363), falling back to "." (365).
* g_save_ext / g_config_ext — the user-writable save and config directory,
from -save= CLI flag then XDG_DATA_HOME/XDG_CONFIG_HOME under UNIX
(369-389).
Everything the game loads is under <g_storage_ext>/data/:
data/textures/* — DX8Font.cpp:160, DX8Graphics.cpp:393-407 (shaders),
TextureAtlas class and loadImageSDL calls
data/shaders/<glsl_ver>/ — DX8Graphics.cpp:393-407 (vert/frag per renderer)
data/levels/<name>.lev — Tileengine.cpp:324-330
data/music/ — SoundManager Mp3/OGG loads
data/sfx/ — SoundManager LoadSound
data/gamecontrollerdb.txt (joystick remapping)
All data is open content; no retail or BIOS files needed.
files:
- name: "textures"
path: "data/textures"
category: game_data
description: "Game textures (sprites, backgrounds, fonts)"
required: true
bundled: true
source_ref: "src/DX8Font.cpp:160 (data/textures/ prefix on every font load)"
- name: "levels"
path: "data/levels"
category: game_data
description: "Level files (.lev)"
required: true
bundled: true
source_ref: "src/Tileengine.cpp:324-330 (data/levels/<name>.lev + custom lists)"
- name: "shaders"
path: "data/shaders"
category: game_data
description: "GLSL shader sources per version subdirectory"
required: true
bundled: true
source_ref: "src/DX8Graphics.cpp:393-407 (data/shaders/<glsl_version>/*)"
- name: "music"
path: "data/music"
category: game_data
description: "Music tracks"
required: false
bundled: true
source_ref: "src/SoundManager.cpp (data/music/ prefix for LoadMp3/LoadOgg)"
- name: "sfx"
path: "data/sfx"
category: game_data
description: "Sound effect samples"
required: false
bundled: true
source_ref: "src/SoundManager.cpp (data/sfx/ prefix for LoadSound)"
- name: "gamecontrollerdb.txt"
path: "data/gamecontrollerdb.txt"
category: game_data
description: "SDL gamecontroller mapping database"
required: false
bundled: true
source_ref: "src/DirectInput.cpp (data/gamecontrollerdb.txt)"
+191
View File
@@ -0,0 +1,191 @@
emulator: Ikemen GO
type: standalone
core_classification: game_engine
source: "https://github.com/ikemen-engine/Ikemen-GO"
upstream: "https://github.com/ikemen-engine/Ikemen-GO"
profiled_date: "2026-10-04"
source_commit: "02a078d6bf189ff56bbcbbbc8dbfd81753692c56"
core_version: ~
display_name: "Ikemen GO"
cores: [ikemen]
systems: []
verification: existence
notes: |
Open-source M.U.G.E.N.-compatible 2D fighting game engine, written in Go.
Reads the Elecbyte .def / .air / .cmd / .cns / .sff / .snd files that
commercial and community M.U.G.E.N. content ships with.
The binary comes with the engine's own motif-neutral core data (bundled with
the install, not retail BIOS):
data/ — common definitions, stage shell, screenpack parameters
(action.zss, common.air, common.cmd, common.const,
common1.cns.zss, dizzy.zss, functions.zss, guardbreak.zss,
score.zss, system.base.def, tag.zss, training.zss)
external/ — icons, mods template, lua scripts, GLSL shaders
font/ — fallback TTF fonts (Open Sans) and 3x5 bitmap fonts
(default-3x5-bold.def/sff, default-3x5.def/sff, debug.def)
Characters, stages, and motifs are user-supplied. system.go:2630 and
script.go:1174 enforce the convention that any character path lacking the
"chars/" prefix is rewritten to "chars/<name>", so content drops into
chars/, stages/, data/<motif>/ under the install root.
Nothing in Ikemen itself is a BIOS. The engine refuses to run with no motif,
but ships a stub select screen and the common.* lifebar config, so a user
character and stage are enough to boot.
files:
- name: "system.base.def"
path: "data/system.base.def"
category: game_data
description: "Screenpack / motif parameter reference"
required: true
bundled: true
source_ref: "src/system.go (default screenpack parsing)"
- name: "common.cmd"
path: "data/common.cmd"
category: game_data
description: "Common character command set (fallback for chars missing CMD)"
required: true
bundled: true
source_ref: "src/char.go (common.cmd lookup for every loaded character)"
- name: "common.air"
path: "data/common.air"
category: game_data
description: "Common animations (fallback for chars missing AIR)"
required: true
bundled: true
source_ref: "src/char.go"
- name: "common.const"
path: "data/common.const"
category: game_data
description: "Common constants (gravity, speeds)"
required: true
bundled: true
source_ref: "src/char.go"
- name: "common1.cns.zss"
path: "data/common1.cns.zss"
category: game_data
description: "Common state controllers (ZSS)"
required: true
bundled: true
source_ref: "src/char.go (ZSS state handler)"
- name: "action.zss"
path: "data/action.zss"
category: game_data
description: "Default engine action script"
required: true
bundled: true
source_ref: "src/system.go"
- name: "functions.zss"
path: "data/functions.zss"
category: game_data
description: "Shared ZSS helper functions"
required: true
bundled: true
source_ref: "src/system.go"
- name: "score.zss"
path: "data/score.zss"
category: game_data
description: "Score system script"
required: true
bundled: true
source_ref: "src/system.go"
- name: "tag.zss"
path: "data/tag.zss"
category: game_data
description: "Tag-team mode script"
required: true
bundled: true
source_ref: "src/system.go"
- name: "dizzy.zss"
path: "data/dizzy.zss"
category: game_data
description: "Dizzy/stun state script"
required: true
bundled: true
source_ref: "src/system.go"
- name: "guardbreak.zss"
path: "data/guardbreak.zss"
category: game_data
description: "Guard-break state script"
required: true
bundled: true
source_ref: "src/system.go"
- name: "training.zss"
path: "data/training.zss"
category: game_data
description: "Training mode script"
required: true
bundled: true
source_ref: "src/system.go"
- name: "default-3x5.sff"
path: "font/default-3x5.sff"
category: game_data
description: "Default 3x5 bitmap font sprites"
required: true
bundled: true
source_ref: "src/font.go, data/system.base.def [Files]"
- name: "default-3x5.def"
path: "font/default-3x5.def"
category: game_data
description: "Default 3x5 bitmap font definition"
required: true
bundled: true
source_ref: "src/font.go"
- name: "default-3x5-bold.sff"
path: "font/default-3x5-bold.sff"
category: game_data
description: "Default 3x5 bold bitmap font sprites"
required: true
bundled: true
source_ref: "src/font.go"
- name: "default-3x5-bold.def"
path: "font/default-3x5-bold.def"
category: game_data
description: "Default 3x5 bold bitmap font definition"
required: true
bundled: true
source_ref: "src/font.go"
- name: "debug.def"
path: "font/debug.def"
category: game_data
description: "Debug overlay font"
required: false
bundled: true
source_ref: "src/font.go"
- name: "chars"
category: game_data
description: "User-supplied character directory (name resolved via chars/<name>)"
required: false
source_ref: "src/system.go:2630, src/script.go:1174 (prefix enforcement)"
note: >
Not shipped: user drops MUGEN-compatible characters under chars/. Each
character directory contains its own .def, .cmd, .cns, .air, .sff, .snd.
- name: "stages"
category: game_data
description: "User-supplied stage directory"
required: false
source_ref: "src/resources/defaultConfig.json:112 (StartStage default)"
note: >
Not shipped: user drops MUGEN-compatible stages under stages/. Default
configuration asks for stages/stage1.def.
+24
View File
@@ -0,0 +1,24 @@
emulator: Pygame
type: launcher
core_classification: launcher
source: "https://github.com/pygame/pygame"
upstream: "https://github.com/pygame/pygame"
profiled_date: "2026-10-04"
source_commit: "b92c0da9d1b5eba6c813138790fc1ab6cea0252c"
core_version: "2.6.1"
display_name: "Pygame"
cores: [pygame, python-pygame2]
systems: []
verification: existence
notes: |
Pygame is not an emulator or game engine with its own BIOS. It is the SDL2
bindings for Python, used by batocera as a launcher that runs user-supplied
Python scripts (file.py) as the "ROM". Batocera's package
batocera/emulators/python-pygame2 pins the standard pygame/pygame 2.6.1
wheel; nothing about pygame itself ships game data.
The content executed by this launcher is the user's own Python file,
which plays the role of the cartridge. No file in the pack belongs here.
files: []
+36
View File
@@ -0,0 +1,36 @@
emulator: Pyxel
type: standalone
core_classification: game_engine
source: "https://github.com/kitao/pyxel"
upstream: "https://github.com/kitao/pyxel"
profiled_date: "2026-10-04"
source_commit: "50f9bd77780c993aca62b5b221766bde5791081d"
core_version: "v2.9.9"
display_name: "Pyxel"
cores: [pyxel]
systems: []
verification: existence
notes: |
Retro game engine for Python by Takashi Kitao. The engine is a Python
package with a Rust-based extension (crates/pyxel-core, built via maturin).
Pyxel programs are either .py scripts that import pyxel or self-contained
.pyxapp bundles (zip archives containing a startup script plus assets).
There is no external BIOS, firmware, or retail data to collect. Everything
the engine needs ships inside the Python wheel:
python/pyxel/ — Python API, fonts, shader, examples
crates/pyxel-core/ — Rust engine (compiled as pyxel_extension)
crates/pyxel-platform/ — SDL2 wrapper
crates/pyxel-wrapper/ — Python ↔ Rust glue (PyO3)
Batocera's packaging (package/batocera/emulators/python-pyxel/python-pyxel.mk)
installs the wheel into site-packages, drops the examples, and provides a
pyxel.keys evmapy layout. The content run by Pyxel is the user's .pyxapp or
.py file, which plays the role of a cartridge; those are user content, not
pack contents.
The engine refuses nothing on startup; a bare `pyxel init` plus a user
script is enough to run.
files: []
+99
View File
@@ -0,0 +1,99 @@
emulator: The Force Engine
type: standalone
core_classification: game_engine
source: "https://github.com/luciusDXL/TheForceEngine"
upstream: "https://github.com/luciusDXL/TheForceEngine"
profiled_date: "2026-10-04"
source_commit: "cc25205cc94c36a396f6f50295772f6ec83069a2"
core_version: "v1.22.420"
display_name: "The Force Engine"
cores: [theforceengine, tfe]
systems: [dark-forces, outlaws]
verification: existence
notes: |
Modern Jedi engine reimplementation by Lucius Dark, supporting LucasArts
Dark Forces (shipping) and Outlaws (in-progress).
TFE itself bundles the engine data under TheForceEngine/ in the source tree,
which batocera.ports/theforceengine.mk rsyncs to
/usr/share/batocera/datainit/system/configs/theforceengine/ on install:
Captions/ Documentation/ ExternalData/ Fonts/
Mods/ Shaders/ SoundFonts/ UI_Text/ UI_Images/
The user is expected to supply the retail game data. Dark Forces is probed
by checking for DARK.GOB in the configured source-data path
(TheForceEngine/main.cpp:484-485, with PATH_SOURCE_DATA from TFE_Paths).
Dark Forces loader list (TFE_DarkForces/darkForcesMain.cpp:70-83):
c_gobFileNames[] = DARK.GOB, SOUNDS.GOB, TEXTURES.GOB, SPRITES.GOB
c_optionalGobFileNames[] = enhanced.gob
The DOS retail Dark Forces floppy and CD both ship DARK.GOB, SOUNDS.GOB,
TEXTURES.GOB, SPRITES.GOB; enhanced.gob is the TFE-only HD asset pack.
Dark Forces official patch v1.22 (df_patch4) is pulled by the build script as
df_patch4.zip from df-21.net and dropped under Mods/, so the engine applies
the retail v1.22 patches on top of any user retail install (THEFORCEENGINE_
PATCH_SOURCE in the batocera mk). The patch itself is bundled with the
emulator, not with the retail data.
Outlaws loader (TFE_Outlaws/outlawsMain.cpp) looks for the Outlaws retail
data in a separate configured directory. The level/sound/texture GOBs it
needs are OL.GOB (Outlaws main .gob) and the game's .LAB packages.
files:
- name: "DARK.GOB"
category: game_data
system: dark-forces
description: "Dark Forces main data archive (levels, briefings, scripts)"
required: true
source_ref: "TheForceEngine/TFE_DarkForces/darkForcesMain.cpp:74 (c_gobFileNames[0]), main.cpp:484-485 (install detection)"
- name: "SOUNDS.GOB"
category: game_data
system: dark-forces
description: "Dark Forces audio archive"
required: true
source_ref: "TheForceEngine/TFE_DarkForces/darkForcesMain.cpp:75 (c_gobFileNames[1])"
- name: "TEXTURES.GOB"
category: game_data
system: dark-forces
description: "Dark Forces texture archive"
required: true
source_ref: "TheForceEngine/TFE_DarkForces/darkForcesMain.cpp:76 (c_gobFileNames[2])"
- name: "SPRITES.GOB"
category: game_data
system: dark-forces
description: "Dark Forces sprite archive"
required: true
source_ref: "TheForceEngine/TFE_DarkForces/darkForcesMain.cpp:77 (c_gobFileNames[3])"
- name: "enhanced.gob"
category: game_data
system: dark-forces
description: "Optional enhanced HD asset pack"
required: false
source_ref: "TheForceEngine/TFE_DarkForces/darkForcesMain.cpp (c_optionalGobFileNames)"
- name: "OL.GOB"
category: game_data
system: outlaws
description: "Outlaws main data archive"
required: false
source_ref: "TheForceEngine/TFE_Outlaws/outlawsMain.cpp"
- name: "OLSFX.GOB"
category: game_data
system: outlaws
description: "Outlaws sound effects archive"
required: false
source_ref: "TheForceEngine/TFE_Outlaws/outlawsMain.cpp"
- name: "OLMUSIC.GOB"
category: game_data
system: outlaws
description: "Outlaws music archive"
required: false
source_ref: "TheForceEngine/TFE_Outlaws/outlawsMain.cpp"