The Legend of Zelda: Ocarina of Time
|The Legend of Zelda: Ocarina of Time|
Also known as: Zelda no Densetsu: Toki no Ocarina (JP)
This game has unused animations.
This game has a notes page
This game has a prototype article
This game has a bugs page
This game has a prerelease article
It's a bird... It's a plain... It's Ocarina of Time!
- 1 Unused Content
- 1.1 Animations
- 1.2 Atmosphere
- 1.3 Cutscenes
- 1.4 Resources
- 1.5 Data
- 1.6 Uncategorized
- 2 Development Leftovers
- 3 Debug Content
- 4 Ura Zelda Leftovers
- 5 Miscellaneous Content
| Unused Link Animations|
Never forget the jump strike.
| Unused NPC Animations|
What do the dolls do when no one is watching?
| Unused Camera Settings|
Camera, camera, on the wall, which is the fairest angle of all?
| Unused Environment Settings|
Through sun and snow we all shall go.
| Alternate Scene Setups|
The ghosts of development past.
| Unused Cutscenes|
I bet you haven't seen these scenes.
| Unused Actors, Objects, & Variables|
ALL GLORY TO THE HYPNOSTONE!
| Unused Sound Effects|
They say Hylians have big ears in order to hear the voices of the gods...
| Unused Text|
How can flags be real if our eyes aren't real?
| Unused Textures|
Here dwells the lost language of the Hylia.
| Unused Enemy Damage Variables|
Bop those baddies!
| Unused Spawns|
Pull a Pocahontas and jump off the waterfall.
| Unused Shop Data|
Shop till you drop.
Alternate Elemental Arrows
Using GameShark codes, you can equip the individual elemental arrow icons to the C buttons, rather than having the magic combine with your bow. These items are used for display only on the pause screen, but function as normal elemental arrows.
|Ice Arrow||8011A63A 000C|
|Fire Arrow||8011A63A 0004|
|Light Arrow||8011A63A 0012|
|Fairy Bow + Ice Arrow||8011A63A 0039|
|Fairy Bow + Fire Arrow||8011A63A 0038|
|Fairy Bow + Light Arrow||8011A63A 003A|
Beam Blade Attack
Remnants like what?
In pre-release screenshots like the one at right, Link is seen using a beam blade attack similar to the one he is able to use when his hearts are full in previous Zelda games. While this attack never made it into the final version of the game, remnants of it still exist in the code. The beam blade can be partially restored in the game using these leftovers.
Dark Link Behavior
Dark Link may be the enemy with the most extensive coding in the game, and the programmers certainly considered all options. He reacts to the player casting Nayru's Love, which will cause him to shield a lot and generally get out of the way, even though you cannot normally get that item before defeating Dark Link as the Longshot, gained from defeating him, is needed to cross the desert, which is a requirement for obtaining Nayru's Love.
Seeing as the Dark Link actor is just a shell which inputs buttons to the Link actor, Dark Link can also swim and dive in water, as well as climb ledges. If you are Young Link, Dark Link can also use crawling holes. However, because Dark Link has no animation for getting hit while swimming, it will instead cause him to slowly float to the sky.
Iron Knuckle Head
In the pre-boss room before Twinrova in the Spirit Temple, Link fights a brainwashed Nabooru inside an Iron Knuckle's armor. If you position the camera so that it clips into this Iron Knuckle's model, you will see Nabooru's head. If you do the same to any other Iron Knuckle in the game, you will also see a head that looks similar to Nabooru's with the same textures but has significantly different structure and design. The head is wrapped in chainmail, which covers almost everything below the nose. Also, due to the way the head is modeled, the head has no eyebrows.
The most interesting differences are that the earrings are texture-less gold hoops and that the design of the head ornament is different. This alternate head model is either an earlier version of Nabooru's head, or it was meant to be directly revealed in the same way as Nabooru's, showing that all Iron Knuckles are actually Gerudos.
Either way, regular Iron Knuckles vanish when defeated, so their true face is normally never shown. The head itself was removed in the 3DS remake, but it's still present in the model, just not in-game (with the logical exception of the one that Nabooru actually comes out of). However, when they shed enough armor in combat, a distinctly human neckline can still be seen in all versions (including Majora's Mask).
|Regular Iron Knuckle||Pre-Boss Iron Knuckle|
Sold Out Item as Master Sword
This item can be equipped with the use of a cheat, this is linked to action 0x03 that makes Link to use the Master Sword. You can add it in the B button with the code 8011A638 002C for version 1.0
There's a very cool Triforce transition in the game, however, it is not used anywhere. You can force the Triforce transition to appear with the GameShark code.
|NTSC 1.0||8011B9ED 0001|
|NTSC (GC)||8011C565 0001|
|NTSC (Master Quest)(GC)||8011C545 0001|
|PAL 1.0||801197ED 0001|
|PAL (GC)||80119D75 0001|
Unused Child Malon Spawn in Talon's House
Inside Child Malon's actor file, there are three lines of code that spawn her in Talon's House at night after completing the quest to wake Talon in Hyrule Castle. However, Link cannot normally enter Talon's House at night. Trying to enter the door spawns a dialogue box with Talon saying that Malon is sleeping. Even if the player were able to bypass the dialogue box and enter the house via hacking, Malon would still not appear, because the map does not load an actor or object for her.
However, adding her actor and object to the map and bypassing the dialogue box shows that Malon exhibits the same behavior as she does when she appears in Lon Lon Ranch during the day, teaching Link Epona's Song.
| Developer Oversights|
They're only human, after all.
| Early Rooms|
Even rooms have to change several times before they're ready to go.
| Prerendered Images|
Oh, that you would rend the heavens and come down, that these backgrounds would tremble before you!
Nearly a decade after Ocarina of Time was released, a debug version of the game's Master Quest spinoff was leaked. The ROM was used by testers at Nintendo of Europe to test Master Quest prior to its GameCube release.
Decompressed by default, it had many debug features that weren't present in the retail versions of Ocarina of Time or Master Quest. These included a memory editor, audio debugger, and a number of test maps.
While the retail version of Ocarina of Time does not contain as many debug features as the prototype, a few are still present.
The Map Select allows you to go to any area in the game. See the Map Select section of the Debug ROM article for a detailed analysis.
|Retail Game||Debug ROM|
The Debug ROM contains nine test maps that aren't in the retail version of the game, while the retail game contains entries for two test maps that aren't in the Debug ROM. View the Test Maps section of this article for more details.
The Inventory Editor allows you to manually edit Link's inventory, equipment, and quest items.
To activate it, use the code and press Start on Controller 1 to open the Pause Menu, then L to open the Inventory Editor.
|NTSC 1.0|| D01C84B5 0020|
|NTSC (GC)|| D01C9675 0020|
|NTSC (Master Quest)(GC)|| D01C9635 0020|
|PAL 1.0|| D01C64F5 0020|
|PAL (GC)|| D01C9635 0020|
View the Inventory Editor section of the Debug ROM article for more details.
|NTSC 1.0||801C6F64 0001|
|NTSC (GC)||801C8144 0001|
|NTSC (MQ)(GC)||801C8104 0001|
|PAL 1.0||801C4FA4 0001|
|PAL (GC)||801C5944 0001|
| Crash Debugger|
Everything you wanted to know about the crash debugger on one convenient subpage.
Erase Save Data Code
On the title screen, pressing D-Up, D-Down, D-Left, D-Right, Start, B, C-Down, L, C-Right, C-Left, A, C-Up, R, Z on Controller 3 resets the save data. This can be used in case the save data was corrupted, which could cause a crash on the file select menu. After the first input, there is a 16-frame timer for hitting the next input within the sequence (which reverts the timer back to 16 with each correct input).
A build date can be seen in the crash debugger and can be found in memory.
|Version||RAM Address||Build Messages|
|US/JP V1.0||0x80006800|| |
zelda@srd44 98-10-21 04:56:31
|US/JP V1.1||0x80006800|| |
zelda@srd44 98-10-26 10:58:45
|EU V1.0||0x80006D20|| |
zelda@srd44 98-11-10 14:34:22
|US/JP V1.2||0x80006D30|| |
zelda@srd44 98-11-12 18:17:03
|EU V1.1||0x80006D20|| |
zelda@srd44 98-11-18 17:36:49
|JP GameCube||0x80006540|| |
zelda@srd44 02-10-29 23:49:53
|JP Master Quest||0x80006540|| |
zelda@srd44 02-10-30 00:15:15
|US GameCube||0x80006540|| |
zelda@srd44 02-12-19 13:28:09
|US Master Quest||0x80006540|| |
zelda@srd44 02-12-19 14:05:42
|US MQ Debug||0x80012340|| |
zelda@srd44 03-02-21 00:16:31
|EU GameCube||0x80006540|| |
zelda@srd44 03-02-21 20:12:23
|EU Master Quest||0x80006540|| |
zelda@srd44 03-02-21 20:37:19
|iQue Chinese||0x8000AB60|| |
firstname.lastname@example.org 03-10-22 16:23:19
|iQue Traditional Chinese||0x8000A610|| |
tyu@linuxdev3 06-10-13 14:17:43
Ura Zelda Leftovers
An add-on was originally planned for Ocarina of Time. Known by the development nickname Ura Zelda, this expansion would make use of the 64DD, a disk drive accessory for the Nintendo 64.
Title Screen Disk Tag
It is possible to trick the game into believing you have inserted an Ura Zelda disk. This can be done with a Japanese-region Ocarina of Time ROM by changing the bytes at 0xB9CCD0 from Ocarina of Time's identifier, EZLJ, to the identifier of another 64DD disk in your possession. The game will then recognized the 64DD disk as Ura Zelda.
This will cause the game to display a Disk tag on the title screen. In addition, save files with Disk tags appended will no longer be greyed out. However, the game crashes if you try to load them, perhaps because it is trying to access non-existent files on the disk.
Alternatively, you can enable the code D00EB36E 0001 801F0ADB 0004 (NTSC 1.0) while on the title screen to display the Disk tag.
Save File Disk Tag
By using the codes below, it is possible to append a Disk tag to your save file. It is also possible to achieve this effect without a GameShark by slowly pulling out the left side of your Ocarina of Time cartridge while copying a file. However, this is not recommended, as meddling with your cartridge in this manner may cause permanent damage.
|NTSC 1.0||801E4EC0 0001|
|NTSC 1.1||801E5080 0001|
|NTSC 1.2||801E5780 0001|
|NTSC (GC)||801E6080 0001|
|NTSC (MQ)(GC)||801E6040 0001|
|EU 1.0||801E2F08 0001|
|EU 1.1||801E2F48 0001|
|EU (GC)||801E3888 0001|
The tagged file is greyed out and cannot be opened unless a 64DD is attached to the system, and the game is tricked into thinking you have the correct disk inserted using the method detailed in the section above.
The retail version of the game contains two Map Select entries that were presumably used to test the 64DD add-on.
64DD TEST n64dd SetDiskVersion
The first entry is 64DD TEST n64dd SetDiskVersion. Selecting this option normally freezes the game. However, if you have a 64DD attached to your system, the following message will be displayed:
|ディスクを差し込んでください。||Please insert a disk.|
No Ura Zelda disk has ever been leaked, so it is impossible to test this option using the right disk. If you insert another 64DD disk, the following message appears:
|It's possible that you have|
inserted the wrong disk. Please
64DD TEST2 n64dd SetDiskVersion
The second entry is 64DD TEST2 n64dd SetDiskVersion. Selecting this option has no effect, even if a 64DD is attached to the system.
Error messages indicating that the wrong 64DD disk is inserted are another relic from Ocarina of Time's past. This text can be found starting at 0xB9CDF0 in a decompressed 1.0 ROM. The messages were even translated into English.
Check to see if the proper disk is inserted. Please insert the disk the correct disk. Do not remove the disk when the access light is flashing. Please read the instruction manual for details. Please read the instruction manual for details. Please insert a disk. Please insert the disk again. Please remove the disk.
These messages can be viewed on a decompressed US-region Ocarina of Time ROM by attaching a 64DD to your system, then changing the bytes at 0xB96B0A in ROM (or $1D2C5A in RAM) from FF FF to 00 00. If these bytes are not changed, the N64 enters an infinite loop while checking the region of the attached 64DD. This is because the region of the attached 64DD is, by necessity, Japanese, as the accessory never got an overseas release.
In addition, there is also an error message indicating that the Expansion Pak is not inserted. This is due to the fact that the Expansion Pak is required to use the 64DD.
Are you sure the Expansion Pak is inserted correctly?
Function of ovl_64dd
Ocarina of Time 1.0 contains a file called ovl_64dd that performs the following functions:
4D50 Disk 0x785C8 (LBA25) LBA 25: 1DC000-1E0D17 (Size: 0x4D18) Copy 1DD060-1DD177 (Offset 0x1060 of LBA 25) to 1D9C30-1D9D47 (Size: 0x118) Var0x0 - Var0x4 Var0x8 - Var0xC 801C6F30 - Copy 64DD LBA Block? Args: A0 = Destination S0/A1 = Offset S1/A2 = Size 801C7E80 - Read whatever 64DD stuff? A2 = Var0x0 - Var0x4 T1 = Var0x0 + A2 T0 = Var0x8 - Var0xC SP 8011F0C8 $SP + 0x20 = T0 $SP + 0x18 = T1 $SP + 0x24 = A2 Data: -LBA 25 Offset 0x1060- Memory Patch 0x0 - Source Start (Base Offset 0x1DC000) 0x4 - Source End 0x8 - Destination Start (Memory Address) 0xC - Destination End (Memory Address) 0x10 - Pointer to Pointer to routine 800FB4E0 - VROM Replacement Disk (part of "code" file) 9 entries by default (thx Zoinkity) 0x0 - VROM1 Start 0x4 - VROM1 End 0x8 - VROM2 Start 0xC - VROM2 End 0x10 - unknown 0x11 - unknown 0x12 - >0 = load from disk 0x13 - written, 0 = loaded from cart, 1 = loaded from disk 80121220 - Pointer to Disk function pointers (Zoinkity) +0 in 800AD4C0 after calling, sets 80121220 = p->table of these function pointers +4 in 800AD51C if 64dd hooked, call this function and set detection byte to 0 +C ???; called later in 8009CEEC +10 ???; called in 8009A750, near start +14 ???; called at end of 8009A5C0 +18 ???; called at start of 8006C340 accepts: A0=[8011BF10, which is p->800F72D8] +1C ???; called in 8006C2CC, second, before setting 8011BF10 = 0 accepts: A0=[8011BF10] +20 ???; called at end of 8006C340 +24 ???; called in 8006C2CC, first +28 at 8006C0D0; replacement for 0x976000 (map_i_static) accepts: A0, ??? +2C ???; called at end of 80066DF0 +30 ???; called in 80066EC0 with A0 = 8011BF00 before setting 8011BF00 = 0 accepts: A0=[8011BF00] +3C ???; called at end of 8005BACC +40 ???; sole purpose of 8005BC44 +44 +48 in 8009CEEC V0 = p->entry replacing entry A0 in table A1 accepts: A0=index, A1=p->table [800FB4E0] incoming entries are 0x14 long; if entry > 0, appears to replace +54 ???; called in 8009A750, and if V0 skips calling 80056C70(S1) accepts: A0 +58 ???; called in 800E162C accepts: A0=[80112E34 = 8010A94C], A1=[80112E38 = 8010EA8C], A2=[80112E3C = 80112CAC] +60 called in 800DC838; if V0, replaces cart load from 0x966000 (staff_message_data_static) accepts: A0, ??? +64 called in 800DC838; if V0, replaces cart load from 0x8EB000 (jpn_message_data_static) accepts: A0, ??? +68 called in 800DC838; if V0, replaces cart load from 0x92D000 (nes_message_data_static) accepts: A0, ??? +6C ???; called in 80082790 accepts: A0, A1=[800FBD18, a table of function pointers] +70 ???; called in 80000D28 accepts: A0=, A1, A2, A3, SP+10, SP+14, SP+18 +74 ???; called in 800A0BD0 accepts: A0 +78 V0 = p->data in bank+offset A1 in table A2 accepts: A0=p->struct, A1=entry, A2=p->table [800EFE14]
ovl_64dd would have rewritten the following files with files on the Zelda disk:
|Scene File|| Title Card
|ydan_scene||g_pn_06||Inside the Deku Tree|
|bdan_scene||g_pn_07||Inside Jabu-Jabu's Belly|
|HAKAdanCH_scene||g_pn_54||Bottom of the Well|
Additionally, the room files for these scenes would likely also be replaced, since most rooms reference textures stored within the scene file.
Sort into proper section, add more detail.
The following files contain no data and were blanked out before the game's release.
01F5 gameplay_object_exchange_static 025F object_warp2 0270 object_efc_flash 0289 object_demo_tre_lgt 0349 object_spot01_objects2 03EE elf_message_ydan 05EF anime_model_1_static 05F0 anime_model_2_static 05F1 anime_model_3_static 05F2 anime_model_4_static 05F3 anime_model_5_static 05F4 anime_model_6_static 05F5 anime_texture_1_static 05F6 anime_texture_2_static 05F7 anime_texture_3_static 05F8 anime_texture_4_static 05F9 anime_texture_5_static 05FA anime_texture_6_static
Some guesses as to the purposes of each file can be made based on their filenames:
- gameplay_object_exchange_static was likely an object file that several actors could have depended on. Since files with "static" in their name aren't compressed, it's possible that the bulk of this file might have resided on rom, with the engine loading select assets on the fly.
- the object_* files are object files. All object_* files listed here are directly referenced by the game's object table.
- object_spot01_objects2 would have been an object file specific to Kakariko Village (known as spot01).
- elf_message_ydan is one of two "elf_message" files, which contain the data for Navi's main quest hints, specifically the "spontaneous" C-Up hint Navi gives that can alternatively be brought up when Saria's Song is played. While the file is used and loaded into memory when the player is inside a dungeon and contains data for a single message ("Link, Try to keep moving!!"), there is an option that loads no "elf_message" for a given scene that still triggers the same message, suggesting that there might have been a more comprehensive hint system planned for dungeons.
- the anime_model_* and anime_texture_* files are unique in that there are no other files in the game that begin with "anime", so the purpose of these files isn't immediately clear.
The Odd-yssey of Hyrule.
| Curious Collision|
The better question is "Where can't you use the Hookshot?"
| Program Revision Differences|
Blood is thicker than bile.
All versions have a byte which stores what language to use during play, but in the Japanese/US releases the language cannot be changed. The following GameShark codes will set what language is used.
|1.0||8011B9D9 0000||8011B9D9 0001|
|1.1||8011BB99 0000||8011BB99 0001|
|1.2||8011C089 0000||8011C089 0001|
|Master Quest||8011C531 0000||8011C551 0001|