Triforce native PC recompilation guide

Triforce (triforceproject.com) is the unified GPL-3.0-or-later native PC static recompilation of the Switch 2 edition of The Legend of Zelda: Ocarina of Time, built off NotRexed's Hookshot and merged with NX2navi into one codebase.

295,178ARM64 functions lifted to C
18,403Pre-walked Vulkan 1.3 pipelines
v0.3.7Latest Gitea Windows build
Gigabyte GeForce RTX 4070 Aero OC 12GB graphics card with triple cooling fans
Triforce replays NVN2 streams on Vulkan 1.3 GPUs with VK_EXT_mesh_shader and optional DLSS or RenoDX HDR.

The Three Pieces behind Triforce

Rather than interpreting guest CPU instructions at runtime like a console emulator, Triforce splits native execution across three distinct subsystems in its GPL-3.0 source tree.

Power · nx2/

Ahead-of-time ARM64 compiler

nx2/nup.py and third_party/zbic unpack the Switch 2 main NSO (Build ID e0f3ccfa), then nx2/lift.py translates 17,668,191 AArch64 instructions and 1,475 jump tables into 57 C chunks compiled locally via bundled llvm-mingw (clang + lld).

Wisdom · host/

Native Horizon OS boundary

host/ replaces Nintendo's Horizon OS at the nn:: SDK boundary with 485 high-level functions, reserving a 512 GB virtual address arena with the game image mapped at 0x80000000, Win32 fibers for nn::os, Opus audio decoding, and SDL controller input.

Courage · gpu/vk/

NVN2 to Vulkan 1.3 renderer

host/nvn_native.c records Switch 2 NVN2 commands (API 231.40) while gpu/vk/ lowers Ampere SM86 (Nin_Ounce_NVN2) shaders through Maxwell into SPIR-V via Eden IR and Sirit, driving native mesh shaders and HMMA cooperative matrices.

Select your Triforce release asset

Compare verified byte counts, SHA-256 digests, and installation commands for Windows TriforceSetup.exe, offline build tools, the Linux test AppImage, and the Gitea source tree.

Release fileTriforceSetup.exe
Release tagv0.3.7
Verified byte size638,464 B (623.5 KiB)
Repository hostgit.triforceproject.com

Windows 10/11 x64 installer. Fetches Triforce-Tools.zip once (~269 MiB) and compiles native C chunks locally via llvm-mingw.

SHA-256 digest

9e0f74c88de5a7a887796a61d54f99166bb7923ca0a2f2c093b10dfc2512dda5

Launch or build sequence

Run TriforceSetup.exe -> Choose your .nup or romfs+exefs dump -> Build in %LOCALAPPDATA%\Triforce
Open Gitea releases

Configure options INI and save migration

Pick your GPU VRAM tier, output resolution, upscaler, and previous Switch 2 runner to generate a ready-to-drop triforce_options.ini alongside exact Windows and Linux save paths.

Generated triforce_options.ini
; Generated for Triforce (place beside Triforce.exe)
[graphics]
quality_preset = 3
output_res = 1
resolution = 0
upscaling = 2
sharpness = 35
frame_generation = 0
frame_pacing = 1
ultrawide = 0
handheld_profile = 0
fullscreen = 1
fps_counter = 0

[gameplay]
game_speed = 1
text_speed = 0
mouse_camera = 1
controller_in_background = 0
Save folder paths & CLI command
Source (NX2navi):
  Windows: %LOCALAPPDATA%\Programs\NX2navi\game\profile\save\<account>\
  Linux:   ~/Games/Ocarina/profile/save/<account>/

Triforce target:
  Windows: <Triforce game folder>\user\save\<user id>\
  Linux:   ~/.local/share/hookshot/save/<user id>/

CLI helper:
  python -I scripts/oot_saves.py import nx2navi --keep-settings

Start and quit NX2navi once before copying if profile\save-tx exists so pending transactions flush cleanly.

Bring-your-own-game build workflow

Triforce ships zero copyrighted assets, firmware dumps, or encryption keys. You supply your own legally obtained Switch 2 edition of Ocarina of Time (Title ID 0400486024DEC000, Update v131072, Build ID e0f3ccfa) as either a single .nup container (~25.6 GB) or unpacked romfs + exefs folders.

  • One-time local AOT build: TriforceSetup.exe (~624 KB) fetches Triforce-Tools.zip once into %LOCALAPPDATA%\Triforce and compiles your dump in roughly 40 minutes using ~60 GB of temporary scratch space.
  • Fast incremental updates: Later Triforce releases reuse your compiled C object cache via Update & merge in 3 to 5 minutes without re-lifting unchanged code.
  • Unified NX2navi handover: Starting with NX2navi v0.12.0 and Triforce v0.3.7, Windows Setup auto-discovers NX2navi save profiles and backs up overwritten slots into save-backups/.
Desktop MSI Z590 motherboard with Corsair liquid CPU block and dual HyperX DDR4 memory modules
Initial ahead-of-time compilation lifts 295,178 functions across CPU cores and expects 16 GB system RAM (~10 GB active at runtime).
Curved 34-inch Dell ultrawide desktop monitor on a clean desk setup
Display options support native 21:9 and 32:9 ultrawide aspect ratios, 4K UHD output, 2x-8x frame generation, and optional MIT RenoDX HDR.
HP Dev One laptop running a Linux GNOME Wayland desktop session
Experimental Linux x86-64 AppImage builds target glibc 2.35+ and Wayland HDR10 surfaces on Vulkan 1.3 mesh-shader drivers.

