Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Mario64 — Render96ex / SM64EX + Odyssey Moveset Installer

One-shot Linux installer for Super Mario 64 PC port with Odyssey Mario's Moveset (OMM) — choose at runtime between Render96ex (HD models + DynOS, recommended) and SM64EX (vanilla). Both options get the Render96 HD texture pack + improved 3D models and the OMM patch (Cappy, captures, roll, dive, cap bounce…).

All cloning, downloads and compilation happen in a temporary directory (deleted afterwards). The compiled game is then moved to the chosen install folder (default ~/Mario64) and only that stays on disk.

Requirements

  • Linux (Arch / Ubuntu / Debian / Fedora / openSUSE — auto-detected)
  • git, curl, make, gcc/g++, python3, unzip, zip, p7zip (7z), SDL2, GLEW — installed automatically via your package manager (or set SKIP_DEPS=1)
  • A legally dumped, unmodified Super Mario 64 (US) ROM (.z64 / .n64 / .v64 / .zip). The build verifies the SHA1 and will abort on a hacked/extended ROM.

Quick Start — One-liner (curl)

Replace zonaro/Mario64/main with your actual GitHub user/repo/branch if different.

curl -fsSL https://raw.githubusercontent.com/zonaro/Mario64/main/install.sh -o install.sh && chmod +x install.sh && ./install.sh

Piped variant (also prompts for ROM — works via /dev/tty):

bash -c "$(curl -fsSL https://raw.githubusercontent.com/zonaro/Mario64/main/install.sh)"

ROM handling (one-liner friendly): the script will prompt for the ROM path (you can drag & drop the file into the terminal). If you leave it empty, it auto-searches common folders: ~/Downloads, ~/ROMs, ~/Games, ~/Documents/Documentos, ~/Jogos and subfolders (up to 3 levels deep) for *mario*64*.z64/.zip, baserom*, sm64*, etc. You can also skip the prompt by setting ROM_ZIP:

ROM_ZIP=~/Downloads/Super\ Mario\ 64.zip bash -c "$(curl -fsSL https://raw.githubusercontent.com/zonaro/Mario64/main/install.sh)"

Engine handling (one-liner friendly): the script will prompt for the base — 1 Render96ex (recommended) or 2 SM64EX. Both get Render96 HD textures/models. Skip the prompt with ENGINE:

ENGINE=render96 bash -c "$(curl -fsSL https://raw.githubusercontent.com/zonaro/Mario64/main/install.sh)"
ENGINE=sm64ex bash -c "$(curl -fsSL https://raw.githubusercontent.com/zonaro/Mario64/main/install.sh)"
# aliases: r96/render96ex → render96, ex/sm64 → sm64ex; also BASE/R96/SM64EX env vars

Install dir handling (one-liner friendly): the script will prompt for the install path. Leave empty for the default ~/Mario64. Clone/downloads/compilation still happen in a temp dir and are deleted — only the compiled game stays in the chosen folder. Skip the prompt with FINAL_DIR:

FINAL_DIR=~/Games/Mario64 bash -c "$(curl -fsSL https://raw.githubusercontent.com/zonaro/Mario64/main/install.sh)"
# or all at once:
ENGINE=sm64ex ROM_ZIP=~/roms/sm64.z64 FINAL_DIR=~/Mario64 bash -c "$(curl -fsSL https://raw.githubusercontent.com/zonaro/Mario64/main/install.sh)"

Manual Install

  1. Have your ROM ready (or let the script prompt/search). Accepted names (any one is enough):

    • baserom.us.z64, baserom.z64, Super Mario 64 (USA).z64, Super Mario 64 (U) [!].z64, Super Mario 64.z64, sm64.z64, mario64.z64
    • .n64 / .v64 variants of the above
    • .zip containing any of the above (e.g. Super Mario 64.zip)
    • Fallback: any *.z64 / *.n64 / *.v64 / *.zip in the script folder or current directory is auto-detected
    • Or set ROM_ZIP=/path/to/rom.zip explicitly to skip the prompt
  2. Run:

chmod +x install.sh
./install.sh
# You'll be prompted for:
#   1) Base: 1) Render96ex (recommended)  2) SM64EX  (empty = 1) — both get Render96 HD packs
#   2) Install path (empty = ~/Mario64)
#   3) ROM path if not found (paste/drag or empty to auto-search ~/Downloads, ~/ROMs, etc.)

