Triforce% is a hybrid RTA/TAS "speedrun" of Ocarina of Time which uses Arbitrary Code Execution (ACE) to install a set of data loaders in system memory, enabling arbitrary assets (scenes, objects, music, etc.) in the game ROM to be seamlessly live-patched from the host PC. By modifying the game programming and assets, beta content cut from the final version of OoT is restored and brought to life on screen. A new plot is constructed based on this beta content and on urban legends from the late '90s, culminating in Link obtaining the Triforce.
But, in front of thousands of live viewers, once we have the power of the Goddesses--and the power to make the game whatever we can imagine--what will we use this power for?
This repository does not include any ROMs or any code or assets copyrighted by Nintendo. Only content created by the Triforce% team is included.
Watch the live run: https://www.youtube.com/watch?v=2x_pqyrf9lA
To obtain the version created live on stage at MAGFest 2023's OoT ACE Meme% panel,
set the environment variable export MEMES=1
before running make
. (Or if you
have already run make
, run make clean
and then make
again.) Both the live
injection and romhack versions are supported. This replaces the beta Kokiri with
a red Amogus, and adds Goron City (Unused Version)
by SiIvaGunner (Among Us Trap Remix) which plays when you talk to it.
- Install Linux (Ubuntu / other Debian derivative), either natively or through WSL/WSL2 if you're on Windows.
- Make sure you got the Git submodules. The build system checks for some of
them but not all. You will need
libpng-dev
,libelf-dev
, andlibglib2.0-dev
for these to compile. You will also needbuild-essential
in order to be able to compile anything for your local machine. - In your python3, install
pyserial
(notserial
),pillow
, andpsutil
. - Install the N64 toolchain from https://github.com/glankk/n64. See below for more detailed instructions.
- Get a copy of zzrtl which is stable enough to work on Linux with the default
(i.e. non-Jared Johnson) scripts, e.g. 0.01r4.
https://old.z64.me/tools/zzrtl/zzrtl-0.01-r4.zip Put this somewhere outside the
Git repo (i.e. not in the
toolchain
folder). - Copy local.mk.example to local.mk and edit the paths defined there to point to the relevant tools on your computer.
- Make a
build-shortcut
folder and paste the OoT 1.0U compressed ROM into it, with the nameoot_1.0U_comp.z64
. - Make a
build-romhack
and paste the OoT 1.0U uncompressed ROM into it, with the nameoot_1.0U_uncomp.z64
. make
. Do not use-j4
etc., some of the dependencies may not be correctly tracked/rebuilt in this case. Look for aDone building
message at the end.- If you make changes to Makefiles or any other part of the build toolchain,
make sure to
make clean
.
This was tried on a mostly fresh native install of Ubuntu 20.04, and on Ubuntu 20.04 through WSL2 on Windows 10. These are modifications/notes to the installation instructions on the glank N64 toolchain github page, so you should be following those instructions but also looking at this info at the same time.
- Install
libgmp-dev
andtexinfo
. git clone
the repo instead of downloading the zip file (because of the next step).- When it says "navigate to
n64-master
", this meansgit checkout n64-ultra
. - Before ./configure, I did
sudo mkdir /opt/n64
sudo chown yourusername /opt/n64
sudo chgrp yourusername /opt/n64
- If
make install-toolchain
with-j4
or whatever fails early (without fully building and installing the compiler), delete and re-clone the repo (and checkout n64-ultra again), and then re-run it without a-j
argument. - For Triforce%, you don't need the
make
,make install
,make install-sys
, ormake install-local-exec
steps.make install-toolchain
builds and installs the compiler/linker/etc., which is all we need. - If you don't already know, one way to add
/opt/n64/bin
to PATH is to add the line
export PATH=/opt/n64/bin:$PATH
to somewhere in ~/.bashrc
, and then exit the current bash you are in and start
a new bash session.
- To check that everything is installed correctly, run
mips64-ultra-elf-gcc -v
and verify that the output is a reasonable MIPS64 GCC version info.
Director
SAURAEN
RTA Speedrunner
SAVESTATE
Scenario
SAURAEN
REBECCAETRIPP
TERUSTHEBIRD
DWANGOAC
Scene Design
CDI-FAILS
ZEL
SAURAEN
Music
SAURAEN
REBECCAETRIPP
EMM BEE SEA
Screen Text
KIM-SUKLEY
SAURAEN
Cinema Scenes
SAURAEN
DWANGOAC
DEFENESAM
BotW Model Conversion
ALI1234
SAURAEN
Animation
UNESAG
SAURAEN
RANKAISIJA
AEROARTWORK
Zelda (English Voice)
SAOIRSE
Link (Japanese Voice)
ZERO
Translator
YUKLOJ
Textures
CDI-FAILS
KIM-SUKLEY
ZEL
SAURAEN
Actor Program
SAURAEN
RANKAISIJA
Z64ME
MNGOLDENEAGLE
ZEL
Game / Actor Patches
SAURAEN
MNGOLDENEAGLE
System Patches
SAURAEN
ZEL
Cel Shading
SAURAEN
GLANK
Bootstrapper Chain
SAURAEN
Hyperspeed Loader
TERUSTHEBIRD
SAURAEN
Host Frontend
SAURAEN
THEMAS3212
TAStm32 Firmware
OWNASAURUS
SAURAEN
SRM / ACE Setup
MRCHEEZE
SAVESTATE
Build Toolchain
SAURAEN
Z64ME
Partner Creators
SWANKYBOX
RETRO GAME MECHANICS EXPLAINED
HARD4GAMES
Partner Reactors
HMK
TETRABITGAMING
OST Published By
SIIVAGUNNER
Video Editing
MUSKET012
GRAVATOS
SAVESTATE
SAURAEN
Technical Support
ZEL
Z64ME
MZXRULES
THARO
WISEGUY
JACK WALKER
Special Thanks
KAZE EMANUAR
XDANIEL
ARIANA ALMANDOZ
Executive Producer
DWANGOAC
Summer Games Done Quick 2022
Assets, Toolchain, and Performance
Copyright (C) 2019-2022
The Triforce% Team
The Legend of ZELDA: Ocarina of Time
Copyright (C) 1998
Nintendo