Difference between revisions of "MSBT (File Format)"
Jump to navigation
Jump to search
(Created page with "The MSBT File format seems to be something like BMG was in MKWii. MSBT files contain a lot of text. The file has a main header (MSBT) and two data blocks with their own head...") |
m |
||
(10 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
− | + | '''MSBT files''' contains the game's text. The files have been used in many different games on the [[Wii]], [[3DS]] and [[Wii U]]. In [[Mario Kart 8]] the file has a main header (MSBT) and two sections with their own headers (NLI1 and TXT2). 0xAB is used as padding. | |
− | |||
− | The file has a main header (MSBT) and two | ||
== Header == | == Header == | ||
− | |||
The MSBT file format starts with a header structure. | The MSBT file format starts with a header structure. | ||
− | {| class="wikitable" | + | {|class="wikitable" |
|- | |- | ||
− | ! Offset | + | ! Offset !! Type !! Description |
− | ! | ||
− | ! Description | ||
|- | |- | ||
− | | 0x00 | + | | 0x00 || String || '''File magic'''. Always ''MsgStdBn'' in ASCII. |
− | | | ||
− | | ''' | ||
|- | |- | ||
− | | 0x08 | + | | 0x08 || UInt16 || {{BOM}} |
− | | | ||
− | | | ||
|- | |- | ||
− | | | + | | 0x0A || UInt16 || '''Unknown'''. Always 0x0000. |
− | | | ||
− | | ''Unknown'' | ||
|- | |- | ||
− | | | + | | 0x0C || UInt16 || '''Unknown'''. Always 0x0103. |
− | | | ||
− | | ''Unknown'' | ||
|- | |- | ||
− | | | + | | 0x0E || UInt16 || '''Number of sections'''. |
− | | | ||
− | | '''Number of sections''' | ||
|- | |- | ||
− | | 0x10 | + | | 0x10 || UInt16 || '''Unknown'''. Always 0x0000. |
− | | | ||
− | | ''Unknown'' | ||
|- | |- | ||
− | | 0x12 | + | | 0x12 || UInt32 || '''File size'''. |
− | | | ||
− | | '''File size''' | ||
|- | |- | ||
− | | 0x16 | + | | 0x16 || Byte[10] || '''Unknown'''. Always 0. |
− | | 10 | ||
− | | ''Unknown'' | ||
|- | |- | ||
− | | 0x20 | + | | 0x20 || colspan=2 {{unknown|End of file header}} |
− | | colspan=2 {{unknown|End of file header}} | ||
|} | |} | ||
== NLI1 == | == NLI1 == | ||
+ | The NLI1 section starts with a section header. | ||
− | + | {|class="wikitable" | |
− | |||
− | {| class="wikitable" | ||
|- | |- | ||
− | ! Offset | + | ! Offset !! Type !! Description |
− | ! | ||
− | ! Description | ||
|- | |- | ||
− | | 0x00 | + | | 0x00 || String || '''Section magic'''. Always ''NLI1'' in ASCII. |
− | | | ||
− | | ''' | ||
|- | |- | ||
− | | 0x04 | + | | 0x04 || UInt32 || '''Section size''' (starting from 0x10). |
− | | | ||
− | | '''Section size''' | ||
|- | |- | ||
− | | 0x08 | + | | 0x08 || Byte[8] || '''Unknown'''. Always 0. |
− | | 8 | ||
− | | '' | ||
|- | |- | ||
− | | | + | | 0x10 || UInt32 || '''Number of entries'''. |
− | | | ||
− | | '''Number of entries''' | ||
|- | |- | ||
− | | | + | | 0x14 |
| colspan=2 {{unknown|End of NLI1 header}} | | colspan=2 {{unknown|End of NLI1 header}} | ||
+ | |} | ||
+ | |||
+ | After the header comes the entries. Each entry has the following structure: | ||
+ | |||
+ | {|class="wikitable" | ||
+ | |- | ||
+ | ! Offset !! Type !! Description | ||
+ | |- | ||
+ | | 0x00 || UInt32 || '''Unknown'''. Could be a message index. | ||
+ | |- | ||
+ | | 0x04 || UInt32 || Index into the [[#TXT2|TXT2 strings]]. | ||
|} | |} | ||
== TXT2 == | == TXT2 == | ||
+ | The TXT2 section starts with a header. | ||
− | + | {|class="wikitable" | |
− | |||
− | {| class="wikitable" | ||
|- | |- | ||
− | ! Offset | + | ! Offset !! Type !! Description |
− | ! | ||
− | ! Description | ||
|- | |- | ||
− | | 0x00 | + | | 0x00 || String || '''Section magic'''. Always ''TXT2'' in ASCII. |
− | | | ||
− | | ''' | ||
|- | |- | ||
− | | 0x04 | + | | 0x04 || UInt32 || '''Section size''' (starting from 0x10). |
− | | | ||
− | | '''Section size''' | ||
|- | |- | ||
− | | 0x08 | + | | 0x08 || Byte[8] || '''Unknown'''. Always 0. |
− | | 8 | ||
− | | '' | ||
|- | |- | ||
− | | | + | | 0x10 || UInt32 || '''Number of entries'''. |
− | | | ||
− | | '''Number of entries''' | ||
|- | |- | ||
− | | | + | | 0x14 || colspan=2 {{unknown|End of TXT2 header}} |
− | | colspan=2 {{unknown|End of TXT2 header}} | ||
|} | |} | ||
− | == | + | After the TXT2 header, there are four bytes for each entry, containing the offset to the UTF16 string. |
+ | |||
+ | == Tools == | ||
+ | The following tool can handle MSBT files: | ||
+ | * [https://github.com/IcySon55/3DLandMSBTeditor/releases/tag/v0.9.7 MSBT Editor Reloaded], by [[User:IcySon55|IcySon55]] | ||
− | + | [[Category:File Format]] |
Revision as of 14:08, 18 July 2017
MSBT files contains the game's text. The files have been used in many different games on the Wii, 3DS and Wii U. In Mario Kart 8 the file has a main header (MSBT) and two sections with their own headers (NLI1 and TXT2). 0xAB is used as padding.
Header
The MSBT file format starts with a header structure.
Offset | Type | Description |
---|---|---|
0x00 | String | File magic. Always MsgStdBn in ASCII. |
0x08 | UInt16 | Byte Order Mark (BOM): 0xFEFF for big endian and 0xFFFE for little endian. |
0x0A | UInt16 | Unknown. Always 0x0000. |
0x0C | UInt16 | Unknown. Always 0x0103. |
0x0E | UInt16 | Number of sections. |
0x10 | UInt16 | Unknown. Always 0x0000. |
0x12 | UInt32 | File size. |
0x16 | Byte[10] | Unknown. Always 0. |
0x20 | End of file header |
NLI1
The NLI1 section starts with a section header.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always NLI1 in ASCII. |
0x04 | UInt32 | Section size (starting from 0x10). |
0x08 | Byte[8] | Unknown. Always 0. |
0x10 | UInt32 | Number of entries. |
0x14 | End of NLI1 header |
After the header comes the entries. Each entry has the following structure:
Offset | Type | Description |
---|---|---|
0x00 | UInt32 | Unknown. Could be a message index. |
0x04 | UInt32 | Index into the TXT2 strings. |
TXT2
The TXT2 section starts with a header.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always TXT2 in ASCII. |
0x04 | UInt32 | Section size (starting from 0x10). |
0x08 | Byte[8] | Unknown. Always 0. |
0x10 | UInt32 | Number of entries. |
0x14 | End of TXT2 header |
After the TXT2 header, there are four bytes for each entry, containing the offset to the UTF16 string.
Tools
The following tool can handle MSBT files: