Skip to content
PORTSNATIVE.
HomeCatalog
Web GamesEmulatorsToolsNews
PORTSNATIVE.

A catalog for discovering ports and related projects. We link to official sources and do not host original game files.

ExploreCatalogMy list
InformationAbout usSuggest a portSupportDonationsLegal notice
© 2026 PortsNative
Back to catalog
Super Mario 64 (PSP)
PORTSNATIVE

Super Mario 64 (PSP)

NATIVE PORTADVENTURE / SANDBOXBETA

Super Mario 64 (PSP)

Super Mario 64

OriginNintendo 64

TechnologyNative C/C++ port (engine reimplementation)

View official project

About the project

Super Mario 64 es un videojuego de plataformas desarrollado y publicado por Nintendo para la Nintendo 64. Es la primera entrega de Super Mario en mostrar gráficos 3D, que combina la mecánica tradicional de la franquicia, su estilo visual y sus personajes en un amplio mundo abierto. En la historia, Bowser invade el castillo de la Princesa Peach, la secuestra y esconde las Estrellas de Poder en diferentes mundos situados dentro de cuadros mágicos. En el papel de Mario, el jugador recorre los niveles y recoge las estrellas para desbloquear zonas, llegar hasta Bowser y rescatar a Peach.

16 versions of Super Mario 64

You're viewing: Super Mario 64 (PSP)

Super Mario 64 (PSP)github.com/JustKidding23/SM64-PSP
To be confirmed
Current
Infinite Mario 64 (Ever)github.com/Brawmario/infinite-mario-64-ever
Windows
Linux
macOS
›
sm64coopdx (Super Mario 64 online)github.com/coop-deluxe/sm64coopdx
Windows
Linux
macOS
›
Super Mario 64github.com/sm64-port/sm64-port
Windows
›
Ghostshipgithub.com/HarbourMasters/Ghostship
Windows
Linux
macOS
Android
iOS
›
Ghostship (Android)github.com/izzy2lost/Ghostship
Android
›
sm64 wasm · Web (sm64-wasm)github.com/sm64-wasm/sm64-wasm
Web
›
sm64coopdx (Android)github.com/ManIsCat2/sm64coopdx
Android
›
sm64coopdx (Switch)github.com/ArcheSV/sm64coopdx-switch
To be confirmed
›
sm64exgithub.com/sm64pc/sm64ex
Windows
Linux
macOS
›
SM64Plusgithub.com/MorsGames/sm64plus
Windows
Linux
›
Super Mario 64 (libsm64-godot)github.com/Brawmario/libsm64-godot
Windows
›
Super Mario 64 (libsm64-rust)github.com/nickmass/libsm64-rust
Windows
›
Super Mario 64 (libsm64-sharp)github.com/MeltyPlayer/libsm64-sharp
Windows
›
Super Mario 64 (SM64-PC-Port-WebGL)github.com/NotAn127/SM64-PC-Port-WebGL
Windows
›
Super Mario 64 (web)github.com/lwllac/sm64
Web
›

Official project information

Author's original READMEOpen on GitHub ↗

SM64 PSP

Super Mario 64 running natively on the Sony PSP. It isn't an emulator: the game is compiled for the PSP from the n64decomp/sm64 decompilation, by way of the SM64 PC port and mrneo240's PSP port as carried on by gyrovorbis. It's played on a PSP 3001 with custom firmware (6.61 PRO-C).

Built with AI, openly. The changes in this fork were made with Claude, Anthropic's AI assistant, working in Claude Code alongside the owner of this repository, who tested each build on a real PSP. How this was made says more. AI-written code can contain mistakes, so review it before relying on it.

No game files here. You need your own US ROM of the game, which the build extracts the graphics and sound from. What you build contains the game, so keep it to yourself. That's also why there's no download.

Playing it

You need Linux (or WSL), the pspdev toolchain and your ROM saved as baserom.us.z64 in this folder. Then:

