Majora's Mask: Text Format

From z64 wiki
Jump to: navigation, search

This page contains information useful for editing text spoken by NPCs, signs, etc.

Message pointer table

In a decompressed Majora's Mask (U) ROM, this table can be found at C5D0D8 and follows this format:

xxxx 0000 08 yyyyyy

Where:
xxxx = Message number
yyyyyy = Offset of message relative to the start of the file containing all of the game's text (00AD1000 - 00B3A9F0 in a decompressed (U) ROM)

Message format

Message header

The header of a message specifies where the text will be displayed, what text box to use and what icon to display. Its format is:

0x yy zz pppp qqqq FFFF FFFF

Where:
x = Text box type
y = Text box y position
z = Icon to display
p = Message number to jump to when current message finishes
q = Number of rupees an item costs

Text box types

0 = Standard text box
1 = Signpost (wooden) background
2 = Blue text box, faint
3 = Ocarina input
4 = None
5 = None, default text colour changes to black
6 = Standard text box
7 = None
8 = Blue text box
9 = Red text box
A = None
B = None, text appears at the top of the screen
C = None
D = Notebook background
E = None
F = Red text box

Y position values

Yet to be determined, most values do not affect its position.

Icon values

00 = Nothing
01 = Green rupee
02 = Blue rupee
03 = White rupee
04 = Red rupee
05 = Purple rupee
06 = White rupee
07 = Orange rupee
08 = Wallet 1
09 = Wallet 2
0A = Heart
0B = Heart
0C = Heart piece
0D = Heart container
0E = Magic jar (small)
0F = Magic jar (large)
10 = Heart
11 = Stray Fairy
12 = Heart
13 = Heart
14 = Bombs
15 = Bombs
16 = Bombs
17 = Bombs
18 = Bombs
19 = Deku stick
1A = Bombchu
1B = Bomb bag
1C = Big bomb bag
1D = Bigger bomb bag
1E = Hero's bow
1F = Hero's bow
20 = Hero's bow
21 = Hero's bow
22 = Quiver
23 = Quiver (silver)
24 = Quiver (gold)
25 = Fire arrow
26 = Ice arrow
27 = Light arrow
28 = Deku nut
29 = Deku nut
2A = Deku nut
2B = Nothing
2C = Nothing
2D = Nothing
2E = Nothing
2F = Nothing
30 = Nothing
31 = Nothing
32 = Hero's shield
33 = Mirror shield
34 = Powder keg
35 = Magic beans
36 = Pictograph box
37 = Kokiri sword
38 = Razor sword
39 = Gilded sword
3A = Fierce Deity's sword
3B = Great Fairy's sword
3C = Small key
3D = Boss key
3E = Dungeon map
3F = Compass
40 = Powder keg
41 = Hookshot
42 = Lens of Truth
43 = Pictograph box
44 = Fishing rod
45 = Nothing
46 = Nothing
47 = Nothing
48 = Nothing
49 = Nothing
4A = Nothing
4B = Nothing
4C = Ocarina of Time
4D = Nothing
4E = Nothing
4F = Nothing
50 = Notebook
51 = Nothing
52 = Golden Skulltula
53 = Nothing
54 = Nothing
55 = Odolwa mask
56 = Goht mask
57 = Gyorg mask
58 = Twinmold mask
59 = Red potion
5A = Empty bottle
5B = Red potion
5C = Green potion
5D = Blue potion
5E = Fairy in a bottle
5F = Deku princess in a bottle
60 = Milk
61 = Milk (half full)
62 = Fish in a bottle
63 = Bug in a bottle
64 = Blue fire in a bottle
65 = Poe in a bottle
66 = Big Poe in a bottle
67 = Spring water
68 = Hot spring water
69 = Zora egg in a bottle
6A = Gold dust in a bottle
6B = Mushroom in a bottle
6C = Nothing
6D = Nothing
6E = Seahorse in a bottle
6F = Chateau Romani
70 = Eel in a bottle
71 = Nothing
72 = Nothing
73 = Nothing
74 = Nothing
75 = Nothing
76 = Nothing
77 = Nothing
78 = Deku mask
79 = Goron mask
7A = Zora mask
7B = Fierce Deity mask
7C = Mask of truth
7D = Kafei's mask
7E = All-night mask
7F = Bunny hood
80 = Keaton mask
81 = Garo mask
82 = Romani mask
83 = Circus leader's mask
84 = Postman's hat
85 = Couple's mask
86 = Great Fairy's mask
87 = Gibdo mask
88 = Don Gero's mask
89 = Kamaro's mask
8A = Captain's hat
8B = Stone mask
8C = Bremen mask
8D = Blast mask
8E = Mask of scents
8F = Giant's mask
90 = Nothing
91 = Chateau Romani
92 = Milk
93 = Gold dust in a bottle
94 = Eel in a bottle
95 = Seahorse in a bottle
96 = Moon's tear
97 = Title deed
98 = Green title deed
99 = Red title deed
9A = Blue title deed
9B = Nothing
9C = Nothing
9D = Nothing
9E = Nothing
9F = Nothing
A0 = Room key
A1 = Letter to mama
A2 = Nothing
A3 = Nothing
A4 = Nothing
A5 = Nothing
A6 = Nothing
A7 = Nothing
A8 = Nothing
A9 = Nothing
AA = Letter to Kafei
AB = Pendant of memories
AC = Nothing
AD = Nothing
AE = Nothing
AF = Nothing
B0 = Nothing
B1 = Nothing
B2 = Nothing
B3 = Map
B4 = Map
B5 = Map
B6 = Map
B7 = Map
B8 = Map
B9 = Map
BA = Nothing
BB = Nothing
BC = Nothing
BD = Nothing
BE = Nothing
BF = Nothing
C0 = Nothing
C1 = Nothing
C2 = Nothing
C3 = Nothing
C4 = Nothing
C5 = Nothing
C6 = Nothing
C7 = Nothing
C8 = Nothing
C9 = Nothing
CA = Nothing
CB = Nothing
CC = Nothing
CD = Nothing
CE = Nothing
CF = Nothing
D0 = Nothing
D1 = Nothing
D2 = Nothing
D3 = Nothing
D4 = Nothing
D5 = Nothing
D6 = Nothing
D7 = Nothing
D8 = Small black line
D9 = Small black line
DA = Small black line
DB = Small black line
DC = Anju
DD = Kafei
DE = Curiosity shop man
DF = Bomb shop lady
E0 = Romani
E1 = Cremia
E2 = Mayor
E3 = Madame Aroma
E4 = Toto
E5 = Gorman
E6 = Postman
E7 = Rosa sisters
E8 = Hand
E9 = Anju's grandmother
EA = Kamaro
EB = Grog
EC = Gorman brothers
ED = Shiro
EE = Guru-Guru
EF = Bombers
F0 = Exclamation mark
F1 = Nothing
F2 = Nothing
F3 = Nothing
F4 = Nothing
F5 = Nothing
F6 = Nothing
F7 = Nothing
F8 = Nothing
F9 = Nothing
FA = Nothing
FB = Nothing
FC = Nothing
FD = Nothing
FE = No icon (doesn't act as if an icon is there, used for most messages)
FF = Nothing

Message text

The text itself is mainly ASCII with some characters reserved for text commands.
Here is a list of the commands documented so far:

00 = Start text color white. Default color, typically used after another color to reset text color.
01 = Start text color red.
02 = Start text color green.
03 = Start text color dark blue.
04 = Start text color yellow.
05 = Start text color light blue. Tatl uses this in the beginning of all her messages.
06 = Start text color pink.
07 = Start text color silver.
08 = Start text color orange.
09?= Causes game to crash upon being processed.
0A?= Acts as invisible character.
0B = Minimum number of hits in Koume's swamp target minigame.
0C = Nth number of stray fairies found. (Example: 0th)
0D = Nth number of gold skulltula spirits found. (Example: 0th)
0E?= Unknown. 0
0F?= Unknown. 0
10 = End of current text box. (Press A) Functions as 12 when there are four lines of text on the screen.
11 = New Line
12 = End of current text box. (Press A) Mostly used when there are three lines of text on the screen, usually preceded with a newline.
13 = Functions as a filler for 12, used when there is not enough text for a three line minimum.
13 = Prints text at the left of the box (same line) - DeathBasket
14 = Unused. Functions as a blank line by moving all text on that line off to the side of the screen. Using too many will cause a crash.
15 = End of current text box. (Press A) Makes triangle appear, makes text unskippable.
16 = Player's name.
17 = Forces the rest of the line to draw instantly.
18 = Stops the force draw invoked by 17.
19 = End of current text box. (Press A) Functions like 15, plays "text finished" sound when used.
1A = Prevents the triangle from drawing.
1B xx xx = Wait time xx xx, then print remaining text.
1C xx xx = Holds text on the screen for xx xx amount of time, player can move character, ends text automatically.
1D xx xx = Stalls for xx xx amount of time, ends text automatically.
1E xx xx = Play sound ID xx xx.
1F xx xx = Pauses text flow for xx xx amount of time.
20 - AF = Text characters.
B0 = A icon
B1 = B icon
B2 = C icon
B3 = L icon
B4 = R icon
B5 = Z icon
B6 = Up C icon
B7 = Down C icon
B8 = Left C icon
B9 = Right C icon
BA = Green down arrow icon
BB = Control stick icon
BC?= Outputs 's' / causes crash.
BD?= Outputs 'h' / causes crash.
BE?= Outputs 'o' / causes crash.
BF = End of the text page. (Press A) Makes square appear. End of message.
C0 = Draws a broken character.
C1 = Draws "failed song" X on the screen and vertically-centers text / pushes text out.
C2 = Creates a menu on the current screen with each line break noting an option. 2 Choices.
C3 = Creates a menu on the next screen with each line break noting an option. 3 Choices.
C4 = Time during postman's ten second counting game. (Format: m"ss)
C5?= Unknown. 0"00 (measurement / time)
C6?= Unknown. 0"00 (measurement / time)
C7 = Time before moon crushes clock town during fight with skull kid. (Format: m'ss"ms)
C8 = Record time of Deku Scrub Playground after achieving a new record. (Format: mm"ss)
C9?= Unknown. 0"00 (measurement / time)
CA = The current time. (Format: hh"mm')
CB?= Unknown. 0
CC = Rupee deposit / withdraw selector.
CD = Amount of rupees + " Rupees" selected by a selector. Could be at the racetrack or bank. (Example: 78 Rupees)
CE = Amount of rupees in the bank / won at the doggie racetrack + " Rupees". (Example: 100 Rupees)
CF = Time left reported by gossip stone. (Format: hh:mm)
D0 = Doggie racetrack bet selector.
D1 = Bomber code input selector.
D2 = Suppress the drawing of the dialogue square / triangle.
D3 = Unused. ----
D4 = Target for "Song of Soaring". (Default: Great Bay Coast)
D5 = Lottery shop number purchase selector.
D6 = Unused. Prints "123456", with each number's color indicative of the code in the Oceanside spider house mask room.
D7 = Number of Stray Fairies remaining (Woodfall)
D8 = Number of Stray Fairies remaining (Snowhead)
D9 = Number of Stray Fairies remaining (Great Bay)
DA = Number of Stray Fairies remaining (Stone Tower)
DB = Record number of hits in Koume's swamp target minigame.
DC = Today's winning lottery numbers.
DD = Selected lottery numbers.
DE = Amount curiosity shop owner will pay for an item. (Default: 51 Rupees)
DF = Bombers' code
E0 = Ends a conversation.
E1-E6 = Insert either "RED", "GREEN", "YELLOW", or "BLUE" in the appropriate color depending on the Oceanside Spider House mask code. (D6)
E1 = First mask color in Oceanside Spider House code.
E2 = Second mask color in Oceanside Spider House code.
E3 = Third mask color in Oceanside Spider House code.
E4 = Forth mask color in Oceanside Spider House code.
E5 = Fifth mask color in Oceanside Spider House code.
E6 = Sixth mask color in Oceanside Spider House code.
E7 = Time left, as reported by the happy mask salesman. (Format: hh hours)
E8 = Time left until next day / night shift. (Format: hh:mm)
E9?= Inserts a broken character and a large gap.
EA?= Inserts a broken character.
EB?= Inserts a broken character.
EC?= Inserts a broken character.
ED?= Inserts a broken character.
EE?= Inserts a broken character.
EF?= Inserts a broken character.
F0?= Unknown. 0
F1?= Unknown. 0
F2?= Unknown. 0
F3?= Unknown. 00"10' (Probably goal time for postman's ten second game.)
F4?= Unknown. :0"00'
F5?= Unknown. 00"00'
F6 = Clock Town shooting gallery record. (Default: 39)
F7?= Unknown. 00'00"00
F8 = Price of beans from the bean seller. (Default: 10)
F9 = Romani Ranch ghost popping record. (Default: 01'00"00)
FA = Deku Scrub Playground, first day record. (Default: 01'15"00)
FB = Deku Scrub Playground, second day record. (Default: 01'15"00)
FC = Deku Scrub Playground, final day record. (Default: 01'16"00)
FD?= Inserts broken character.
FE?= Unknown.
FF?= Unknown.

Note: some of these may be inaccurate, more testing and documentation is still required.

Sound Effects

Credit for this list goes to DerrikeG

  28 D8 = "No better than usual" dog bark
  38 80 = Brief deku scrub squeak.
  38 81 = Alert deku scrub squeak.
  29 0B = Dog growl.
  29 13 = Dog whine.
  29 25 = Tael's tinging sound.
  29 35 = Tael's depressed sound.
  38 82 = Deku scrub exhale sound.
  38 8B = Business scrub severing sound.
  39 8B = Business scrub squeak 1.
  39 A7 = Business scrub squeak 2.
  3A 75 = Skull Kid's giggle 1.
  3A 79 = Skull Kid's giggle 2. 
  3A 7B = Skull Kid's grunt.
  3A D2 = Deku Scrub squeak.
  48 53 = Lottery winning sound.
  68 45 = Tael's scared tinging sound.
  68 50 = Tael's happy sound.
  69 03?= Jim's "heh" sound.
  69 05 = Bomber "ah!" sound.
  69 0A = Anju's Grandmother laughing.
  69 0C = Anju's Grandmother's curious sound.
  69 0D = Madame Aroma's hrumph.
  69 2A = Honey's cooing 1.
  69 2B = Female happy giggle.
  69 2C = Honey's cooing 2.
  69 38 = Stray Fairy squeak.
  69 47 = Observatory guy's extended laughter.
  69 49 = Observatory guy's curious groan.
  69 4F = Mutoh's hiss.
  69 50 = Toto's groan.
  69 51 = Item shop guy's greeting.
  69 52 = Item shop guy's laughing.
  69 56 = Twin Jugglers' laugh 1.
  69 57 = Twin Jugglers' laugh 2.
  69 58 = Mayor's thinking sound.
  69 5F = Darling's laugh.
  69 69 = Worker's bleh sound.
  69 6A = Worker's groan sound.
  69 6E = Viscen's ahh sound.
  69 6F = Postman's "yah" sound.
  69 70 = Darling's giggle 1.
  69 71 = Darling's giggle 2.
  69 79 = Tingle's surprised sound.
  69 7A = Tingle's laugh.
  69 7B = Tingle's happy sound.
  69 7C = Tingle's Kooloo-Limpah!
  69 7D = Happy mask salesman's giggle.
  69 7E = Happy mask salesman's quick laugh.
  69 7F = Happy mask salesman's laugh.
  69 80 = Gorman's bah! sound.

Credits

DeathBasket - First draft of information. DerrikeG - Additional text IDs, sound IDs.