Ocarina of Time

Gecko codes for efficient VC practice (updated 07/03/15)

Started by Chain · 05 Jan 2015 · 95 replies

Page 1 of 4 · All times UTC

Last post ↓

Gecko codes for efficient VC practice (updated 07/03/15)

#1
If you want fast and efficient practice on VC you can download these gecko codes here. Simply drop this file in the "codes" folder on your SD card. To get Gecko on your wii, download gecko here then take the folder named "Gecko 1931" from the zip file you downloaded and copy it to the "Apps" folder on your SD card. There should be a gecko icon on homebrew which you can use to boot up gecko. On gecko go to launch channel, select oot and it should boot the codes automatically.

Update log:

  • 07/03/15 Reload area code and soft reset code added. CREDIT GOES TO JIMMIE FOR MAKING THESE THANKS DUDE.
  • 05/25/15 Included some new locations, included light arrows and fire arrows for MST people (who should be running all dungeons), removed the dumb boots switch code and removed the code to give you inventory items (so that bottles are no longer locked). The defualt value for age has been set to adult instead of child.
  • 04/01/15 quite a few button conditionals changed. The modify health code has only two modes, infinite health and critical health. Finally got around to adding the nut and stick upgrades. The tower collapse timer is frozen. There are two teleport codes so you can save and warp to two different locations. Added a code to save and load which flags have been triggered!
  • 02/12/15 button conditionals for dying and speed boost switched.
  • 02/07/15 wrong warp, speed boost + boots switch added.



A nice summary of the button conditional codes can be found here (credit goes to scaramanga for making this). The codes included in this file are:

  • d-pad left to save location 1, R+d-pad left to save location 2. d-pad right to teleport to saved location 1, R+d-pad right to saved location 2.


  • Wrong warp. This code works by allowing you to modify your rupee count which decides your location, the list of locations is here. Once you've set your rupee count (L+dpad up to increase L+dpad down to decrease) to the location you want to go to, you simply walk through a loading zone (or use R+L+dpad down to kill yourself) and hold L+A.
  • Reload area. Press L+R+A+B to reload the area you're in. This can be combined with the wrong warp code to instantly wrong warp you from wherever you are.
  • Soft reset. Press start+L+R+A+B to activate.


  • Save which flags you have triggered by pressing L+R+d-pad left and then load the saved flags by pressing L+R+d-pad right. When you reload the flags the effect usually only takes place after you've passed through a loading zone so you must re-enter the room for the flags to be set back to their initial state (switches you step on are an exception to this, there may be others). If you simply load flags without saving them you will set the flags back to their default value so if your file has already beaten a certain boss you can simply load flags and that boss will no longer be defeated. You can also only load flags in the room you saved them in so if you save the flags in deku tree before breaking the web then you must also load them in deku tree for the web to reappear. Not all flags get saved, I don't think cutscene flags are saved but most flags useful for practice are saved like which webs have been burnt, which rupees you've collected in kokiri forest etc.


  • d-pad up to levitate
  • dpad down for a huge speedboost
  • A+B+R to fall through the floor (useful for escaping cutscenes)


  • R+dpad up to toggle between being adult Link and child Link. The effect only occurs once you pass through a loading zone. The default is set to adult Link so when you first pass through a loading zone, you will always change to adult unless you press R+dpad up.
  • R + L + d-pad down to die (only works when infinite health has been toggled off)
  • d-pad down + R to die to toggle between having infinite health and having half a heart


