OpenJazz - RetroBIOS¶
Technical notes
Open-source reimplementation of Jazz Jackrabbit 1 (Epic MegaGames, 1994). Reads the original DOS game data; 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; 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
28 files | 10 required, 18 optional | 25 in repo, 3 missing Categories: 28 game data
PANEL.000 required in repo game_data
- System: jazz-jackrabbit
- Source:
src/main.cpp:281 - Status bar sprites plus two embedded fonts. Fatal if absent.
FONT2.0FN required in repo game_data
- System: jazz-jackrabbit
- Source:
src/main.cpp:312,src/main.cpp:318-333,src/io/gfx/font.cpp:60-64 - Startup font. File::File throws when absent and startup aborts.
FONTBIG.0FN required in repo game_data
- System: jazz-jackrabbit
- Source:
src/main.cpp:313,src/main.cpp:318-333
FONTINY.0FN required in repo game_data
- System: jazz-jackrabbit
- Source:
src/main.cpp:314,src/main.cpp:318-333
FONTMN1.0FN required in repo game_data
- System: jazz-jackrabbit
- Source:
src/main.cpp:315,src/main.cpp:318-333
FONTMN2.0FN required in repo game_data
- System: jazz-jackrabbit
- Source:
src/main.cpp:316,src/main.cpp:318-333
STARTUP.0SC required in repo game_data
- System: jazz-jackrabbit
- Source:
src/main.cpp:435-443 - Opening cutscene. play() returns the error before the menu when it is absent.
MENU.000 required in repo game_data
- System: jazz-jackrabbit
- Source:
src/menu/mainmenu.cpp:72-82,src/main.cpp:458-466 - Main menu graphics. The MainMenu constructor throws when it is absent.
SOUNDS.000 optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/io/sound.cpp:278,src/io/sound.cpp:478-485 - Digital sound effects. loadSounds returns false when absent and the engine runs without sfx.
MENUSNG.PSM optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/main.cpp:408,src/io/sound.cpp:337-344 - Menu music. playMusic returns silently when the file is absent.
INSTRUCT.0SC optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/menu/mainmenu.cpp:177-187 - Instructions screen.
ORDER.0SC optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/menu/mainmenu.cpp:209-217 - Order information screen.
MACRO.1 optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/menu/mainmenu.cpp:277-289 - Demo recording played when the menu idles. MACRO.1 to MACRO.4 are probed.
END.0SC optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/main.cpp:479-489 - Cutscene played when the main menu is left.
FONTS.000 required in repo game_data
- System: jazz-jackrabbit
- Source:
src/io/gfx/font.cpp:288-292,src/jj1/level/jj1levelload.cpp:412-421 - Level font. JJ1Level::load returns the error when it is absent.
MAINCHAR.000 required in repo game_data
- System: jazz-jackrabbit
- Source:
src/jj1/level/jj1levelload.cpp:223 - Jazz sprite sheet. Required to start any level.
BONUS.000 optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/jj1/bonuslevel/jj1bonuslevel.cpp:53-61,src/jj1/bonuslevel/jj1bonuslevel.cpp:204-206,src/io/gfx/font.cpp:292 - Bonus level sprites and the bonus-screen font.
BONUS.0SC optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/jj1/bonuslevel/jj1bonuslevel.cpp:764-766 - Cutscene played when a bonus level is won.
LEVEL0.000 optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/menu/gamemenu.cpp:324-325,src/menu/gamemenu.cpp:557-561 - First level of world 0, the opener of episode 1.
PLANET.000 optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/jj1/level/jj1levelload.cpp:437-473 - World intro planet screen (name + preview). The level loads under the name CUSTOM when it is absent.
BLOCKS.000 optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/jj1/level/jj1levelload.cpp:577-599 - World 0 tileset. The extension is the world number unless the level names another one.
SPRITES.000 optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/jj1/level/jj1levelload.cpp:602-609 - World 0 enemy/object sprites. One file per world.
BONUSMAP.000 optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/jj1/level/jj1level.cpp:690,src/menu/gamemenu.cpp:324,src/menu/gamemenu.cpp:570 - Bonus level map for episode 1.
LEVEL0.001 optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/jj1/level/jj1level.cpp:794-801 - First level of world 1, reached from the level data of world 0.
LEVEL0.002 optional in repo game_data
- System: jazz-jackrabbit
- Source:
src/jj1/level/jj1level.cpp:794-801
LEVEL0.003 optional missing game_data
- System: jazz-jackrabbit
- Source:
src/menu/gamemenu.cpp:557-561,src/jj1/jj1episodeutils.cpp:26-28 - First level of world 3, the opener of episode 2.
LEVEL0.004 optional missing game_data
- System: jazz-jackrabbit
- Source:
src/jj1/level/jj1level.cpp:794-801
LEVEL0.005 optional missing game_data
- System: jazz-jackrabbit
- Source:
src/jj1/level/jj1level.cpp:794-801
Generated on 2026-10-10T11:26:01Z