Twilight Princess Randomizer + Dusk — Setup & Compatibility
TPR (Twilight Princess Randomizer) v1.3.0 runs on Dusk via the standard memory-card REL loader without ISO patching. Setup workflow, current support, and what's not yet possible.
Twilight Princess Randomizer (TPR) is the canonical TP randomizer — maintained by the speedrunning community, GameCube-version-only, and built around runtime injection rather than ISO patching. That last property is what makes it compatible with Dusklight.
The project
| Project | Twilight Princess Randomizer (TPR) |
| Org | zsrtp — Zelda Speedruns Twilight Princess |
| Code | github.com/zsrtp/Randomizer |
| Web generator | tprandomizer.com |
| Wiki | wiki.tprandomizer.com |
| Current version | v1.3.0 (released 2026-04-25) |
| Languages | C++ 81.9%, Python, PowerPC asm |
| Maintainers | AECX (founder), Zephiles (reverse engineering), lunarsoap5 (project lead), vbn598, Isaac |
| Community | Discord, 7,911 members; active racing at racetime.gg/tpr |
How it works — and why it works with Dusklight
The randomizer does not patch your ISO. From the official Randomizer Guide wiki:
“A script to patch the iso with the randomizer is in the works at the moment.”
Translation: as of v1.3.0, the ISO stays vanilla. The randomization lives in two memory-card files that you place in Dolphin/Dusklight’s GCI folder:
| File | What it does |
|---|---|
Rel_Loader.gci | Loads the randomizer REL (relocatable module) into memory at boot |
seedData.gci | Encodes the specific random seed and rules generated for your run |
At runtime, the loader hooks into TP’s startup sequence and overlays randomized item logic without touching the disc data. The ISO’s SHA-1 stays bit-identical.
Why this matters for Dusk: Dusk’s iso_validate.cpp computes a hash of the disc image and rejects anything that doesn’t match the known-good GZ2E01 or GZ2P01 hash. ISO-patching randomizers would fail this check. TPR doesn’t patch the ISO, so the hash check passes, and the runtime REL injection is what triggers all the randomization.
There are no TPR-related issues on the Dusklight tracker (as of 2026-05-13), which is consistent with “it just works.”
Caveat: this is editorial inference based on the documented architectures. We haven’t done a full TPR playthrough on Dusklight ourselves to certify every randomizer scenario. If you hit a TPR-specific issue on Dusklight, file it on the Dusklight tracker and we’ll update this page.
Setup workflow
What you need
- A legally-dumped GameCube TP ISO (USA, PAL, or JP — TPR supports all three)
- Dusklight v1.0.0+ installed
- An empty TP memory card or willingness to use an alternate slot
Steps
-
Generate a seed at tprandomizer.com. Pick settings (item pool, logic difficulty, glitches on/off, cosmetics). The generator returns a download containing
Rel_Loader.gciandseedData.gci. -
Place the GCIs in Dusklight’s memory card folder:
- Windows:
%APPDATA%\TwilitRealm\Dusk\USA\Card A\ - macOS:
~/Library/Application Support/TwilitRealm/Dusk/USA/Card A/ - Linux / Steam Deck:
~/.local/share/TwilitRealm/Dusk/USA/Card A/ - Android:
/sdcard/Android/data/dev.twilitrealm.dusk/files/USA/Card A/ - Use
EUR/instead ofUSA/for PAL,JAP/for Japan once supported.
- Windows:
-
Boot Dusklight and load your vanilla TP ISO normally. Hash verification passes (the ISO is untouched).
-
In-game, the loader takes over at startup. From there it’s a TPR run — consult the TPR wiki for game-specific guidance.
If anything goes wrong, the Dolphin Guide on the TPR wiki applies to Dusklight too because they use the same memory-card and Gecko code conventions.
What’s not supported
HD / Wii U / Switch / mobile randomizers
| Target | Status |
|---|---|
| GameCube TP | ✅ Official TPR, v1.3.0 |
| Wii TP (real HW or vWii via Nintendont) | ✅ Runs GC TPR through Nintendont |
| TP HD (Wii U Cemu) | ❌ No official HD randomizer. A defunct community entrance-rando beta exists at sites.google.com but is unmaintained |
| Switch (homebrew) | ❌ Not applicable; Dusklight team has ruled out Switch ports |
| Android / iOS via Dusklight | ⚠️ Unverified — the GCI loader path should work, but we haven’t tested |
ISO patching
Coming eventually per the TPR wiki (“A script to patch the iso with the randomizer is in the works”). When/if it ships, that would be an alternative install path — for now, the memory-card REL loader is the only path.
Archipelago (multi-world randomizer)
If you want to drop TP into a multi-game randomizer race (e.g., TP + OoT + Pokémon all randomized together, items shared across worlds), there’s a third-party Archipelago apworld:
github.com/WritingHusky/Twilight_Princess_apworld
Same target (GameCube TP), same REL-loader injection method. Compatible with Dusklight on the same logic as TPR.
Related
- Hash verification failed — what would happen if a future ISO-patching randomizer shipped
- Dolphin save migration — GCI folder mechanics
- Save file locations — where the loader GCIs go
- Dusklight vs Dolphin — randomizer side-by-side
- Pillar guide
Last updated 2026-05-14. TPR architecture, version, and team sourced from the zsrtp GitHub org and the TPR wiki. We haven’t done a full TPR playthrough on Dusklight — if your run hits Dusklight-specific issues, file them on the Dusklight tracker.