Jump to content

Text Book

From HedgeDocs
Revision as of 20:45, 4 December 2025 by Hyper (talk | contribs)

Text Book is a file format used in Sonic the Hedgehog (2006) for storing text with friendly names and variables.

These files are located in cache.arc and text.arc under the ./text/ directory from platform root as *.mst files.

Specification

Text Book uses a Binary Resource container. The text to be displayed is encoded as UTF-16, whereas the names and variables are encoded as Shift-JIS.

Header

The header consists of the following data structure:

Length: 0x0C
Offset Type Name Description
0x00 Char[4] Signature Always "WTXT" (referring to UTF-16).
0x04 UInt32 NameOffset The offset of the name of this Text Book.
0x08 UInt32 CardCount The total number of Text Cards in this Text Book.

Text Card

Text Cards consist of the following data structure:

Length: 0x0C
Offset Type Name Description
0x00 UInt32 NameOffset The offset of the name of this Text Card.
0x04 UInt32 TextOffset The offset of the UTF-16 text for this Text Card.
0x08 UInt32 VariablesOffset The offset of the variables for this Text Card.

Variables

Variables are stored as comma-separated values, there should be one for each '$' character in the actual text to be displayed.

Variable Parameters Description
blue None Once encountered, starts colouring characters blue.
color None Once encountered, starts colouring characters white.
color! None Once encountered, starts colouring characters yellow. Presumably this is meant as the "warning" colour, hence the exclamation mark.
gray None Once encountered, starts colouring characters grey.
green None Once encountered, starts colouring characters green.
picture String Once encountered, draws the specified picture defined in the game's Text Font Picture file.
red None Once encountered, starts colouring characters red.
rgba Byte, Byte, Byte Once encountered, starts colouring characters the specified colour. Despite the name, this does not support setting the alpha colour of the text.
sound String Once encountered, plays the specified sound effect if the Sound Bank containing it is loaded.
text Unknown Unknown.
value Unknown Unknown.
yellow None Once encountered, starts colouring characters yellow.
Example
With the following text:
$The quick $brown$ fox jumps over the $lazy$ dog.\nPress the $ button to continue.

And the following variables:

sound(all01_a00_sn),rgba(127,51,0),color,red,color,picture(button_a)

The game should first play the sound all01_a00_sn, then draw something akin to the following text:

The quick brown fox jumps over the lazy dog. Press the button to continue.

Cookies help us deliver our services. By using our services, you agree to our use of cookies.