OpenGL adaptation of n64decomp/sm64.
Feel free to report bugs and contribute, but remember, there must be no upload of any copyrighted asset.
Run ./extract-assets.py --clean && make clean
or make distclean
to remove ROM-originated content.
- Native rendering. You can now play SM64 without the need of an emulator.
- Variable aspect ratio and resolution. The game can now correctly render at basically any window size.
- Native xinput controller support. On Linux, DualShock 4 has been confirmed to work plug-and-play.
- True analog camera control is now available on our testing branch.
For each version (jp/us/eu) that you want to build an executable for, put an existing ROM at
./baserom.<version>.z64
for asset extraction.
The build system has the following package requirements:
- python3 >= 3.6
- libsdl2-dev
- audiofile
- libglew-dev
- git
Debian / Ubuntu - targeting 32 bits
sudo apt install build-essential git python3 libaudiofile-dev libglew-dev:i386 libsdl2-dev:i386
Debian / Ubuntu - targeting 64 bits
sudo apt install build-essential git python3 libaudiofile-dev libglew-dev libsdl2-dev
Arch Linux
sudo pacman -S base-devel python audiofile sdl2 glew
Void Linux - targeting 64 bits
sudo xbps-install -S base-devel python3 audiofile-devel SDL2-devel glew-devel
Void Linux - targeting 32 bits
sudo xbps-install -S base-devel python3 audiofile-devel-32bit SDL2-devel-32bit glew-devel-32bit
Run make
to build (defaults to VERSION=us
)
make VERSION=jp -j6 # build (J) version with 6 jobs
make VERSION=us WINDOWS_BUILD=1 # builds a (U) Windows executable
make TARGET_RPI=1 # targets an executable for a Raspberry Pi
1. Set up MSYS2, following this guide.
pacman -S mingw-w64-i686-glew mingw-w64-x86_64-glew mingw-w64-i686-SDL2 mingw-w64-x86_64-SDL2 python3
For each version (jp/us/eu) that you want to build an executable for, put an existing ROM at
./baserom.<version>.z64
for asset extraction.
4. On MSYS2, navigate to the sm64pc folder and then enter ./tools/audiofile-0.3.6/
. Inside this directory, run
autoreconf -i
Only leave this directory on step 9.
PATH=/mingw64/bin:/mingw32/bin:$PATH LIBS=-lstdc++ ./configure --disable-docs
PATH=/mingw64/bin:/mingw32/bin:$PATH make
mkdir ../lib
cp libaudiofile/.libs/libaudiofile.a ../lib/
cp libaudiofile/.libs/libaudiofile.la ../lib/
tabledesign_CFLAGS := -Wno-uninitialized -laudiofile -lstdc++
PATH=/mingw64/bin:/mingw32/bin:$PATH make
(Note that mingw32 and mingw64 have been swapped. This is so you can build the 32bit application successfully.)
PATH=/mingw32/bin:/mingw64/bin:$PATH make
The game can be compiled for web browsers that support WebGL using Emscripten. To do so, install emsdk and run make TARGET_WEB=1
.
On the ./enhancements
folder, you'll find several .patch files, which can be applied in the following manner:
git apply fps.patch --ignore-whitespace --reject
If any rejections occur, you can search for them with find | grep .rej
.
Try to solve rejections through wiggle.
wiggle rejection.rej --replace
- Support for the EU version is still experimental.
- There seems to be savedata-related problems on some 64-bits builds.
- Camera controls are also bugged for some.