Verify your downloaded installer locally

Drop your local TriforceSetup.exe, Triforce-Tools.zip, or Linux .AppImage below to compute its SHA-256 digest in your browser via WebCrypto without uploading a single byte.

Drop local TriforceSetup.exe, Triforce-Tools.zip, or .AppImage here (or click to choose file; hashed locally via WebCrypto with zero upload)
Waiting for a local release file or 64-character SHA-256 digest.

How Triforce compares across PC ports

Several projects exist across the N64 and Switch 2 Zelda PC scenes. Use this matrix to distinguish native Switch 2 recompilation from N64 ports and Switch 2 emulators.

Project Target Edition Execution Model Graphics Backend Current Status
Triforce Switch 2 (0400486024DEC000, v131072) Static AOT ARM64-to-C (llvm-mingw) NVN2 -> Vulkan 1.3 + mesh shaders Active unified mainline (v0.3.7) at triforceproject.com
NX2navi Switch 2 (0400486024DEC000) Native PC runner + launcher Vulkan 1.3 Merged into Triforce via v0.12.0 handover bridge
Hookshot (NotRexed) Switch 2 (0400486024DEC000) a64-kit AOT foundation NVN2 -> Vulkan Upstream foundation succeeded by Triforce
Ocarina Recomp / Ship of Harkinian N64 / GameCube editions MIPS static recomp / decompilation DirectX 11 / OpenGL / Metal / Vulkan Separate N64 codebase for classic assets & randomizers
Lichii / Eden / Eglantine Switch & Switch 2 titles Dynamic JIT / emulator runtime Vulkan shader translation Save files import directly into Triforce via Convert saves
Samsung 980 PRO M.2 PCIe 4.0 NVMe solid-state drive on white studio background
NVMe storage speeds up unpacking 186,583 RomFS files (24.4 GiB) and compiling 57 generated C chunks.
Close-up of black wireless controller analog stick and colored ABXY buttons
Native SDL input supports Xbox, PlayStation, and Switch button layouts plus 1:1 raw mouse camera control.

Controllers tested with SDL presets

Triforce maps Xbox, PlayStation, and Switch-layout controllers natively in Controls and supports background input.

8BitDo Ultimate 2C Wireless Controller

Hall-effect sticks and triggers with low-latency 2.4G dongle for Windows and Linux SDL input.

Check on Amazon

GameSir Super Nova Hall-Effect Gamepad

Drift-resistant Hall sensors, swappable ABXY layout, and quiet membrane face buttons for Ocarina melodies.

Check on Amazon

8BitDo Pro 2 Bluetooth Gamepad

Symmetrical dual-stick layout with Switch and X-Input modes plus rear paddles for quick camera centering.

Check on Amazon

GuliKit KK3 Max Wireless Controller

TMR electromagnetic sticks, 1000 Hz wired/wireless polling, and Switch-layout face button caps included.

Check on Amazon

Affiliate disclosure: As an Amazon Associate, triforcerecomp.wiki earns from qualifying purchases at no added cost to you.

Frequently asked Triforce questions

Direct answers covering repository locations, legal dump verification, save conversion, and hardware requirements.

What is Triforce Recomp and how does it relate to Hookshot and NX2navi?

Triforce is the open-source GPL-3.0 native PC static recompilation of the Switch 2 edition of Ocarina of Time, led by Evil with chrg6 and NX2navi contributors. It builds on NotRexed's Hookshot foundation and formally merged with NX2navi in v0.3.7 so both teams ship one unified executable.

Why is github.com/NotRexed/Hookshot returning 404?

NotRexed's earlier Hookshot repository and temporary beta mirrors were retired on GitHub. Live source code and binary installers are hosted on Triforce's self-hosted Gitea instance at git.triforceproject.com/triforce/source and git.triforceproject.com/triforce/downloads.

Does Triforce include the Switch 2 game ROM, .nup file, or keys?

No. Triforce distributes only clean-room open-source compiler, host, and Vulkan renderer code. You must supply your own legally obtained Switch 2 Ocarina of Time dump matching Title ID 0400486024DEC000, Update v131072, and main NSO Build ID e0f3ccfa.

Can I transfer my existing NX2navi, Hookshot, or Lichii save slots?

Yes. Every Switch 2 runner writes identical raw account.sav, option.sav, and slot_00/progress.sav files. Click Convert saves inside Triforce Setup (which auto-discovers NX2navi on Windows and backs up existing files to save-backups/) or run python -I scripts/oot_saves.py.

What GPU and RAM specifications are required to run Triforce?

You need a 64-bit Windows 10/11 or x86-64 Linux PC, 16 GB of system RAM (~10 GB active during gameplay), and a Vulkan 1.3 GPU supporting VK_EXT_mesh_shader (or RDNA 2 task+mesh compute fallback on Radeon RX 6700/6800/6900 cards).

Does Triforce work with RecompLauncher?

Yes. The upstream Triforce repository ships a native recomplauncher.json manifest declaring its Gitea release feed, Triforce.exe binary entry, triforce_options.ini schema, save directory, and mods folder for RecompLauncher integration.