File locations
Where the game reads its files from and where it writes them, on every supported platform.
Overview
Every platform uses the same set of directories and files, only their locations differ:
| Name | What it holds | Written by the game |
|---|---|---|
"Content/" | The game's own assets — sprites, shaders, fonts, translations, bundled episodes | No |
User "Content/" | Your own or modded content, see User Content directory | No |
"Source/" | Original Jazz Jackrabbit 2 files you copy there — "Anims.j2a", levels, tilesets, music | No |
"Cache/" | "Source/" files converted on the first start, the shader cache and assets downloaded from multiplayer servers. Safe to delete, it's rebuilt on the next start | Yes |
"Jazz2.config" | Settings and episode progress | Yes |
"Jazz2.resume" | Saved state for continuing an interrupted level, next to "Jazz2.config" | Yes |
"Jazz2.log" | Log of the current session, earlier sessions are kept in "Jazz2.log.gz" next to it | Yes |
Below, the config directory means the directory with "Jazz2.config", the resume file and the log always sit there together (only iOS keeps the log elsewhere). A "gamecontrollerdb.txt" with extra gamepad mappings is read from there and from "Content/" on most platforms. A log file is only written by builds with tracing enabled (DEATH_TRACE).
User Content directory
On platforms where "Content/" is packed inside the application (APK, app bundle, AppImage, system-wide package, UWP package, ".nro", ".vpk") nothing can be added to it, so the game also reads a second "Content/" directory the user can reach — usually next to "Cache/". It's only used if it already exists when the game starts. Files are searched in this order:
- User
"Content/"— a file here replaces the file with the same path anywhere below "Content/""Cache/"
Translations are the exception: their order is user "Content/", "Cache/", "Content/". While connected to a multiplayer server, the level, its tilesets and music downloaded from the server take precedence over all of the above.
Desktop
Windows
| What | Location |
|---|---|
"Content", "Source", "Cache" | Next to "Jazz2.exe" |
| Config directory | "C:\Users\<user>\Saved Games\Jazz² Resurrection" (or "AppData\Roaming\Jazz² Resurrection" if there is no Saved Games folder), or next to "Jazz2.exe" if a "Jazz2.config" already exists there (portable mode) |
| Log | Only with /log:file, /log opens a console window instead |
Linux
| What | Location |
|---|---|
Portable ("Content/" next to the executable) | "Content/", "Source/" and "Cache/" next to the executable |
| Installed package (DEB, RPM, distribution packages) | "Content/" in "/usr/share/jazz2/" (install prefix and package name), "Source/" and "Cache/" in "~/.local/share/jazz2/" ($XDG_DATA_HOME, but "~/.local/share/Jazz² Resurrection/" is used instead if it has a "Cache/"). A "Source/" in "/usr/share/jazz2/" is used if the per-user one doesn't contain the game files |
| AppImage | "Content/" inside the image, "Source/" and "Cache/" next to the ".AppImage" file if "Source/" there contains the game files, otherwise in "~/.local/share/jazz2/" |
| Flatpak | "Content/" in "/app/share/Jazz² Resurrection/", everything else under "~/.var/app/dev.de4th.jazz2/" |
User "Content/" | Next to "Cache/", if it isn't the same as "Content/" |
| Config directory | "~/.config/Jazz² Resurrection/" ($XDG_CONFIG_HOME, "~/.config/jazz2/" for AppImage), or the working directory if a "Jazz2.config" already exists there |
| Log | Only with /log:file |
macOS
| What | Location |
|---|---|
"Content/" | Inside the application bundle |
"Source/", "Cache/", user "Content/" | "~/Library/Application Support/Jazz² Resurrection/" |
| Config directory | "~/Library/Application Support/Jazz² Resurrection/", or the working directory if a "Jazz2.config" already exists there |
| Log | Only with /log:file |
Command-line options
These work on Windows, Linux and macOS:
/config <path>— use this configuration file, its directory becomes the config directory/reset-config— start with the default settings/log:file— write"Jazz2.log"into the config directory,/log:file:<name>uses another name (relative to the config directory, the earlier sessions aren't archived then)/log— Windows only, opens a console window with the log
A build configured with DEATH_TRACE_LOG_PATH always writes the log under that name into the config directory.
Mobile
Android
| What | Location |
|---|---|
"Content/" | Inside the APK |
"Source/", "Cache/", user "Content/" | With All files access granted: the first existing of "Games/Jazz² Resurrection/", "Games/Jazz2 Resurrection/", "Download/Jazz² Resurrection/" and "Download/Jazz2 Resurrection/" on the internal storage, "Games/Jazz² Resurrection/" if none exists. Otherwise "Android/data/jazz2.resurrection/files/" |
| Config directory | Next to "Source/" (a "Jazz2.config" from older versions in the app's private storage is kept until one exists next to "Source/") |
| Log | "Jazz2.log" in the config directory, always |
iOS
| What | Location |
|---|---|
"Content/" | Inside the application bundle |
"Source/", user "Content/" | The app's "Documents/" folder, visible in the Files app |
"Cache/" | "Library/Caches/" (not visible, may be purged by the system) |
| Config directory | "Library/Application Support/Jazz² Resurrection/" |
| Log | "Documents/Jazz2.log", always |
Other platforms
Windows RT (UWP, Xbox)
| What | Location |
|---|---|
"Content" | Inside the application package |
"Source", "Cache", user "Content" | On Xbox the first of "D:" to "G:" drives with "Games\Jazz² Resurrection\Source" (or "Jazz2 Resurrection"), otherwise the app's "LocalState" folder |
| Config directory | Next to "Source" if writable, otherwise "LocalState" |
| Log | None |
Web (Emscripten)
Everything lives in the browser. "Content/" is preloaded with the page, the config directory is "/Persistent/" (stored in the browser's IndexedDB), and the log only goes to the browser console.
Libretro core
"Content/", "Source/" and "Cache/" are looked up in the frontend's system directory (directly or in its "jazz2/" subdirectory), the config directory is "jazz2/" in the frontend's save directory.
Amiga
Everything — "Content/", "Source/", "Cache/" and "Jazz2.config" — sits in the game's own directory. No log file is written.
Dedicated server
Uses the same directories as the game on the same platform. Its configuration is "Jazz2.Server.config" in the working directory, or the path given after /server, see Configuring a server.
Consoles
The config directory is next to "Source/", and "Jazz2.log" is written there, unless stated otherwise. See also Building the project for consoles for how each build is packaged.
| Console | Content directory | Source, cache and config directory | Notes |
|---|---|---|---|
| Nintendo Switch | "romfs:/" (inside the ".nro") | "sdmc:/Games/Jazz2/" | User "Content/" in "sdmc:/Games/Jazz2/Content/" |
| Nintendo 3DS | "sdmc:/3ds/Jazz2/Content/" | "sdmc:/3ds/Jazz2/" | — |
| Nintendo Wii | "sd:/apps/Jazz2/Content/" | "sd:/apps/Jazz2/" | — |
| Nintendo GameCube | "Jazz2/Content/" on an SD card, or "dvd:/Content/" | Next to "Content/" | From the disc, "Jazz2.config" and "Jazz2.resume" go to a memory card ("mca:/", or "mcb:/") and no log is written |
| Nintendo 64 | "rom:/Content/" | "rom:/Cache/", read-only | Settings go to the cartridge EEPROM ("eeprom:/JAZZ2CFG"), no resume file and no log |
| PlayStation Vita | "app0:/Content/" (inside the VPK) | "ux0:/data/jazz2/" | User "Content/" in "ux0:/data/jazz2/Content/" |
| PlayStation Portable | "ms0:/PSP/GAME/Jazz2/Content/" | "ms0:/PSP/GAME/Jazz2/" | — |
| PlayStation 3 | "/app_home/Content/" (next to "EBOOT.BIN") | "Source/" in "/app_home/", "Cache/" in "/dev_hdd0/game/<APPID>/USRDIR/" | "Jazz2.config" in the working directory, no log |
| PlayStation 2 | "Content/" next to the executable, in "Games/Jazz2/" on a USB stick or MX4SIO SD card, or "cdfs:/Content/" | Next to "Content/" | From the disc, "Jazz2.config" goes to a memory card ("mc0:/Jazz2/", or "mc1:/Jazz2/") and no log is written |
| Sega Dreamcast | "/cd/Content/" | "/cd/", read-only | "Jazz2.config" and "Jazz2.resume" go to the first VMU ("/vmu/a1/Jazz2" for port A, unit 1), no log |