From Twilight Princess Wiki
Jump to navigation Jump to search


Written in C++
Operating System Dolphin

Download.png Git.png Globe.png

A randomizer is a modification to a game that randomizes various things in order to provide new challenges, fun and (most importantly) variation.

Typically the randomizer affects items and collectibles, however they often ship with other cosmetic changes such as music manipulation(s), region modifications etc.

Twilight Princess has a very unique state system which enforces some region modifications in order to guarantee a completable glitchless seed.



The Randomizer has an interactive console that can be used as follows:

  • Navigation
    • Page: D-Pad Left/Right
    • Option: D-Pad Up/Down
  • Value Adjustment
    • +/- 1: A/B
    • +/- 10: X/Y
  • Special Hotkeys
    • Toggle Console: R + Z
    • Trigger Generation: R + Start (requires the console to be shown)

Note: The generation will start automatically when creating a new file with the current seed


  1. Settings
    • Red amount of the background colour (0-FF)
    • Green amount of the background colour (0-FF)
    • Blue amount of the background colour (0-FF)
    • Alpha (opacity) of the background (0-FF)
    • True Pause If yes: Button inputs won't affect gameplay while the console is open If no: You can continue playing while the console is open
    • Input Buffering If yes: Hodling a button will trigger it each frame (free GV, frame perfect rolls, ... - comes with risk though)
  2. Seed
    • Enable Rando if yes: Item replacements will be searched upon collection; If no: Item replacement will be skipped regardless of seed
    • Custom Seed is yes: Automatic seed advance is disabled; If no: Seed will update every frame
    • Seed[1-8] The seed values (left to right)
  3. Debug Info
    • Function The function name that handled the last itemGet
    • Source Source check information
    • Dest Destination check information
    • Total Checks Number of checks in the pool
    • Layer Checks Number of priority checks
    • Empty Empty source checks (should be 0)
    • Active Seed Seed that was used for last generation
    • Checksum Resulting checksum for current randomization (should be the same for same seed)

Note: The low number of checks (compared to the number of possible seeds) results in a lot of identical randomizations (even if the seed is different)


There are 3 stages of development:

Stage 1 - alpha - non-logic, non-static

The very first alpha randomizer was a non-logic non-static randomizer which means that it neither featured any sort of logic nor was it a static replacement - The replacement item was calculated randomly upon receiving an item.

This concept obviously had several issues and thus was mainly for testing

Main issues:

  1. Farming By saving before opening a chest or collecting a rupee with text (more on that later) you could simply reload the save if the item outcome was not beneficial The only problem this features is that every reset renders whatever item you got during this pickup unobtainable as it is now removed out of the item pool
  2. Rupees with Text Rupees with text apparently trigger the function that we hook into to replace the item
    Concept flowchart of the TP Randomizer

Stage 2 - beta - internal-logic, static

This version is quite an improvement to the alpha and includes, as the name implies, some logic to the replacement. Another plus is the static replacement which fixes both

of the previous issues since

  1. The item of one chest is going to be exactly the same (static)
  2. Pickups are checked against there location to find their corresponding chest, when nothing is found that means it's not a chest (or incorrect check location)

Here's an example of how the generator looks like:

Setting Up

Playing Randomizer on the Wii:

Setting up your SD Card:

  • Download Nintendont files
  • Extract “nintendont” folder to the apps folder of your SD card
    • ( “SD:\apps\nintendont” )
  • Create a folder on the root of your SD card called “codes”
    • ( “SD:\codes” )
  • Download GCMM 1.4f
  • Extract “gcmm” folder to the apps folder of your SD card
    • ( “SD:\apps\gcmm” )
  • Create a folder on the root of your SD card called “MCBACKUP”
    • ( “SD:\MCBACKUP” )

Using Randomizer on Wii:

  • Download the RELloader cheat for your region
    • (Scroll down, right-click and Save As GZ2(x)01.gct)
  • Place the cheat in the “codes” folder on your SD card
    • ( “SD:\codes\GZ2(x)01.gct” )
  • Download the latest version of the Randomizer for your game region
  • Place the “.gci” in the MCBACKUP folder on your SD card
    • ( “SD:\MCBACKUP\randomizer.gci” )
  • Insert your SD card into the Wii and open Homebrew Channel
  • Launch GCMM
  • Select SD Card as source device
  • Press X to restore files to your memory card from SD
  • Select your Memory Card
  • Select the “randomizer.gci” and press A to restore it
  • Press Start to return to Homebrew Channel
  • Launch Nintendont
  • Select SD
  • Press B to open settings
  • Turn on Cheats and press B to return
  • Boot GC Disc in Drive
  • Enjoy TP Randomizer!

Playing Randomizer on Dolphin:

  • Download the RELloader cheat for your region
  • Open Dolphin, right click on TP and open properties
  • Enter the “Gecko Codes” tab and edit config
  • Make a new line with “[Gecko]” and paste the code under
  • Save and close config. Make sure the code is enabled
  • Download the latest version of the Randomizer for your game region
  • Open Dolphin, go to tools, and open the Memory Card Manager
  • Import the “randomizer.gci” to your memory card
  • Launch TP
  • Enjoy TP Randomizer!