What the script does

  1. Prompts for base: 1 Render96ex (tester) or 2 SM64EX (master) — or uses ENGINE=render96|sm64ex
  2. Detects your package manager and installs build deps (unless SKIP_DEPS=1)
  3. Creates a temp dir via mktemp -d (/tmp/mario64_build_XXXXXX)
  4. Resolves the ROM: ROM_ZIP → script dir / PWD scan → interactive prompt (drag & drop) → auto-search in ~/Downloads, ~/ROMs, ~/Games, etc.
  5. Clones the chosen base (Render96/Render96ex or sm64pc/sm64ex) into the temp dir
  6. Downloads and applies PeachyPeachSM64/sm64ex-omm omm.patch + defensive fixes
  7. Builds with make -j$(nproc) RENDER_API=GL WINDOW_API=SDL2 AUDIO_API=SDL2 CONTROLLER_API=SDL2 GRUCODE=f3dex2e
  8. Downloads Render96 HD packs for both engines (Render96_DynOs_v3.25.7z + OMM zip) into the temp build
  9. Moves the compiled build/us_pc to the chosen install dir (~/Mario64/build/us_pc/sm64.r96x or sm64.us.f3dex2e)
  10. Cleans all downloads and removes the temp directory (trap + explicit rm -rf) — only the game stays
  11. Creates launch.sh in the install dir, ~/.local/bin/render96-odyssey (or sm64ex-odyssey) symlink and desktop entry

Output

After a successful run, in the chosen install directory (default ~/Mario64):

~/Mario64/build/us_pc/sm64.r96x (or sm64.us.f3dex2e for SM64EX)  # game binary
~/Mario64/build/us_pc/dynos/packs/       # DynOS packs (Render96 HD)
~/Mario64/build/us_pc/res/packs/         # OMM Render96 HD pack
~/Mario64/launch.sh                      # launcher
~/.local/share/applications/render96-odyssey.desktop (or sm64ex-odyssey)
~/.local/share/icons/render96-odyssey.svg

Launch:

~/Mario64/launch.sh
# or
render96-odyssey   # Render96ex
sm64ex-odyssey     # SM64EX
# or from your app menu: "Super Mario 64 - Render96 EX (Odyssey)" / "SM64EX (Odyssey + Render96 HD)"

Environment Overrides

Variable Default Description
ENGINE prompt (render96) Base: render96 (Render96ex) or sm64ex (aliases: r96, ex, sm64; also BASE/R96/SM64EX)
ROM_ZIP auto-detected / prompt+search Path to ROM .zip/.z64/.n64/.v64 (prompt if not found)
FINAL_DIR ~/Mario64 (prompt) Where the compiled game is moved to (prompt; empty = ~/Mario64)
BRANCH tester (r96) / master (ex) Base branch (override per engine)
JOBS nproc Parallel make jobs
SKIP_DEPS 0 1 to skip dependency install
SKIP_MODELS 0 1 to skip DynOS/OMM model packs
FORCE 0 1 to force clean rebuild
ALLOW_REJECTS 0 1 to continue even if patch hunks are rejected

Example:

ENGINE=sm64ex ROM_ZIP=~/roms/sm64.zip JOBS=8 ./install.sh
ENGINE=render96 FINAL_DIR=~/Games/Mario64 ./install.sh

First-run Tips

  • HD textures/models: already installed for both bases (Render96 packs)
  • Render96ex: Pause → DynOS → Packs → enable Render96_DynOS_v3.25
  • SM64EX/OMM: Options → Model Packs → Render96_DynOs_v3.25
  • Odyssey moves: already active (Cappy, captures, roll, dive, cap bounce…)
  • Controls: Options → Controls (keyboard / gamepad)

Notes

  • You must own the original game. This project does not distribute ROMs.
  • PortMaster is not used — it targets handheld CFWs and has no desktop Linux port for Render96ex.
  • Idempotent: re-running is safe; use FORCE=1 to force a fresh clone/build.

License

Installer scripts: MIT. Game assets and Render96ex/OMM retain their original licenses.

About

One-shot Linux installer for Super Mario 64 Render96ex + DynOS + Odyssey Moveset — temp build, one curl command

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages