A native Ship of Harkinian rebuild of the Triforce% ACE/TAS run.
No ACE. No memory corruption. Mod code.
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'smods/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.
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.
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.
- Download
TrifoolPercent.o2rfrom the build-o2r workflow artifacts. - Drop it in SoH's
mods/folder. - Launch a SoH build with the
soh/Enhancements/TrifoolPercentmodule compiled in — see BUILDING.md. - Walk through the blue flame by Link's house in Kokiri Forest.
- Triforce Room PoC in the unused Besitu debug slot
- Three Triforce actors (
Piece,Chest,Light) viaActorDB - Kokiri Forest onboarding beat, Lost Woods path, Beta Kokiri NPC
- Butterfly trade on the
ITEM_BIG_POEslot - 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
Upstream had to fight the N64. We don't. The engine already gives us:
- a resource system that loads
.o2rscenes and objects without ROM patches; ActorDBandGameInteractorfor custom actors and hooks;CustomMessageManagerfor 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.
| 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. |
- Bugs / feature requests → issue templates
- General SoH-modding chat → Shipwright discussions
- Original Triforce% source → triforce-percent/triforce-percent
Click to expand
assets/— models, textures, animationsscenes/— custom and ported scenesactors/— custom actor sourcescutscenes/— cutscene scriptsscripts/— quest logic and triggerstools/—setup.sh,build_o2r.sh,build_soh.sh,pack_o2r.pysoh/— SoH module, copied into Shipwright at build timebuild/— final.o2rdocs/— documentationscreenshots/— in-game capturesupstream/— vendored Triforce% LICENSE + README.github/workflows/— CI
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.
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.