Jazz² Resurrection - RetroBIOS¶
Technical notes
Open-source reimplementation of Jazz Jackrabbit 2 by Dan R. The engine ships its own Content/ tree (animations, metadata, translations) that sits next to the executable in a portable copy, or under <prefix>/share/<package>/ once installed. ref: Sources/Jazz2/ContentResolver.cpp:191-243 (GetContentPath per platform), Sources/Jazz2/ContentResolver.cpp:415-491 (Unix layouts)
Original Jazz Jackrabbit 2 data is read from Source/ and converted on first launch into the engine's own formats under Cache/: Anims.j2a and Data.j2d into a package, then every .j2e, .j2l and the tilesets the levels name. Music and cinematics are read from Source/ as they are. ref: Sources/Jazz2/ContentResolver.cpp:285-314 (GetSourcePath), Sources/Main.cpp:2226-2290 (RefreshCache), Sources/Jazz2/Compatibility/AssetConverter.cpp:152-168, Sources/Jazz2/Compatibility/AssetConverter.cpp:400-520
Content/ is the engine runtime, shipped with the release package. Source/ holds the user's own copy of the 1998 game data. Without Anims.j2a (or the shareware AnimsSw.j2a) and without an existing cache the engine starts but is not playable.
The libretro build looks for Content/ next to the loaded file, in the core assets directory or in <system>/jazz2/, and for the original files in Source/ beside it, in the system directory itself or in <system>/jazz2/Source/. ref: Sources/Main.cpp:267-355
35 files | 3 required, 32 optional | 27 in repo, 8 missing Categories: 35 game data
Animations/ required in repo game_data bundled directory
- Path:
jazz2/Content/Animations/ - Source:
Sources/Jazz2/ContentResolver.cpp:1164,Sources/Jazz2/ContentResolver.cpp:1294,Sources/Jazz2/ContentResolver.cpp:2837-2838 - Native graphics, sounds and the UI fonts, opened through OpenContentFile.
Metadata/ required in repo game_data bundled directory
- Path:
jazz2/Content/Metadata/ - Source:
Sources/Jazz2/ContentResolver.cpp:910 - Actor .res descriptors (Common, Enemy, Player, UI, Boss, ...).
Translations/ optional in repo game_data bundled directory
- Path:
jazz2/Content/Translations/ - Source:
Sources/Main.cpp:2021-2027,Sources/Jazz2/UI/Menu/LanguageSelectSection.cpp:82-88 - Language .mo bundles, searched in Cache/Translations/ first. Built-in English is used when none is loaded.
Anims.j2a required missing game_data
- Path:
jazz2/Source/Anims.j2a - System: jazz-jackrabbit-2
- Source:
Sources/Main.cpp:2226-2242,Sources/Jazz2/Compatibility/AssetConverter.cpp:156-159 - Main animation archive. The cache cannot be created without it and the game is not flagged playable.
AnimsSw.j2a optional in repo game_data
- Path:
jazz2/Source/AnimsSw.j2a - System: jazz-jackrabbit-2
- Source:
Sources/Main.cpp:2229-2231 - Animation archive of the shareware demo, read when Anims.j2a is absent.
Data.j2d optional in repo game_data
- Path:
jazz2/Source/Data.j2d - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:161-164 - Converted into the cache package when present.
prince.j2e optional in repo game_data
- Path:
jazz2/Source/prince.j2e - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:184-191,Sources/Jazz2/Compatibility/AssetConverter.cpp:310-312,Sources/Jazz2/Compatibility/AssetConverter.cpp:407-436 - First episode of the chain prince, rescue, flash, monk.
rescue.j2e optional in repo game_data
- Path:
jazz2/Source/rescue.j2e - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:193-199,Sources/Jazz2/Compatibility/AssetConverter.cpp:313-314,Sources/Jazz2/Compatibility/AssetConverter.cpp:407-436 - Second episode of the chain.
flash.j2e optional in repo game_data
- Path:
jazz2/Source/flash.j2e - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:201-208,Sources/Jazz2/Compatibility/AssetConverter.cpp:315-316,Sources/Jazz2/Compatibility/AssetConverter.cpp:407-436 - Third episode of the chain.
monk.j2e optional in repo game_data
- Path:
jazz2/Source/monk.j2e - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:210-215,Sources/Jazz2/Compatibility/AssetConverter.cpp:317-318,Sources/Jazz2/Compatibility/AssetConverter.cpp:407-436 - Fourth episode of the chain.
share.j2e optional in repo game_data
- Path:
jazz2/Source/share.j2e - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:217-219,Sources/Jazz2/Compatibility/AssetConverter.cpp:290-291,Sources/Jazz2/Compatibility/AssetConverter.cpp:407-436 - Shareware Demo episode.
xmas98.j2e optional missing game_data
- Path:
jazz2/Source/xmas98.j2e - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:292-293,Sources/Jazz2/Compatibility/AssetConverter.cpp:412,Sources/Jazz2/Compatibility/AssetConverter.cpp:420-421,Sources/Jazz2/Compatibility/AssetConverter.cpp:434 - Holiday Hare '98. Stored under the name xmas99 and skipped when xmas99.j2e is present.
xmas99.j2e optional missing game_data
- Path:
jazz2/Source/xmas99.j2e - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:182,Sources/Jazz2/Compatibility/AssetConverter.cpp:221-223,Sources/Jazz2/Compatibility/AssetConverter.cpp:294-295 - The Christmas Chronicles.
secretf.j2e optional missing game_data
- Path:
jazz2/Source/secretf.j2e - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:225-233,Sources/Jazz2/Compatibility/AssetConverter.cpp:296-297,Sources/Jazz2/Compatibility/AssetConverter.cpp:407-436 - The Secret Files episode.
home.j2e optional in repo game_data
- Path:
jazz2/Source/home.j2e - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:423-429 - Entry that lists custom levels.
share1.j2l optional in repo game_data
- Path:
jazz2/Source/share1.j2l - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:217,Sources/Jazz2/Compatibility/AssetConverter.cpp:437-499 - First level of share.j2e, stored as share/01_share1. Its exit names share2.
share2.j2l optional in repo game_data
- Path:
jazz2/Source/share2.j2l - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:218,Sources/Jazz2/Compatibility/AssetConverter.cpp:437-499 - Second level of the Shareware Demo episode. Its exit names share3.
share3.j2l optional in repo game_data
- Path:
jazz2/Source/share3.j2l - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:219,Sources/Jazz2/Compatibility/AssetConverter.cpp:437-499 - Third level of the Shareware Demo episode. Its exit ends the episode.
sharectf.j2l optional in repo game_data
- Path:
jazz2/Source/sharectf.j2l - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:54,Sources/Jazz2/Compatibility/AssetConverter.cpp:437-499 - Capture the flag level of the Shareware Demo, stored under unknown/.
sharect2.j2l optional in repo game_data
- Path:
jazz2/Source/sharect2.j2l - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:54,Sources/Jazz2/Compatibility/AssetConverter.cpp:437-499 - Capture the flag level of the Shareware Demo, stored under unknown/.
sharetrs.j2l optional in repo game_data
- Path:
jazz2/Source/sharetrs.j2l - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/AssetConverter.cpp:54,Sources/Jazz2/Compatibility/AssetConverter.cpp:437-499 - Treasure hunt level of the Shareware Demo, stored under unknown/.
labrat1n.j2t optional in repo game_data
- Path:
jazz2/Source/labrat1n.j2t - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/JJ2Level.cpp:124,Sources/Jazz2/Compatibility/JJ2Level.cpp:772-775,Sources/Jazz2/Compatibility/AssetConverter.cpp:492,Sources/Jazz2/Compatibility/AssetConverter.cpp:579-600 - Tileset named by share1.j2l, sharect2.j2l and sharetrs.j2l.
psych2.j2t optional in repo game_data
- Path:
jazz2/Source/psych2.j2t - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/JJ2Level.cpp:124,Sources/Jazz2/Compatibility/JJ2Level.cpp:772-775,Sources/Jazz2/Compatibility/AssetConverter.cpp:492,Sources/Jazz2/Compatibility/AssetConverter.cpp:579-600 - Tileset named by share2.j2l.
diam2.j2t optional in repo game_data
- Path:
jazz2/Source/diam2.j2t - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/JJ2Level.cpp:124,Sources/Jazz2/Compatibility/JJ2Level.cpp:772-775,Sources/Jazz2/Compatibility/AssetConverter.cpp:492,Sources/Jazz2/Compatibility/AssetConverter.cpp:579-600 - Tileset named by share3.j2l and sharectf.j2l.
menu.j2b optional in repo game_data
- Path:
jazz2/Source/menu.j2b - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/UI/Menu/MainMenu.cpp:509-511,Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542 - Main menu music.
bonus2.j2b optional missing game_data
- Path:
jazz2/Source/bonus2.j2b - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/UI/Menu/MainMenu.cpp:503-504,Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542 - Menu music of the reforged main menu, picked at random with bonus3.j2b.
bonus3.j2b optional missing game_data
- Path:
jazz2/Source/bonus3.j2b - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/UI/Menu/MainMenu.cpp:503-504,Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542 - Menu music of the reforged main menu, picked at random with bonus2.j2b.
intro.j2b optional in repo game_data
- Path:
jazz2/Source/intro.j2b - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/UI/Cinematics.cpp:255,Sources/Main.cpp:558,Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542 - Music of the intro cinematic.
ending.j2b optional missing game_data
- Path:
jazz2/Source/ending.j2b - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/UI/Cinematics.cpp:255,Sources/Main.cpp:964,Sources/Jazz2/Compatibility/AssetConverter.cpp:539-542 - Music of the ending cinematic.
labrat.j2b optional in repo game_data
- Path:
jazz2/Source/labrat.j2b - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/JJ2Level.cpp:128,Sources/Jazz2/Compatibility/JJ2Level.cpp:784-789,Sources/Jazz2/LevelHandler.cpp:629-635,Sources/Jazz2/ContentResolver.cpp:2784-2788 - Music named by share1.j2l, sharect2.j2l and sharetrs.j2l.
funkyg.j2b optional in repo game_data
- Path:
jazz2/Source/funkyg.j2b - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/JJ2Level.cpp:128,Sources/Jazz2/Compatibility/JJ2Level.cpp:784-789,Sources/Jazz2/LevelHandler.cpp:629-635,Sources/Jazz2/ContentResolver.cpp:2784-2788 - Music named by share2.j2l.
diamond.j2b optional in repo game_data
- Path:
jazz2/Source/diamond.j2b - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/JJ2Level.cpp:128,Sources/Jazz2/Compatibility/JJ2Level.cpp:784-789,Sources/Jazz2/LevelHandler.cpp:629-635,Sources/Jazz2/ContentResolver.cpp:2784-2788 - Music named by share3.j2l and sharectf.j2l.
boss2.j2b optional in repo game_data
- Path:
jazz2/Source/boss2.j2b - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/Compatibility/EventConverter.cpp:360-370,Sources/Jazz2/Compatibility/AssetConverter.cpp:505-508,Sources/Jazz2/LevelHandler.cpp:1397-1400,Sources/Jazz2/ContentResolver.cpp:2784-2788 - Boss music. The boss activation event carries a music index that is converted to boss1.j2b or boss2.j2b and recorded as music the level uses; share3.j2l carries index 1.
intro.j2v optional in repo game_data
- Path:
jazz2/Source/intro.j2v - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/UI/Cinematics.cpp:267-281,Sources/Main.cpp:558 - Intro cinematic. Skipped when absent.
ending.j2v optional missing game_data
- Path:
jazz2/Source/ending.j2v - System: jazz-jackrabbit-2
- Source:
Sources/Jazz2/UI/Cinematics.cpp:267-281,Sources/Main.cpp:964 - Ending cinematic. Skipped when absent.
Generated on 2026-10-10T11:26:01Z