make TARGET_PSP=1 -j4
cp -r psp/textures/* textures/
make TARGET_PSP=1 -j4 pbp

Copy the folder build/us_psp/mario64/ to PSP/GAME/ on the memory stick and start it from Game > Memory Stick. PSP_BUILD.md has the details: the packages to install, the ROM's checksum, and where the game keeps its save.

What this fork changes

  • Saves and settings are written in a way that works on a real PSP. The C library's fopen couldn't create files there.
  • It builds with a current pspdev toolchain.
  • It's faster: smaller textures, a bigger texture cache, less clipping work, and frames paced on the display so a slightly late frame doesn't drop to 20 a second.
  • Graphics fixes: stale or corrupted textures, tiny textures, the star select background, and fading objects such as Mario in warps.

How this was made

Claude made these changes in Claude Code in October 2026, directed by the owner of this repository, who built each version and ran it on their PSP. The commit messages say what each change does and how it was tested.

CREDITS.md names everyone whose work this is built on.

Want to help, or found a problem? CONTRIBUTING.md says how. Reports from playing on your PSP are as welcome as code.

Also by me: Ocarina of Time PSP, Pokémon Emerald PSP and Pokémon FireRed PSP

The original upstream README follows.


PSP Port of PC

PSP Project Discord: https://discord.gg/5w4B69

Super Mario 64 Port

  • This repo contains a full decompilation of Super Mario 64 (J), (U), and (E) with minor exceptions in the audio subsystem.
  • Naming and documentation of the source code and data structures are in progress.
  • Efforts to decompile the Shindou ROM steadily advance toward a matching build.
  • Beyond Nintendo 64, it can also target Linux and Windows natively.

This repo does not include all assets necessary for compiling the game. A prior copy of the game is required to extract the assets.

Building native executables

Linux

  1. Install prerequisites (Ubuntu): sudo apt install -y git build-essential pkg-config libusb-1.0-0-dev libsdl2-dev.
  2. Clone the repo: git clone https://github.com/sm64-port/sm64-port.git, which will create a directory sm64-port and then enter it cd sm64-port.
  3. Place a Super Mario 64 ROM called baserom.<VERSION>.z64 into the repository's root directory for asset extraction, where VERSION can be us, jp, or eu.
  4. Run make to build. Qualify the version through make VERSION=<VERSION>. Add -j4 to improve build speed (hardware dependent based on the amount of CPU cores available).
  5. The executable binary will be located at build/<VERSION>_pc/sm64.<VERSION>.f3dex2e.

Windows

  1. Install and update MSYS2, following all the directions listed on https://www.msys2.org/.
  2. From the start menu, launch MSYS2 MinGW and install required packages depending on your machine (do NOT launch "MSYS2 MSYS"):
  • 64-bit: Launch "MSYS2 MinGW 64-bit" and install: pacman -S git make python3 mingw-w64-x86_64-gcc
  • 32-bit (will also work on 64-bit machines): Launch "MSYS2 MinGW 32-bit" and install: pacman -S git make python3 mingw-w64-i686-gcc
  • Do NOT by mistake install the package called simply gcc.
  1. The MSYS2 terminal has a current working directory that initially is C:\msys64\home\<username> (home directory). At the prompt, you will see the current working directory in yellow. ~ is an alias for the home directory. You can change the current working directory to My Documents by entering cd /c/Users/<username>/Documents.
  2. Clone the repo: git clone https://github.com/sm64-port/sm64-port.git, which will create a directory sm64-port and then enter it cd sm64-port.
  3. Place a Super Mario 64 ROM called baserom.<VERSION>.z64 into the repository's root directory for asset extraction, where VERSION can be us, jp, or eu.
  4. Run make to build. Qualify the version through make VERSION=<VERSION>. Add -j4 to improve build speed (hardware dependent based on the amount of CPU cores available).
  5. The executable binary will be located at build/<VERSION>_pc/sm64.<VERSION>.f3dex2e.exe inside the repository.

Sony PSP

Notes: Currently only supported building under linux and WSL

There is a file in the psp/ folder called snd_eng.prx

  • This file is used to accelerate the sound generation and increase performance.
  • It belongs next to the EBOOT.PBP or PRX.

Fixed textures live in the psp/textures/ folder. copy these into textures/, overwrite the extracted ones, and rebuild

  1. Install the PSP toolchain https://github.com/pspdev/psptoolchain.
  2. Place a Super Mario 64 ROM called baserom.<VERSION>.z64 into the repository's root directory for asset extraction, where VERSION can be us, jp, or eu. Note: Only US supported
  3. Run make TARGET_PSP=1
  4. Optionally if you would prefer an EBOOT.PBP for use on CFW Run make TARGET_PSP=1 pbp , and the folder mario64 will be made in the build folder.

Windows Instructions : NOTE UNSUPPORTED currently, must follow directions exactly!

  1. Install the PSP toolchain https://darksectordds.github.io/html/MinimalistPSPSDK/index.html
  2. Install Python3 from python.org, NOT the Windows Store
  3. Download this pack of helpful tools http://www.mediafire.com/file/jogmmqfwclmji3v/file
  4. Add the full path of where you installed the pspsdk eg. C:\pspsdk\bin to your environment variables
  5. Copy the files from pspsdk_bin/ from the windows pack into the bin folder where you installed the pspsdk. The same folder you used above.
  6. Copy python3.exe from the windows pack, next to makefile and baserom
  7. Make a folder called tmp, next to makefile and baserom
  8. Place a Super Mario 64 ROM called baserom.<VERSION>.z64 into the repository's root directory for asset extraction, where VERSION can be us, jp, or eu.
  9. Copy files in tools/ from the windows pack to tools folder in source, next to makefile and baserom
  10. Open Powershell in the sm64 folder and run this:
  11. Run make -t -s -C .\tools\ and ignore the line about make: /bin/sh: Command not found
  12. Go back to powershell window:
  13. Run $PSDefaultParameterValues['*:Encoding'] = 'utf8' Only needed if using Powershell, if using cmd.exe you can skip this.
  14. Run make TARGET_PSP=1 SHELL=sh PYTHON=py
  15. Optionally if you would prefer an EBOOT.PBP for use on CFW Run make TARGET_PSP=1 SHELL=sh PYTHON=py pbp, and the folder mario64 will be made in the build folder.

Docker Instructions

  1. Place a Super Mario 64 ROM called baserom.<VERSION>.z64 into the repository's root directory for asset extraction, where VERSION can be us, jp, or eu. Note: Only US supported
  2. Run the Docker container donated by mkst: docker run --rm -ti -v $(pwd):/sm64 markstreet/sm64:psp make TARGET_PSP=1 pbp --jobs
  3. This will produce an EBOOT.PBP in build/VERSION_psp/mario64/ folder along with snd_eng.prx for transfer to any CFW enabled Sony PSP.

Sega Dreamcast

Fixed textures live in the psp/textures/ folder. copy these into textures/, overwrite the extracted ones, and rebuild

  1. Install the Dreamcast toolchain https://github.com/KallistiOS/KallistiOS/tree/master/utils/dc-chain.
  2. Install python3
  3. Place a Super Mario 64 ROM called baserom.<VERSION>.z64 into the repository's root directory for asset extraction, where VERSION can be us, jp, or eu. Note: Only US supported
  4. Run make TARGET_DC=1 scramble
  5. This will produce a scrambled binary called 1ST_READ.BIN ready to be burned onto a cd-r for use in a Dreamcast.

Docker Instructions

  1. Place a Super Mario 64 ROM called baserom.<VERSION>.z64 into the repository's root directory for asset extraction, where VERSION can be us, jp, or eu. Note: Only US supported
  2. Run the Docker container donated by mkst: docker run --rm -ti -v $(pwd):/sm64 markstreet/sm64:dreamcast make TARGET_DC=1 scramble --jobs
  3. This will produce a scrambled binary called 1ST_READ.BIN ready to be burned onto a cd-r for use in a Dreamcast.

Troubleshooting (For Any Platform)

  1. If you get make: gcc: command not found or make: gcc: No such file or directory although the packages did successfully install, you probably launched the wrong MSYS2. Read the instructions again. The terminal prompt should contain "MINGW32" or "MINGW64" in purple text, and NOT "MSYS".
  2. If you get Failed to open baserom.us.z64! you failed to place the baserom in the repository. You can write ls to list the files in the current working directory. If you are in the sm64-port directory, make sure you see it here.
  3. If you get make: *** No targets specified and no makefile found. Stop., you are not in the correct directory. Make sure the yellow text in the terminal ends with sm64-port. Use cd <dir> to enter the correct directory. If you write ls you should see all the project files, including Makefile if everything is correct.
  4. If you get any error, be sure MSYS2 packages are up to date by executing pacman -Syu and pacman -Su. If the MSYS2 window closes immediately after opening it, restart your computer.
  5. When you execute gcc -v, be sure you see Target: i686-w64-mingw32 or Target: x86_64-w64-mingw32. If you see Target: x86_64-pc-msys, you either opened the wrong MSYS start menu entry or installed the incorrect gcc package.

Debugging

The code can be debugged using gdb. On Linux install the gdb package and execute gdb <executable>. On MSYS2 install by executing pacman -S winpty gdb and execute winpty gdb <executable>. The winpty program makes sure the keyboard works correctly in the terminal. Also consider changing the -mwindows compile flag to -mconsole to be able to see stdout/stderr as well as be able to press Ctrl+C to interrupt the program. In the Makefile, make sure you compile the sources using -g rather than -O2 to include debugging symbols. See any online tutorial for how to use gdb.

ROM building

It is possible to build N64 ROMs as well with this repository. See https://github.com/n64decomp/sm64 for instructions.

Project Structure

sm64
├── actors: object behaviors, geo layout, and display lists
├── asm: handwritten assembly code, rom header
│   └── non_matchings: asm for non-matching sections
├── assets: animation and demo data
│   ├── anims: animation data
│   └── demos: demo data
├── bin: C files for ordering display lists and textures
├── build: output directory
├── data: behavior scripts, misc. data
├── doxygen: documentation infrastructure
├── enhancements: example source modifications
├── include: header files
├── levels: level scripts, geo layout, and display lists
├── lib: SDK library code
├── rsp: audio and Fast3D RSP assembly code
├── sound: sequences, sound samples, and sound banks
├── src: C source code for game
│   ├── audio: audio code
│   ├── buffers: stacks, heaps, and task buffers
│   ├── engine: script processing engines and utils
│   ├── game: behaviors and rest of game source
│   ├── goddard: Mario intro screen
│   ├── menu: title screen and file, act, and debug level selection menus
│   └── pc: port code, audio and video renderer
├── text: dialog, level names, act names
├── textures: skybox and generic texture data
└── tools: build tools

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Run clang-format on your code to ensure it meets the project's coding standards.

Official Discord: https://discord.gg/7bcNTPK

View official project
CALIFICACIÓN
—
Loading votes…
Advertisement

PROJECT FILE

Project type
NATIVE PORT
Genre
Adventure / Sandbox
Status
beta
Original platform
Nintendo 64
Technology
Native C/C++ port (engine reimplementation)
Version
—
Updated
—

Target platforms 0

View on GitHub
Advertisement