PSP Project Discord: https://discord.gg/5w4B69
This repo does not include all assets necessary for compiling the game. A prior copy of the game is required to extract the assets.
sudo apt install -y git build-essential pkg-config libusb-1.0-0-dev libsdl2-dev
.git clone https://github.com/sm64-port/sm64-port.git
, which will create a directory sm64-port
and then enter it cd sm64-port
.baserom.<VERSION>.z64
into the repository's root directory for asset extraction, where VERSION
can be us
, jp
, or eu
.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).build/<VERSION>_pc/sm64.<VERSION>.f3dex2e
.pacman -S git make python3 mingw-w64-x86_64-gcc
pacman -S git make python3 mingw-w64-i686-gcc
gcc
.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
.git clone https://github.com/sm64-port/sm64-port.git
, which will create a directory sm64-port
and then enter it cd sm64-port
.baserom.<VERSION>.z64
into the repository's root directory for asset extraction, where VERSION
can be us
, jp
, or eu
.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).build/<VERSION>_pc/sm64.<VERSION>.f3dex2e.exe
inside the repository.Notes: Currently only supported building under linux and WSL
There is a file in the psp/
folder called snd_eng.prx
Fixed textures live in the psp/textures/ folder. copy these into textures/, overwrite the extracted ones, and rebuild
baserom.<VERSION>.z64
into the repository's root directory for asset extraction, where VERSION
can be us
, jp
, or eu
. Note: Only US supportedmake TARGET_PSP=1
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!
C:\pspsdk\bin
to your environment variablespspsdk_bin/
from the windows pack into the bin
folder where you installed the pspsdk. The same folder you used above.python3.exe
from the windows pack, next to makefile and baseromtmp
, next to makefile and baserombaserom.<VERSION>.z64
into the repository's root directory for asset extraction, where VERSION
can be us
, jp
, or eu
.tools/
from the windows pack to tools
folder in source, next to makefile and baserommake -t -s -C .\tools\
and ignore the line about make: /bin/sh: Command not found
$PSDefaultParameterValues['*:Encoding'] = 'utf8'
Only needed if using Powershell, if using cmd.exe you can skip this.make TARGET_PSP=1 SHELL=sh PYTHON=py
make TARGET_PSP=1 SHELL=sh PYTHON=py pbp
, and the folder mario64
will be made in the build folder.Docker Instructions
baserom.<VERSION>.z64
into the repository's root directory for asset extraction, where VERSION
can be us
, jp
, or eu
. Note: Only US supporteddocker run --rm -ti -v $(pwd):/sm64 markstreet/sm64:psp make TARGET_PSP=1 pbp --jobs
build/VERSION_psp/mario64/
folder along with snd_eng.prx
for transfer to any CFW enabled Sony PSP.Fixed textures live in the psp/textures/ folder. copy these into textures/, overwrite the extracted ones, and rebuild
baserom.<VERSION>.z64
into the repository's root directory for asset extraction, where VERSION
can be us
, jp
, or eu
. Note: Only US supportedmake TARGET_DC=1 scramble
1ST_READ.BIN
ready to be burned onto a cd-r for use in a Dreamcast.Docker Instructions
baserom.<VERSION>.z64
into the repository's root directory for asset extraction, where VERSION
can be us
, jp
, or eu
. Note: Only US supporteddocker run --rm -ti -v $(pwd):/sm64 markstreet/sm64:dreamcast make TARGET_DC=1 scramble --jobs
1ST_READ.BIN
ready to be burned onto a cd-r for use in a Dreamcast.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".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.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.pacman -Syu
and pacman -Su
. If the MSYS2 window closes immediately after opening it, restart your computer.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.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.
It is possible to build N64 ROMs as well with this repository. See https://github.com/n64decomp/sm64 for instructions.
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
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