Text Format

From CloudModding TWW Wiki
Jump to: navigation, search

This page documents the control codes used in The Wind Waker. Control codes modify the text drawn to the screen in some way, such as inserting button icon images or causing the text to halt for a specific period of time.

There are three control code structures differentiated by the size - five bytes, six bytes, and seven bytes.

Five-byte Codes

These control codes are five bytes long and have the following format:

/*0x00*/ const byte Identifier = 0x1A; //This signals a control code
/*0x01*/ byte CodeLength;
/*0x02*/ bool IsSoundCode;
/*0x03*/ short CodeType;

While the vast majority of the five-byte-long control codes follow this format, the code that causes a sound to play when it is reached is slightly different. This code identifies itself with the bool at offset 0x02 within the code. When this bool is true, CodeType actually refers to the ID of the sound to play rather than the code's type.

Below is a list of the valid code types and their meanings.

Code Meaning
0x00 Player Name
0x01 Change Draw Type to Instant
0x02 Change Draw Type to Per-Character
0x03 Unused
0x04 Unused
0x05 Unused
0x06 Unused
0x07 Unused
0x08 Two Dialog Options
0x09 Three Dialog Options
0x0A A Button Icon
0x0B B Button Icon
0x0C C-Stick Icon
0x0D L-Trigger Icon
0x0E R-Trigger Icon
0x0F X Button Icon
0x10 Y Button Icon
0x11 Z Button Icon
0x12 D-Pad Icon
0x13 Static Control Stick Icon
0x14 Left Arrow Icon
0x15 Right Arrow Icon
0x16 Up Arrow Icon
0x17 Down Arrow Icon
0x18 Control Stick Moving Up Icon
0x19 Control Stick Moving Down Icon
0x1A Control Stick Moving Left Icon
0x1B Control Stick Moving Right Icon
0x1C Control Stick Moving Up/Down Icon
0x1D Control Stick Moving Left/Right Icon
0x1E Dialog Option 1
0x1F Dialog Option 2
0x20 Remaining Cannonballs in Cannonball Minigame
0x21 Broken Vase Payment
0x22 Auction Character Name
0x23 Auction Item Name
0x24 Auction Bid Amount
0x25 Auction Starting Bid Amount
0x26 Player Auction Bid Selector
0x27 Starbust A Button Icon
0x28 Blow Count in Orca Training Minigame
0x29 Pirate Ship Password
0x2A Target Starburst Icon
0x2B Letter Count in Post Office Sorting Minigame
0x2C Rupee Reward in Post Office Sorting Minigame
0x2D Post Box Letter Count
0x2E Remaining Koroks in Dying Tree Sidequest
0x2F Remaining Time before Forest Water Spoils
0x30 Game Time in Flight Platform Minigame
0x31 Record Time in Flight Platform Minigame
0x32 Beedle Point Count
0x33 Ms. Marrie's Joy Pendent Count
0x34 Ms. Marrie's Joy Pendent Total
0x35 Time for Windfall Island Pig Minigame
0x36 Rupee Reward for Sailing Minigame
0x37 Current Bomb Capacity
0x38 Current Arrow Capacity
0x39 Heart Icon
0x3A Music Note Icon
0x3B Target Letter Count for Post Office Sorting Minigame
0x3C Hit Count for Fishman Minigame
0x3D Rupee Reward for Fishman Minigame
0x3E Boko Baba Seed Count
0x3F Skull Necklace Count
0x40 Chu Jelly Count
0x41 Joy Pendent Count
0x42 Golden Feather Count
0x43 Knight's Crest Count
0x44 Price Offer from Beedle
0x45 Boko Baba Seed Sell selector
0x46 Skull Necklace Sell Selector
0x47 Chu Jelly Sell Selector
0x48 Joy Pendent Sell Selector
0x49 Golden Feather Sell Selector
0x4A Knight's Crest Sell Selector

Six-byte Codes

There is only one code that is six bytes long, and it changes the color of the text being drawn. It is formatted as follows:

/*0x00*/ const byte Identifier = 0x1A; //This signals a control code
/*0x01*/ byte CodeLength;
/*0x02*/ byte Unknown1; //Always 0xFF?
/*0x03*/ byte Unknown2; //Always 0x00?
/*0x04*/ short ColorIndex;

ColorIndex refers to the index of the color as they are defined in the game's BMC file, which in The Wind Waker is found within the same archive as the BMG file.

Seven-byte Codes

Seven-byte-long control codes are used for two main purposes: changing the size of the text being drawn and causing the text to stop drawing for a given period of time. They are formatted as follows:

/*0x00*/ const byte Identifier = 0x1A; //Indicates control code start
/*0x01*/ byte CodeLength;
/*0x02*/ byte Unknown1; //Normally this is 0x00, but for the code that changes text size it's 0xFF
/*0x03*/ short CodeType;
/*0x05*/ short CodeData;

The possible values for CodeType and the meaning of CodeData are described below.

Code Meaning CodeData
0x00 Unused Unused
0x01 Set Text Size Text Scale Percentage
0x02 Unused Unused
0x03 Wait and Dismiss (With Player Prompt) Wait Time
0x04 Wait and Dismiss (Without Player Prompt) Wait Time
0x05 Dismiss Time before Dismissal
0x06 Dummy? Unknown
0x07 Wait Wait Time

CodeType 0x06 is found only once in The Wind Waker's text, but it has no noticable effect. It is possible that the code type was removed, but not all references to it were deleted.