Skip to content

About

A Ship of Harkinian port of Triforce% — the legendary TASBot Ocarina of Time ACE run — rebuilt as a real, playable quest instead of an exploit. Custom scenes, actors and cutscenes recreate the Unicorn Fountain, Triforce Room and beta content, using the triforce-percent team’s open-source assets and scripts as the reference.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

❄️🧊 Tri-FOOL-Percent 🧊❄️

A native Ship of Harkinian rebuild of the Triforce% ACE/TAS run.
No ACE. No memory corruption. Mod code.

build-o2r roadmap PRs welcome


About

TrifoolPercent rebuilds the Triforce% quest — the Chamber of Sages, Unicorn Fountain, Triforce Room, the Three Keys and the staff roll — as a Ship of Harkinian mod. Upstream Triforce% ran as an ACE payload squeezed into a corrupted save on real hardware. We rebuild the same beats as real SoH content: scenes exported with Fast64, actors registered through ActorDB, quest logic hung off GameInteractor hooks, text through CustomMessageManager, entrances rewired without touching the entrance table.

Done means a player with a legal OoT ROM can install the mod, start a new file, and play the quest from the Lost Woods to the staff roll — no debug warps, no corruption scaffolding, saves still compatible with vanilla SoH.

Two deliverables:

  • TrifoolPercent.o2r — scenes, rooms, objects, textures, dropped into SoH's mods/ folder.
  • The soh/Enhancements/TrifoolPercent/ module — compiled into a Shipwright build, gated behind one CVar toggle under Enhancements → TrifoolPercent.

No Nintendo ROM data is redistributed. SoH extracts oot.o2r from your own OoT ROM on first launch.

A note from Bubbagum88

I'm a passionate fan. The Triforce% Team built something that is, in a lot of ways, a work of art — a fulfillment of the kind of dreams Ocarina of Time players have been chasing for over two decades. I want that work experienced by every single person who wants to experience it. I took this project on because I saw a gap in the OoT community right where Ship of Harkinian and Triforce% meet, and I wanted that gap filled.

This repo uses AI. Code, docs, and CI wiring are drafted with Claude Code; I review, test, and ship every change.

Where I need help

This project is bigger than one person, and I'd love company. If any of these sound like you, open a PR or an issue — contributors get credited in CREDITS.md and in the in-game staff roll.

Skill What that looks like here
C++ / Ship of Harkinian engine Writing custom actors, wiring GameInteractor hooks, porting Triforce% patches into the soh/Enhancements/TrifoolPercent/ module.
Shipwright symbol / naming audits Grepping Shipwright headers against this repo for hallucinated or drifted symbol names (Actor_IsTalking vs. Actor_ProcessTalkRequest, invented EVENTCHKINF_* names, parallel OBJECT_* / GI_* ids, etc.) and fixing them to match upstream. AI pair-programming has broken a lot of builds this way — human eyes catch it fastest. See CLAUDE.md → "Shipwright wins on naming."
N64 / F3DEX2 graphics porting Porting Triforce%'s original N64 GFX work: OBJECT_* display lists, textures, animations, vertex data, Fast64 pipeline questions. "GFX64 stuff."
Fast64 / Blender scene editing Finishing or polishing custom scenes (Triforce Room, Unicorn Fountain, Chamber of Sages), fixing room geometry, exporting .o2r assets.
Cutscene scripting Rebuilding Triforce% cutscenes with SoH's cutscene commands — the song engine, Chamber of Sages beats, the staff-roll chain.
Texture / model art Original replacement art where upstream assets need to be re-authored, or polish on existing ports.
Playtesting Running the latest build, finding what breaks on the golden path, filing good bug reports. No code needed.
Edge-case testing Hunting the weird stuff: save/load cycles mid-quest, age-flip timing, dying inside a custom scene, equipping/dequipping items at trigger boundaries, controller re-plug during cutscenes, SoH enhancement toggles that interact badly with the mod.
Docs / build-script QA Making BUILDING.md smoother on your machine, improving docs/porting-guide/, writing tutorials.

Start points: the roadmap, the parity table, the porting checklist, or anything labeled good first issue / help wanted.

