Zelda Ocarina of Time Exposed by James S

New: Updated Debug.

How I Hack Zelda Ocarina of Time

Exit Modifier Values.

You can email me at james.boshikoopa@gmail.com

Introduction

A ground breaking game like Super Mario 64, the Legend of Zelda: Ocarina of Time threw Link into 3D and what a great game it was, the only bad thing about it was the long name! It is said that Ocarina of Time runs on a "heavily modified Super Mario 64 game engine" which is a little strange as they're quite different games, however, it allowed Nintendo to finish the N64's first Zelda game quicker than starting fresh.

Debug

(Updated: 25/6/9)

Even in the released version a debug facility was left in which can be triggered by entering a button combination on the controller when the game has crashed, but only when a small yellow line appears in the upper left hand corner of the screen (like the red square that appears when Mario Kart 64 has crashed). This can be seen in this screenshot:

(Pic to be added.)

One way to crash the game so that the yellow line shows up is by changing a floating-point value in memory so that it is invalid. I did just that by locating one of Link's position variables and modifying it in such a way that it caused the game to crash. After entering a certain combination of buttons on the controller (which is difficult to enter right), the debug screen shows up:

This is from the PAL version running on a real N64. Note that at the top is says 'Floating point exception' because I caused the game to crash since it doesn't know how to interpret the floating-point value stored in memory. But the game hadn't actually totally crashed, I could still enter the Equalizer's (the cheat code cartridge I used) in-game menu.

There are other debug screens but which one that shows it seems depends on the type of crash.

Easter eggs

As if a dedication to the game that Ocarina of Time's foundations are based on, there are pictures of Mario and friends in the castle courtyard where Young Link first encounters Princess Zelda.

(Pic to be added.)

You have to look through one of the side windows to see the pictures but I used a code to raise and then lower Link over the wall to get a better look. The Mario picture is of the plumber flying using the wing cap which is an obvious reference to SM64 but what is a little strange is that the pictures are of different sizes and look like they were put in quickly, maybe last minute.

Exit Modifier Values

Zelda is a huge game and the use of the exit modifier allows jumping to any of the areas including cut-scenes. I will list values here for the exit modifier but please note that certain condition can affect where you end up including whether you are playing as young or adult Link, and if you have any so-called beta codes on.

Note: 0x means hexadecimal.

0x0088 Ice cavern (1F).

0x00EE Kokiri forest.

0x0166 Fire temple (1F).

0x0188 Hyrule field (from Kokiri forest).

0x019A Zora's river (from sky).

0x01AC Lost woods.

0x0225 Zora's fountain.

0x0284 Hyrule field.

0x0311 Exit from Zora's river to Hyrule field.

0x0380 Zora shop.

0x03C4 Exit from Zora shop to Zora's domain.

0x03D4 Exit from Ice cavern to Zora's fountain.

0x0440 Ganondorf defeated and Zelda freed cutscene.

0x044F "?"

0x0462 Fishing pond.

0x0488 Thieves' hideout.

0x05A4 Down hole (under gravestone) from Lake Hylia.

0x0604 Warp to Lake Hylia.

Filename

[The following is based on a document of mine recorded on: 29/7/4]

The user of the game is allowed to enter a maximum of eight characters for their filename, however, it's actually always eight long since the game program inserts spaces (0x3E) after a name which is shorter than eight letters. Standard ASCII is not used for the filename even though it is for cutscenes and signposts text.

Once a file has been loaded and gameplay starts, the file is ready for editing. For the PAL version that I have, the first character of the filename is stored at address 0x80118434, and the eighth at 0x8011843B, in the RAM.

Lowercase and uppercase latters are allowed, as are the numbers 0-9, and also a couple of other characters including the space character. Any value above 0x3F causes the standard ASCII to be used.

As can be seen from the listing below, the first characters and the values used to select them are fit for hexadecimal as they are ranged as 0-9 and A-F:

0x00 0

0x01 1

0x02 2

0x03 3

0x04 4

0x05 5

0x06 6

0x07 7

0x08 8

0x09 9

0x0A A

0x0B B

0X0C C

0X0D D

0X0E E

0X0F F

0X10 G

0X11 H

0X12 I

0X13 J

0X14 K

0X15 L

0X16 M

0X17 N

0X18 O

0X19 P

0X1A Q

0X1B R

0X1C S

0X1D T

0X1E U

0X1F V

0X20 W

0X21 X

0X22 Y

0X23 Z

0x24 a

0x25 b

0x26 c

0x27 d

0x28 e

0x29 f

0x2A g

0x2B h

0x2C i

0x2D j

0x2E k

0x2F l

0x30 m

0x31 n

0x32 o

0x33 p

0x34 q

0x35 r

0x36 s

0x37 t

0x38 u

0x39 v

0x3A w

0x3B x

0x3C y

0x3D z

0x3E <SPACE>

As an example, if I wanted the filename to be the same as my first name 'James' I would use these values:

0x13 0x24 0x30 0x28 0x36 0x3E 0x3E 0x3E

How I Hack Zelda Ocarina of Time

I use the Equalizer cheat code cartridge to learn about how Zelda: Ocarina of Time works, mainly using its memory editor which is accessed by pressing the button on the Equalizer, provided that the code generator was enabled at the boot menu. Sometimes the game does crash when exiting the Equalizer's in-game menu, even after doing a search, as if the game suddenly detects the cheat code cartridge. Unlike games such as SM64, even after the game has crashed, the Equalizer's in-game menu can still be triggered.

One annoyance with making codes for Zelda: Ocarina of Time using a cheat code cartridge is that you have to first boot the N64 and Equalizer with a game such as SM64, change the keycode, and then swap with Zelda: Ocarina of Time (after turning the power off first!).

I have also used the emulator Nemu64 for making codes for Zelda: Ocarina of Time which also helps which checking or converting NTSC codes.

Text

Fortunately a lot of the text is stored in ASCII (the standard for storing text) so it can be viewed without any form of converter, which has proved to be very revealling such as references to more advanced features that never made it, such as the 64DD.

Here is some interesting text that can be found loaded into the RAM. Although the addresses are for the PAL game, you can search for the text using your version of the game.

80006A70 boot

80006A78 idle

80006A80 main

80006A98 kanji

80006AA4 link_animetion

80006B6C I LOVE YOU

80006BF4 Hung Up in thread

80006D20 zelda@srd44

80006D2C 98-11-18 17:36:49

801043C0 ACTOR NAME is NULL

801043D8 ACTOR NAME

801043EC Actor_draw

80106C30 kaleido_scope

80106C40 player_actor

80106D30 RCP is HUNG UP!!

80106D44 Oh! MY GOD!!

80106D80 irqmgr

80106D88 sched

80106D90 audio

80106D98 padmgr

80106DA0 graph

80107568 Stack Trace ROM DEBUG

As characters talk, the text that they say is loaded into the RAM; if you alter it using codes or by RAM editing it has no effect unless you modify text that is not yet displayed.

All content of this and related pages is copyright (c) James S. 2007-2009