Majora's Mask: Text Format
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
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)
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
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.
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
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.
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.
DeathBasket - First draft of information.
DerrikeG - Additional text IDs, sound IDs.