Quick start

  1. Download TrifoolPercent.o2r from the build-o2r workflow artifacts.
  2. Drop it in SoH's mods/ folder.
  3. Launch a SoH build with the soh/Enhancements/TrifoolPercent module compiled in — see BUILDING.md.
  4. Walk through the blue flame by Link's house in Kokiri Forest.

What works today

  • Triforce Room PoC in the unused Besitu debug slot
  • Three Triforce actors (Piece, Chest, Light) via ActorDB
  • Kokiri Forest onboarding beat, Lost Woods path, Beta Kokiri NPC
  • Butterfly trade on the ITEM_BIG_POE slot
  • Unicorn Fountain scene + Overture dialogue in the Test01 slot
  • Overworld Fountain entrance via Lost Woods + Door of Time adult hook
  • Entrance rewiring to scene slots instead of patching gEntranceTable
  • Long of Time age-flip consumer, Medallion-on-C, staff-roll chain, Chamber of Sages — parity, roadmap, porting checklist

Why rebuild it on SoH

Upstream had to fight the N64. We don't. The engine already gives us:

  • a resource system that loads .o2r scenes and objects without ROM patches;
  • ActorDB and GameInteractor for custom actors and hooks;
  • CustomMessageManager for new text;
  • Bunny Hood speed + jump, Ocarina time travel without the Master Sword, debug warps, a save editor;
  • widescreen, high-FPS internal timing, modern input, and a menu to toggle the mod cleanly.

Where upstream patches a routine, we hook the equivalent SoH event. Where upstream relies on ACE scaffolding, we delete it. The parity table in docs/references/triforcepercent-parity.md tracks every patch: matched, done differently, or still missing.

Documentation

Doc What's in it
docs/BUILDING.md Build the .o2r and the SoH module.
docs/BUILD_TOOLS.md Tool-by-tool pipeline walkthrough.
docs/TOOLS.md OoT / SoH ecosystem (editors, converters, references).
docs/roadmap.md Phases from PoC to release.
docs/porting-checklist.md Every mechanic / scene / actor / cutscene to port.
docs/references/triforcepercent-parity.md Patch-by-patch Triforce% ↔ TrifoolPercent status.
docs/devlog.md What was tried, what broke, why decisions landed where they did.
docs/ACKNOWLEDGEMENTS.md Triforce% Team, OoT community, references.
CONTRIBUTING.md PR guide and review checklist.
CREDITS.md Per-contributor roll.

Community

Folder structure

Click to expand
  • assets/ — models, textures, animations
  • scenes/ — custom and ported scenes
  • actors/ — custom actor sources
  • cutscenes/ — cutscene scripts
  • scripts/ — quest logic and triggers
  • tools/ — setup.sh, build_o2r.sh, build_soh.sh, pack_o2r.py
  • soh/ — SoH module, copied into Shipwright at build time
  • build/ — final .o2r
  • docs/ — documentation
  • screenshots/ — in-game captures
  • upstream/ — vendored Triforce% LICENSE + README
  • .github/workflows/ — CI

Acknowledgements

Built on the work of the Triforce% Team (the quest, the scenes, the assets), HarbourMasters (Ship of Harkinian), the zeldaret/oot decomp team, and the OoT modding and preservation community (TCRF, Zelda Wiki, The Spriters Resource). Per the upstream license, the Triforce% Team is credited in the in-game staff roll when the mod ships. Full roll in docs/ACKNOWLEDGEMENTS.md.

Contributing

PRs welcome — see CONTRIBUTING.md. Easiest paths in: pick a good first issue, grab an open row from the porting checklist or the parity table, or just drop a draft PR with a question. Build setup is in BUILDING.md; if it doesn't work on your box, that itself is a bug worth filing.

About

A Ship of Harkinian port of Triforce% — the legendary TASBot Ocarina of Time ACE run — rebuilt as a real, playable quest instead of an exploit. Custom scenes, actors and cutscenes recreate the Unicorn Fountain, Triforce Room and beta content, using the triforce-percent team’s open-source assets and scripts as the reference.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages