Skip to content

jm1358343/triforce-percent

 
 

Repository files navigation

Triforce%

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

MAGFest 2023 Content

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.

Setup

  • 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, and libglib2.0-dev for these to compile. You will also need build-essential in order to be able to compile anything for your local machine.
  • In your python3, install pyserial (not serial), pillow, and psutil.
  • 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 name oot_1.0U_comp.z64.
  • Make a build-romhack and paste the OoT 1.0U uncompressed ROM into it, with the name oot_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 a Done building message at the end.
  • If you make changes to Makefiles or any other part of the build toolchain, make sure to make clean.

N64 toolchain instructions

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 and texinfo.
  • git clone the repo instead of downloading the zip file (because of the next step).
  • When it says "navigate to n64-master", this means git 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, or make 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.

Credits

TRIFORCE% OOT ACE SHOWCASE

Director
SAURAEN

RTA Speedrunner
SAVESTATE

Scenario
SAURAEN
REBECCAETRIPP
TERUSTHEBIRD
DWANGOAC

ASSET UNIT

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

PROGRAM UNIT

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

COMMUNITY UNIT

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

PRESENTED AT

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

About

Triforce% OoT ACE Showcase source release

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 93.9%
  • Makefile 2.9%
  • Python 2.3%
  • Other 0.9%