Randomizer

From Twilight Princess Wiki
Jump to navigation Jump to search

Introduction[edit | edit source]

Randomizer
Author
Written in C++
Operating System Dolphin
Links

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.

Usage[edit | edit source]

Navigation[edit | edit source]

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

Pages[edit | edit source]

  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)

Development[edit | edit source]

There are 3 stages of development:

Stage 1 - alpha - non-logic, non-static[edit | edit source]

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[edit | edit source]

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:
Rando-beta-example.png

Setting Up[edit | edit source]

Playing Randomizer on the Wii:[edit | edit source]

Setting up your SD Card:[edit | edit source]

  • 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:[edit | edit source]

  • 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:[edit | edit source]

  • 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!