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:

NameWhat it holdsWritten by the game
"Content/"The game's own assets — sprites, shaders, fonts, translations, bundled episodesNo
User "Content/"Your own or modded content, see User Content directoryNo
"Source/"Original Jazz Jackrabbit 2 files you copy there — "Anims.j2a", levels, tilesets, musicNo
"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 startYes
"Jazz2.config"Settings and episode progressYes
"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 itYes

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:

  1. User "Content/" — a file here replaces the file with the same path anywhere below
  2. "Content/"
  3. "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

WhatLocation
"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)
LogOnly with /log:file, /log opens a console window instead

Linux

WhatLocation
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
LogOnly with /log:file

macOS

WhatLocation
"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
LogOnly 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

WhatLocation
"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 directoryNext 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

WhatLocation
"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)

WhatLocation
"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 directoryNext to "Source" if writable, otherwise "LocalState"
LogNone

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.

ConsoleContent directorySource, cache and config directoryNotes
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-onlySettings 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