Documentation‎ > ‎

OoT - Text Microcode

Back in the days of old, hackers had to do everything by hand. No one had fancy utilities, so even something as basic as text editing had to be done in hexadecimal.

Message Entry List

This list is located at 0x00BC24C0 in the Debug ROM. It follows this format, repeated for every message entry: iiii xy00 07oo oooo Where:
i = Message ID. This is the two byte number addressed by actors
x = Text box type
y = Text box y position
o = Message offset relative to the start of the text bank file (nes_message_data_static)

Text-box Types

0 = Black box
1 = Wooden box
2 = Blue box
3 = Ocarina input box
4 = No box
5 = No box, default text colour is black
6-F = No box

Text-box Locations

0 = Top/bottom screen (maybe influenced by view angle)
1 = Top screen
2 = Middle screen
3 = Bottom screen

Notes

  • The message offset should NOT be pointing to a 00 byte, as it would freeze the game. It has to be pointing to a letter or to a text control code.
  • Message length is determined by looking at the address of the next message. If the following address is equal to the current address, the game will softlock when the message should be displayed. If the following address is less than the current address, the game will freeze (information by DeathBasket).
  • Message offsets must be on a base of four. For example, offsets ending in 0, 4, 8, or C will not glitch the game. Offsets ending in 1, 3, 6, and so on will lead to glitches. (Information by Flotonic.)

Text Format

This was originally taken from XDaniel's thread.
[00]		---
[01]		line break
[02]		end marker
[03]		---
[04]		wait for keypress / box break
[05 xx]		use text color xx
  xx: 40 = white
      41 = red
      42 = green
      43 = blue
      44 = light blue
      45 = pink
      46 = yellow
      47 = black
[06 xx]		print xx spaces
[07 xx xx]	continue with message with id xx xx (ex. 033a)
[08]		pring following text instantly
[09]		disable 08, instant text printing
[0a]		keep box opened, no reaction to keypresses (used in shop item descriptions)
[0b]		(wait for external action? used in minigame texts)
[0c xx]		delay text printing by xx
[0d]		wait for keypress / continue in same box/line
[0e xx]		fade out interface and wait until xx maxes out(??), ignore all following text
[0f]		show player name
[10]		init ocarina playing
[11]		(fade out interface and wait, ignore all following text, no parameters?)
[12 xx xx]	play sound xx xx
  xx xx: 0858 item fanfare
         28E3 frog ribbit sound
         28E4 frog ribbit sound
         3880 deku squeak
         3882 deku cry
         38EC Generic event
         4807 Poe vanishing
         486F Twin rova
         5965 Twin rova
         6844 Navi hello
         6852 Talon Ehh?
         6855 Carpenter WAAAAA!
         685F Navi HEY!
         6863 Saria giggle
         6867 YAAAAAAA!
         6869 Zelda heh
         686B Zelda awww
         686C Zelda huh
         686D Generic giggle
         6864 ??? used
         (values documented by OriginalLink)
[13 xx]		show item icon xx
  xx: 00 = deku stick
      01 = deku nut
      ...
[14 xx]		delay printing of each letter by xx
[15 xx yy zz]	load box background image (valid values unknown, 00 20 00 gives red 'X' mark)
[16]		(show result time of something?)
[17]		(show result time of something else?)
[18]		(show result count of something?)
[19]		show golden skulltula count
[1a]		following text can't be skipped with B button
[1b]		init two-choice answer selection (i.e. yes/no arrow)
[1c]		init three-choice answer selection
[1d]		(show result count of something?)
[1e xx]		show minigame result xx
  xx: 00 = horseback archery points
      02 = largest fish caught
      03 = horse race time
      04 = marathon time
      06 = dampé race time
      ...?
[1f]		show current hyrule time

=== Special Characters === 

[7f-9e]		(non-standard extended ascii)
[9f]		A button icon
[a0]		B button icon
[a1]		C button icon
[a2]		L button icon
[a3]		R button icon
[a4]		Z button icon
[a5]		UP button icon
[a6]		DOWN button icon
[a7]		LEFT button icon
[a8]		RIGHT button icon
[a9]		(down arrow icon?)
[aa]		3d-stick icon
[ab]		d-pad icon

=== Notes ===
* 00 is used as padding after end marker; both 00 and 03 give garbage when used in text string.