This time we’ll use the decompilation of Zelda: Ocarina of Time for N64 to install the game, allowing us to enjoy it at 60FPS along with many other options.
Table of Contents:
Installation:
There is a
precompiled binary available
for Linux, so we just need to make sure we have one of the
supported ROMs
.
Download the
binary
from the project’s GitHub
and unzip it:
unzip SoH-Blair-Foxtrot-Linux.zip
Check the SHA1
hash of the ROM
:
sha1sum ~/PAL\ 1.1.z64
cfbb98d392e4a9d39da8285d10cbef3974c2f012 /home/kr0m/PAL 1.1.z64
It is indeed one of the supported versions, so we move the ROM
to the directory where we unzipped the binary:
mv ~/PAL\ 1.1.z64 ./
Run the binary:
./soh.appimage
In this screenshot you can see the game — fullscreen mode is fully supported.
By the way, the Xbox
controller works perfectly.
Building:
If the precompiled binary gives any issues, we can always build the software ourselves .
Install the dependencies as indicated in the documentation :
apt-get install gcc g++ clang git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libopengl-dev libopus-dev libopusfile-dev
Clone the repository:
git clone https://github.com/HarbourMasters/Shipwright.git
cd Shipwright
git submodule update --init
Keep in mind that only certain ROM versions are supported.
Check the SHA1
hash of the ROM
:
sha1sum ~/PAL\ 1.1.z64
cfbb98d392e4a9d39da8285d10cbef3974c2f012 /home/kr0m/PAL 1.1.z64
It’s supported, so move the ROM
to the directory where you cloned the repository:
mv ~/PAL\ 1.1.z64 ./
Generate the Ninja
project:
cmake -H. -Bbuild-cmake -GNinja
On my Debian 12
system, an error appeared due to the CMake
version:
PaperStreet $ ~/Shipwright> cmake -H. -Bbuild-cmake -GNinja
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
CMake 3.26.0 or higher is required. You are running version 3.25.1
The cleanest solution is to install a newer version from the backports:
echo "deb http://deb.debian.org/debian bookworm-backports main" | tee /etc/apt/sources.list.d/backports.list
apt update
apt -t bookworm-backports install cmake
Regenerate the Ninja
project:
rm -rf build-cmake
cmake -H. -Bbuild-cmake -GNinja
Generate the soh.otr
file:
cmake --build build-cmake --target GenerateSohOtr -j8
Build the project:
cmake --build build-cmake -j8
Run the binary:
./build-cmake/soh/soh.elf
When it asks to generate the OTR
, choose yes:
![]() |
![]() |
![]() |
It will ask if you want to extract any other ROM
, choose no:
Here’s a screenshot of the game — again, fullscreen is supported.
Again, the Xbox
controller works perfectly.
Master Quest:
The GameCube
and Nintendo 3DS
versions included a mode called Master Quest
with modified dungeons, improved graphics, and a mirrored world. Essentially, it was the same game with a few tweaks.
In our case, this only applies to the GameCube
version, since according to the list of
supported ROMs
, only N64
and GameCube
versions are supported — the latter being the only one that includes Master Quest
.
The GameCube
game was distributed on two discs — one for the vanilla
game and another for Master Quest
. To play this mode, we’ll need the ROM
associated with the latter:
"name": "PAL MQ",
"sha1": "f46239439f59a2a594ef83cf68ef65043b1bffe2"
The process is exactly the same as previously described, just make sure to copy both ROMs
.
Check the SHA1
hash of the ROMs
:
sha1sum ~/PAL\ 1.1.z64
sha1sum ~/Zelda,\ The\ Legend\ of\ -\ Ocarina\ of\ Time\ Master\ Quest\ Assets\ for\ the\ Ship\ of\ Harkinian\ -\ PAL\ GameCube.z64
cfbb98d392e4a9d39da8285d10cbef3974c2f012 /home/kr0m/PAL 1.1.z64
f46239439f59a2a594ef83cf68ef65043b1bffe2 /home/kr0m/Zelda, The Legend of - Ocarina of Time Master Quest Assets for the Ship of Harkinian - PAL GameCube.z64
Move the ROMs
to the directory where the
binary resides
or where the
repository was cloned
:
mv ~/PAL\ 1.1.z64 ./
mv ~/Zelda,\ The\ Legend\ of\ -\ Ocarina\ of\ Time\ Master\ Quest\ Assets\ for\ the\ Ship\ of\ Harkinian\ -\ PAL\ GameCube.z64 ./
When you access the game, you’ll see that an additional game mode is now available:
![]() |
![]() |
Advanced Options:
This port offers far more configuration options than simple emulation. Below are some of the most notable ones in my opinion.
Camera control:
Esc: Settings -> Controls -> Buttons -> C(Up/Down/Left/Right): D-Pad(Up/Down/Left/Right)
Esc: Settings -> Controls -> Camera Controls -> Third-Person Camera -> Free Look
![]() |
![]() |
Play the ocarina using the D-pad:
Esc: Settings -> Controls -> Ocarina Controls -> Dpad Ocarina Playback

Assign tunics and boots to the C-buttons:
Esc: Enhancements -> Items -> Equipment -> Assignable Tunics and Boots

Resolution:
Esc: Settings -> Graphics -> Internal Resolution

Anti-aliasing:
Esc: Settings -> Graphics -> Anti-aliasing(MSAA)

FPS:
Esc: Settings -> Graphics -> Current FPS: 60
Esc: Settings -> Graphics -> Match Refresh Rate

Auto save:
Esc: Enhancements -> Quality of Life -> Saving -> Autosave
Esc: Enhancements -> Quality of Life -> Saving -> Remember Save Location

Bug fixes:
Esc: Enhancements -> Fixes

Cosmetics:
Esc: Enhancements -> Cosmetics Editor

Cheats:
Esc: Enhancements -> Cheats

Extra game modes:
Esc: Enhancements -> Extra Modes

Beta levels, developer test environments:
Esc: Cheats -> Beta Quest -> Enable Beta Quest