Here are some codes which don't involve button conditionals:

  • The tower collapse timer is frozen.
  • Able to equip all c-items (for instance megaton hammer as child)
  • Able to use c-items anywhere (set farore's wind outside of a temple for example)
  • Infinite ammo, magic and small keys
  • Ammo + wallet upgrades and gold scale
  • Some inventory (like farore's wind, ocarina, hookshot etc.)
  • All songs, stones and medallions


These codes only work on the Japanese 1.2 version of oot and the codes with button conditionals (like teleporting and levitating etc.) only work with the gamecube controller (or N64 controller if you have an N64 to gamecube adapter) and will not work with the classic controller.
Thanks to everyone in the forum for pointing out various problems and providing solutions! If anyone has any requests for other cheat codes please let me know. The text file for anyone who wants to improve / make adjustments is here.

Troubleshooting:

If you have installed gecko but the launch channel option does not appear it is because you need to patch IOS36 with simple IOS patcher. If your wii is not connected to the internet it will complain that it can't find the patched ios to install. Instead, you have to download the ios (here) and place it onto your sd card before running the installer. If you launch the game and it says codes booting yet none of the codes work, it is probably because you have the wrong hook type. Go to config options and set the gecko hook type to default.

Last edited 03 Jul 2015, 10:35 by Chain.

Re: Gecko codes for efficient VC practice

#2
That's really awesome! The d-pad codes will be really helpful for things like unbuffered swordless dot skip and such. Thanks for making these!

Re: Gecko codes for efficient VC practice

#3
Just gonna post this for my personal use: http://smashboards.com/threads/guide-to-ar-and-gecko-code-writing-for-complete-noobs.336650/

Thanks to that I can pretty safely say that I can convert N64 addresses -> VC addresses as long as I have a single code for an NTSC J inject that modifies something like rupee count.

Anyway, Link's instance is located at address 8104F2F0 in VC. According to my mhs documentation, the y rotation value that immediately affects Link is at offset 0xB4 from the start of the instance, or 8104F3A4. Similarly, Link's X coordinate is at offset 0x24 from the instance start (8104F314)

Also, why won't the codes work with VC U? Is the rom different, or is it just the wad?

Last edited 05 Jan 2015, 23:36 by mzxrules.

Re: Gecko codes for efficient VC practice

#4
Wow just tested the angle address and it works! Now the code saves your position and angle (:

I think it's just to do with the wad but you can easily convert NTSC-J codes to NTSC-U codes by simply by subtracting all the NTSC-J addresses by F0120.

Since you know how to convert the N64 addresses to VC ones would it be possible for you to convert sockfolder's MHS addresses to VC ones or tell me how to do it? If I can get my hands on more addresses I'll write more codes.

Re: Gecko codes for efficient VC practice

#5
If the roms are the same, then you should be able to use the NTSC 1.2 rom to find addresses. Converting from NTSC 1.2 N64 -> VC J should be as simple as adding a factor of E7 4000 to a NTSC 1.2 gameshark code.

You mentioned your input codes don't work for all controllers? What about using these input addresses for 1.2:

801C84B4 00??

00 No buttons
01 D-Right
02 D-Left
04 D-Down
08 D-Up
10 Start
20 Z
40 B
80 A


801C84B5 00??

00 No button
01 C-Right
02 C-Left
04 C-Down
08 C-Up
10 R
20 L

For the MHS addresses, if you're referring to the addresses linked in the sticky those are for 1.0.

Subtracting 8E BA80 from any address in the list will give you the real N64 address, except you have to take into account a weird speed hack done with N64 emulation. Basically, the N64 stores integer data in big endian form, while most pcs operate in little endian. In big endian the number 258 would be stored as 00 00 01 02 while in little endian it will be stored as 02 01 00 00. In order to avoid flipping values every time they're read in, the entire rom is read in as a series of 32 bit integers and then flipped. Because of this, the last digit of an MHS address may need to be converted to get an N64 address.

To convert 8 bit values:
0 -> 3, 1 -> 2, 2 -> 1, 3 -> 0;  4 -> 7, 5 -> 6, 6 -> 5, 7 -> 4;  8 -> B, 9 -> A, A -> 9, B -> 8;  C -> F, D -> E, E -> D, F -> C;

To convert 16 bit values:
0 -> 2, 2 -> 0; 4 -> 6, 6 -> 4; etc

32 bit values do not need to be converted.


The following addresses

The addresses documented between 00A06050 - 00A073A0 can definitely be converted trivially, as this is where the save data falls. A06050 is equivalent to 8011AC80 in NTSC 1.2. There's also a good chance that everything up to at least address A076CC is still in the same relative location, since the game uses address 8011AC80 to reach these variables in 1.0 at least.

Addresses between the ranges 00AC64B0 - 00AC6F1B are definitely part of Link's instance variables. AC64D4 is equivalent to offset 0x24 from the start of Link's instance variables, and contains the X coordinate. Sockfolder's variable list erroneously documents it as being the Y coordinate, since he's assuming a different axis mapping than what the developers used (from negative to positive, X runs west->east, Y goes up against gravity, Z runs north -> south). These addresses might be convertible, but if it can't be done, you can use MHS to find them. Link's Y velocity address (used in your levitation code) is 801DB350

Re: Gecko codes for efficient VC practice

#6
It doesn't seem to work. I got the entrance address (or something like it) for 1.2 from http://bombch.us/ulX (it's at the very bottom of the page). Then I added the offset value:

8011 ACE7 + E7 4000 = 80F8ECE7

But this is the address for Link's B button. I think the offset value between VC and N64 isn't constant but depends on which chunk of the memory that you are in.

I also tried using the addresses you gave for button conditionals but they did not seem to work. Maybe it works different in Gecko because you have one address for the gamecube controller and another one for the classic controller when writing button conditionals.

Re: Gecko codes for efficient VC practice

#7
The reason for this is likely that you're writing your code incorrectly. 8011ACE8 is the address used for the current B button, so you're writing a 16 or 32 bit value by mistake. The code should be 00F8ECE7 000000xx according to that gecko code making link.

That said, 8011ACE7 isn't used directly for setting an entrance. It's used to store what scene the player was in when the game was last saved so that when the game is reloaded it can easily calculate the save warp entrance index via jump table. In pj64 I can't get the code to work because it simply doesn't write the value fast enough.

8011AC82 is the current entrance index address. You'd set this to the values in http://www.zeldaspeedruns.com/oot/wrongwarp/entrance-table. Your other option would be to enable map select by converting this n64 code:

810F1A74 00B9
810F1A76 E430
810F1A78 00BA
810F1A7A 1190
810F1A7C 8080
810F1A7E 09C0
810F1A80 8080
810F1A82 3720
810F1A88 8080
810F1A8A 1C14
810F1A8C 8080
810F1A8E 1C08

The address I gave for button conditionals shouldn't work differently. VC 1.2 rom is identical to NTSC 1.2, so the game can't possibly handle input differently for the two controllers. An if equal then execute next line code for when Z + D-Right is held should be 0903C4B4 00000021 according to that gecko code making link.

Re: Gecko codes for efficient VC practice

#8
Okay well I tried the entrance value and save warp entrance value codes and they didn't do anything :( on the plus side the map selection code worked! The map selection code does not work on my rom though (I guess because it's 1.0)

I also tried your button conditional code and it would crash before the game was even booted. The code I've been using is:

289F6A88 0000XXXX

I got the first two digits from http://geckocodes.org/index.php?arsenal=2

Re: Gecko codes for efficient VC practice

#9
The code types on the smash board are different than the ones for the wii then. Looks like there's no 8 bit conditional codes, which kind of sucks.

Instead
0903C4B4 00000021

should be
2903C4B4 00002100

The numbers are different because it's checking the input codes for an N64 controller. This is what the other controller types should be mapping to.

I'm not surprised that the save warp value one doesn't work to well, but I feel like the 8011AC82 should work. Its a 2 byte value rather than a 1 byte one. If you have it set so that it's always on and writing just one byte then you should be able to observe oddities when walking around eventually.

Re: Gecko codes for efficient VC practice

#10
Well the game no longer crashes now but the button conditional still doesn't work ): it works if I set the values all to 0 so that no input is required but as soon as I set the input to some value it stops working. I've tried putting the values as:

000000XX and 0000XX00 and neither seems to work.

As for the entrance value code I didn't test it thoroughly so their may have been some oddities if I explored more but I went through a few loading zones with nothing weird.

Re: Gecko codes for efficient VC practice

#11
This is unrelated, but I would like to use these codes for practice. However my Gecko program does not have a "launch channel" option. I only have Launch Game which loads whatever disc is in my Wii and I'd like to know if there's a different type/version of gecko that has the launch channel option, because I can't find one anywhere.

Re: Gecko codes for efficient VC practice

#12
This is a tutorial on how to get gecko with launch channel (probably not the best tutorial but the first I found):
https://www.youtube.com/watch?v=2O_8s5SE6Pw

There's no need to mess around with options in gecko like he does though, once you put the gct file in the codes folder in your sd card and launch channel it should boot the codes automatically.

Re: Gecko codes for efficient VC practice

#13

This is unrelated, but I would like to use these codes for practice. However my Gecko program does not have a "launch channel" option. I only have Launch Game which loads whatever disc is in my Wii and I'd like to know if there's a different type/version of gecko that has the launch channel option, because I can't find one anywhere.


I had the same problem. To solve it, you have to patch IOS36 with the Simple IOS Patcher. Afterwards the options 'Launch channel' and 'Launch Rebooter' should show up.

By the way, has anyone got this to work with USB Loader GX? I don't want to use my crappy SD card...

Last edited 12 Jan 2015, 18:45 by scaramanga.

Re: Gecko codes for efficient VC practice

#14

I had the same problem. To solve it, you have to patch IOS36 with the Simple IOS Patcher. Afterwards the options 'Launch channel' and 'Launch Rebooter' should show up.

By the way, has anyone got this to work with USB Loader GX? I don't want to use my crappy SD card...


When I ran the program, it complained that it couldn't find the patched ios to install. My wii isn't hooked up to the internet, so I couldn't download it directly.
Instead, I had to download the ios on my pc and then load it onto my sd card before running the installer.

I got the ios from here (it's called ios36-64-v3351.wad): http://det1re.de/d/index.php?dir=wads/&sort=date&order=desc

Re: Gecko codes for efficient VC practice

#15
so i downloaded the files and put them in codes and when i boot the channel it says "codes found, applying" but when i get in game the codes doont work? i feel like im doing something wrong. im on a jp 1.2 wad, so it should work
Edit: well after 3 hours i found out i was on the wrong hook type, i can finally start practicing  ;D

Last edited 17 Jan 2015, 08:45 by nighthawkraven18.

Re: Gecko codes for efficient VC practice

#16
nighthawkraven, could you tell me which hook type is needed? I'd like to edit the main post to help others with the same problem.

Re: Gecko codes for efficient VC practice

#17
Default hook type. my little brother used to play call of duty so it was set on ossleepthread, which was my problem.

Re: Gecko codes for efficient VC practice

#18
So I've been working on a wrong warp code recently which would allow the player to wrong warp anywhere from any location. The code would basically place Link out of bounds so he voids out and it would then change the entrance address to the required location.

So I used to entrance table on ZSR and found two addresses on dolphin which correspond to the values on the table. Modifying these two addresses had the same effect which was to cause a wrong warp (both addresses gave a wrong warp to the same location).

So I tried exiting Link's house (hex value of 211) and I locked the value of this address to 0 and ended up in the water temple (hex value 423). If I instead locked the value to 1 and left Link's house I ended up at Zora's fountain from the sapphire cs (10E). Similarly locking the address at 2,3,4 and 5 left me at kokiri forest (211), hyrule field from zora's river on land (181), Deku boss room (40F) and Hyrule field from Impa cutscene (594).

I'm failing to see the pattern here and was wondering if someone much more knowledgeable about the game than me (Mzxrules) could explain it to me so I can find which value I need to set the address to for a given area to get the desired location.

Re: Gecko codes for efficient VC practice

#19
You're locking half the value down.

Exiting Link's house (0211) is becoming Water Temple main entrance (0011), Zora's Fountain sapphire cutscene (0111), Hyrule Field from Zora's River, water spawn (311), Deku Tree Boss Room (411), Hyrule Field from Getting the Ocarina of Time (511)

Re: Gecko codes for efficient VC practice

#20
Cool I'm dumb, thanks again Mzxrules (:

I've just finished updating the gecko codes to now include the wrong warp code and a couple of other codes. I remember before that someone complained to me that the button conditionals weren't very well thought out and it's because I've been making them to be comfortable on my N64 controller lol. If someone has a better set of button conditionals that I could use that would be nicer on a gamecube controller please let me know.

For the wrong warp code please let me know if you want any new locations added. Shoutouts to the ZSR entrance table which made this code possible.

Last edited 07 Feb 2015, 19:36 by Chain.

Re: Gecko codes for efficient VC practice (updated 02/07/15)

#21
ive been messing around with these codes a bunch, and i only have 1 gripe. the dpad down to die is sometimes really inconvenient and ill usually accidently kill link after using the speed code. overall these are really helpful and fun. i somehow activated crooked cart in hyrule field after i was messing around with ess and the speed code. crashed in like 2 seconds :p

Re: Gecko codes for efficient VC practice (updated 02/07/15)

#22
okay that's fair lol, should I switch the buttons around so that dpad down makes you go faster and L + R + dpad down makes you die?

Re: Gecko codes for efficient VC practice (updated 02/12/15)

#24
is there a way to modify the teleporter code to work for CC pro ?

Re: Gecko codes for efficient VC practice (updated 02/12/15)

#25
Yeah it's possible although I need to change all the button conditional codes, I'll probably get around to doing it soon though. Unfortunately I don't have a classic controller so I'll need you to test some code before I make a version of the main code which works for classic controller. I'll edit this post later with a code for you to test.

EDIT:

Okay download this gct file and test if pressing x makes you levitate. If this works then I'll update the main set of codes to work with classic controller.

Last edited 15 Feb 2015, 10:40 by Chain.

Re: Gecko codes for efficient VC practice (updated 02/12/15)

#26
No presssing any of the buttons didnt have an effect.

A+B+R to fall through the floor works on the old code I should say. It's only the dpad that doesn't do anything

Re: Gecko codes for efficient VC practice (updated 02/12/15)

#27
I just need a few codes for a file in addition to these I guess.

Farore's Wind on B - 0x00A060BB set to 13
Deku Stick on B - 0x00A060BB set to 0
Bugs on C-Right - 0x00A060B8 set to 29 (I think)

These are for JPN 1.0 and I need them for JPN 1.2 for VC practice. If anybody's feeling generous....

Re: Gecko codes for efficient VC practice (updated 02/12/15)

#28
Ah okay Vince, that's interesting. I'll edit this post later with something for you to test as I think I can fix it.

Otaku, I can make codes for items on B if you really want but there's not much point since there's already a code to let you use restricted items anywhere. This means you can already use stick as adult or farore's wind in boss rooms. I believe I included farore's wind in the main set of codes but if not I can quickly change that.

I know that the current set of items in the inventory code isn't good for other categories like no rba/ww where you need bow, or for instance if you need a fairy. The next thing I want to work on is making an in-game menu where you can decide which items you have in your inventory, how many hearts you have etc. Unfortunately my knowledge of gecko codes is limited to simple memory address manipulations but if I get enough time/motivation this is the next big code I will work on.

Re: Gecko codes for efficient VC practice (updated 02/12/15)

#29
With my discovery of that hidden dev code in the commercial releases of oot, I learned that GCN and VC does not register D-Left, D-Right, and D-Down input, which is probably why my input code from earlier didn't work (since it checks for D-Right). Converting it to 00002100 should work I think

Re: Gecko codes for efficient VC practice (updated 02/12/15)

#30
Is the download still available? the link redirects me to the filedropper website but no download