This page looks best with JavaScript enabled

Zelda: Ocarina of Time natively on Linux

 ·  🎃 kr0m

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