When something goes wrong, the launcher displays the error message as red text beneath the logo on the main screen. Most failures fall into one of five categories: the game binary cannot be found, a language file is missing from the installation, no valid ROM was located, SDL2 cannot initialize, or the save directory is not writable. The quick-reference table below maps each error to its root cause and the fastest fix, followed by detailed accordion sections for each category.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/retired64/sm64coopdx_launcher/llms.txt
Use this file to discover all available pages before exploring further.
Quick reference
| Error | Cause | Solution |
|---|---|---|
Game binary not found: {path} | Binary path unresolved through all 5 tiers | Set SM64COOPDX_PATH or configure launcher.toml |
Language file not found: {path} | Incomplete game installation | Re-extract the full game archive |
No valid Super Mario 64 US ROM found. | ROM absent or wrong MD5 hash | Place baserom.us.z64 in the game directory |
Savepath {path} is not writable: {err} | Insufficient file permissions | chmod -R u+rw ~/.local/share/sm64coopdx/ |
Game binary errors
"Game binary not found: {path}" — binary path resolution failed
"Game binary not found: {path}" — binary path resolution failed
The launcher resolves the The error is displayed as red text on the launcher screen.Resolution tiers (highest to lowest priority)
sm64coopdx binary through five tiers in order. If a tier points to a non-existent file the launcher falls through to the next one automatically. When every tier is exhausted and no file is found, spawn_game returns:--game-pathCLI argumentSM64COOPDX_PATHenvironment variable- Per-profile
game_pathfield inprofile.json launcher.toml→[game].path- Automatic search:
<launcher_dir>/../games/mario64/sm64coopdx, then./sm64coopdx,../sm64coopdx, and finally any~/sm64coopdx_Linux-*/sm64coopdxdirectory
Check whether the binary exists
Locate your extracted SM64 Coop DX release folder and confirm the binary is present:
All resolved paths are canonicalized to an absolute form (symlinks resolved) before the game is spawned. If your binary lives behind a symlink, the launcher follows it correctly.
ROM errors
"No valid Super Mario 64 US ROM found." — ROM absent or wrong MD5
"No valid Super Mario 64 US ROM found." — ROM absent or wrong MD5
Before launching the game, the launcher searches for a Expected MD5: If the hash does not match, your ROM dump is not the supported US v1.0 revision. Only this specific revision is accepted.To point the launcher to a ROM in a non-standard location, add a Once the launcher finds a valid ROM, it copies it to
.z64 file whose MD5 hash exactly matches the Super Mario 64 US ROM. If no matching file is found across all search locations the launch is aborted with the following error (rendered in red on the launcher screen):20b854b239203baf6c961b850a4a51a2Search order- The game binary’s directory
~/.local/share/sm64coopdx/[game].rom_pathinlauncher.toml- Any
~/sm64coopdx_Linux-*/directory in your home folder
rom_path entry to ~/.config/sm64coopdx/launcher.toml:~/.local/share/sm64coopdx/baserom.us.z64 and reuses that copy on subsequent launches (skipping the copy step if the file is already present and valid).Game freezes on "Loading ROM Assets"
Game freezes on "Loading ROM Assets"
This screen appears when the game process starts but cannot read the ROM from the save directory. The most common cause is that the ROM copy step succeeded but the resulting file at If the file is owned by root or has no read permission for your user, fix it:If the directory itself is not writable the launcher will fail before this point, but a partial copy due to a previous interrupted launch can also cause this freeze. Delete the partial file and re-launch to trigger a fresh copy:
~/.local/share/sm64coopdx/baserom.us.z64 is not readable by the game process.Check write and read permissions on the save directory:Language and installation errors
"Language file not found: {path}" — incomplete game installation
"Language file not found: {path}" — incomplete game installation
After resolving the game binary path, the launcher calls Cause: The game release archive was not fully extracted, or only the binary was copied without its supporting files.Fix:Re-extract the complete SM64 Coop DX release archive into a single directory:Verify the directory structure after extraction:The
validate_game_installation(), which checks that {game_dir}/lang/English.ini exists next to the binary. If this file is missing, the launch is blocked and the following error is shown in red on the launcher screen:lang/ folder must be a sibling of the sm64coopdx binary. Moving the binary to another location without moving the lang/ folder alongside it will reproduce this error.Asset errors
SDL2 initialization failure or crash on startup
SDL2 initialization failure or crash on startup
The launcher itself is built on SDL2 and requires several SDL2 libraries to be installed on your system. A missing library causes an immediate crash before any UI is drawn, often with an error like Launcher asset filesAfter confirming the libraries are present, the launcher also requires its own asset bundle to be installed under If the assets directory is missing, copy it from alongside the launcher binary:Full asset tree (from
libSDL2.so.0: cannot open shared object file.Required system libraries~/.local/share/sm64coopdx/assets/. The most critical file is the font:config.rs)| Asset | Path under ~/.local/share/sm64coopdx/assets/ |
|---|---|
| Font | fonts/SuperMario256.ttf |
| Splash screen | splash.png |
| Vinyl disc graphic | vinyl_disc.png |
| Logo | sm64coopdx/logo.png |
| Window icon | sm64coopdx/icon.png |
| Background | background.png |
| Navigation sound | sounds/navigation_sound.wav |
| Splash sound | sounds/splash_sound.wav |
| Music directory | ogg-sounds/ |
| Mod database | database_sm64coopdx.json |
Permission errors
"Savepath {path} is not writable: {err}" — cannot write to the save directory
"Savepath {path} is not writable: {err}" — cannot write to the save directory
Before spawning the game, If the save directory does not yet exist, the launcher attempts to create it first via Fix — restore user ownership and write permissions:If the directory is owned by If the directory does not exist yet and the parent path (
validate_game_installation() writes a temporary probe file (.launcher_write_test) to the save directory to confirm it is writable. If this write fails, the error is shown in red on the launcher screen and the launch is cancelled:fs::create_dir_all. If that creation fails, a separate error is shown:root (for example after a previous sudo run), reclaim ownership first:~/.local/share/) is not writable, this points to a broader home-directory permission problem that must be resolved at the filesystem level.The game process is spawned with a clean, whitelisted environment (no
LD_PRELOAD, no LD_LIBRARY_PATH). Permission errors in the save directory are always a filesystem issue, not an environment one.