Files
libretro/emulators/openjazz.yml
T
Abdessamad Derraz 4231902a6c docs: write prose without dashes or semicolons
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms.

validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.
2026-10-19 06:47:31 +02:00

249 lines
8.3 KiB
YAML

emulator: OpenJazz
type: standalone
core_classification: game_engine
source: "https://github.com/AlisterT/openjazz"
upstream: "https://github.com/AlisterT/openjazz"
profiled_date: "2026-10-04"
source_commit: "a1626f4edd4a7af72c54103021790c56d8ecfced"
core_version: "20260301"
display_name: "Jazz Jackrabbit (OpenJazz)"
cores: []
systems: [jazz-jackrabbit]
notes: |
Open-source reimplementation of Jazz Jackrabbit 1 (Epic MegaGames,
1994). Reads the original DOS game data, with no asset bundling in the
engine binary.
File lookup walks a path list (platform paths, command-line paths,
binary directory, working directory, compiled-in DATAPATH) and opens
the first match.
ref: src/io/file.cpp:51-77 (File::File), src/main.cpp:186-220
PANEL.000 is the first file opened at startup, and the engine aborts with
"Unable to find game data files" if that probe fails. The five .0FN
fonts follow and abort startup the same way.
ref: src/main.cpp:279-295, src/main.cpp:308-333
Level, tileset, sprite and planet names are built by createFileName():
LEVEL<n>.<world>, BLOCKS.<world>, SPRITES.<world>, PLANET.<world>,
with a three-digit world extension. The episode menu enables an
episode when LEVEL0.<world> exists for its first world (0, 3, 6, 9,
12, 15, then 30, 33, 36 and 50).
ref: src/util.cpp:123-193, src/jj1/jj1episodeutils.cpp:19-36,
src/menu/gamemenu.cpp:557-566
JJ2 engine support is experimental and gated by `ENABLE_JJ2` at build
time (off by default). It reads JJ2's .j2l/.j2t files directly (no
conversion step).
ref: CMakeLists.txt:241-255, src/jj2/level/jj2level.cpp:54-67
files:
# ================================================================
# Required files (startup aborts without them)
# ================================================================
- name: "PANEL.000"
category: game_data
system: jazz-jackrabbit
required: true
source_ref: "src/main.cpp:281 (fatal: \"Unable to find game data files\")"
note: "Status bar sprites plus two embedded fonts. Fatal if absent."
- name: "FONT2.0FN"
category: game_data
system: jazz-jackrabbit
required: true
source_ref: "src/main.cpp:312, 318-333, src/io/gfx/font.cpp:60-64"
note: "Startup font. File::File throws when absent and startup aborts."
- name: "FONTBIG.0FN"
category: game_data
system: jazz-jackrabbit
required: true
source_ref: "src/main.cpp:313, 318-333"
- name: "FONTINY.0FN"
category: game_data
system: jazz-jackrabbit
required: true
source_ref: "src/main.cpp:314, 318-333"
- name: "FONTMN1.0FN"
category: game_data
system: jazz-jackrabbit
required: true
source_ref: "src/main.cpp:315, 318-333"
- name: "FONTMN2.0FN"
category: game_data
system: jazz-jackrabbit
required: true
source_ref: "src/main.cpp:316, 318-333"
- name: "STARTUP.0SC"
category: game_data
system: jazz-jackrabbit
required: true
source_ref: "src/main.cpp:435-443"
note: "Opening cutscene. play() returns the error before the menu when it is absent."
- name: "MENU.000"
category: game_data
system: jazz-jackrabbit
required: true
source_ref: "src/menu/mainmenu.cpp:72-82, src/main.cpp:458-466"
note: "Main menu graphics. The MainMenu constructor throws when it is absent."
- name: "SOUNDS.000"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/io/sound.cpp:278, 478-485"
note: "Digital sound effects. loadSounds returns false when absent and the engine runs without sfx."
- name: "MENUSNG.PSM"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/main.cpp:408, src/io/sound.cpp:337-344"
note: "Menu music. playMusic returns silently when the file is absent."
# ================================================================
# Menu extras (each reports its absence and returns to the menu)
# ================================================================
- name: "INSTRUCT.0SC"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/menu/mainmenu.cpp:177-187"
note: "Instructions screen."
- name: "ORDER.0SC"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/menu/mainmenu.cpp:209-217"
note: "Order information screen."
- name: "MACRO.1"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/menu/mainmenu.cpp:277-289"
note: "Demo recording played when the menu idles. MACRO.1 to MACRO.4 are probed."
- name: "END.0SC"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/main.cpp:479-489"
note: "Cutscene played when the main menu is left."
# ================================================================
# Required when entering gameplay (level load fails without them)
# ================================================================
- name: "FONTS.000"
category: game_data
system: jazz-jackrabbit
required: true
source_ref: "src/io/gfx/font.cpp:288-292, src/jj1/level/jj1levelload.cpp:412-421"
note: "Level font. JJ1Level::load returns the error when it is absent."
- name: "MAINCHAR.000"
category: game_data
system: jazz-jackrabbit
required: true
source_ref: "src/jj1/level/jj1levelload.cpp:223 (JJ1Level::load player sprites)"
note: "Jazz sprite sheet. Required to start any level."
- name: "BONUS.000"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/jj1/bonuslevel/jj1bonuslevel.cpp:53-61, 204-206, src/io/gfx/font.cpp:292"
note: "Bonus level sprites and the bonus-screen font."
- name: "BONUS.0SC"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/jj1/bonuslevel/jj1bonuslevel.cpp:764-766"
note: "Cutscene played when a bonus level is won."
# ================================================================
# Level data. Not every episode is required to run, since a user may
# own only one. The episode menu probes LEVEL0.<world> for the first
# world of each episode, and the levels that follow are named by the
# level data itself (next level and next world numbers).
# ================================================================
- name: "LEVEL0.000"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/menu/gamemenu.cpp:324-325, 557-561"
note: "First level of world 0, the opener of episode 1."
- name: "PLANET.000"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/jj1/level/jj1levelload.cpp:437-473"
note: "World intro planet screen (name + preview). The level loads under the name CUSTOM when it is absent."
- name: "BLOCKS.000"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/jj1/level/jj1levelload.cpp:577-599"
note: "World 0 tileset. The extension is the world number unless the level names another one."
- name: "SPRITES.000"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/jj1/level/jj1levelload.cpp:602-609"
note: "World 0 enemy/object sprites. One file per world."
- name: "BONUSMAP.000"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/jj1/level/jj1level.cpp:690, src/menu/gamemenu.cpp:324,570"
note: "Bonus level map for episode 1."
- name: "LEVEL0.001"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/jj1/level/jj1level.cpp:794-801"
note: "First level of world 1, reached from the level data of world 0."
- name: "LEVEL0.002"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/jj1/level/jj1level.cpp:794-801"
- name: "LEVEL0.003"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/menu/gamemenu.cpp:557-561, src/jj1/jj1episodeutils.cpp:26-28"
note: "First level of world 3, the opener of episode 2."
- name: "LEVEL0.004"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/jj1/level/jj1level.cpp:794-801"
- name: "LEVEL0.005"
category: game_data
system: jazz-jackrabbit
required: false
source_ref: "src/jj1/level/jj1level.cpp:794-801"