MSBP (Message Studio Binary Project) is a file format that stores relevant metadata for MSBT files.
Some sections may be omitted.
CLR1 holds color definitions. These may be looked my by label through CLB1 or by their index.
| Offset | Type | Description |
|---|
| 0x0 | u32 | Color count |
| 0x4 | RGBA | Colors |
ATI2 defines the structure of attributes for the ATR1 section.
| Offset | Type | Description |
|---|
| 0x0 | u32 | Attribute count |
| 0x4 | Attributes [attributeCount] | The attribute definitions |
| Offset | Type | Description |
|---|
| 0x0 | Attribute Type | The attribute type |
| 0x1 | padding [1] | - |
| 0x2 | u16 | Start index into the list in ALI2 (only valid for LIST type) |
| 0x4 | u32 | Offset in attribute container |
In MSBT files, string attributes are stored as u32 pointer.
| Offset | Type | Description |
|---|
| 0x0 | u32 | List count |
| 0x4 | u32 [listCount] | Offsets to attribute lists |
| Attribute Lists | Attribute list definitions |
The section is always padded until it has a multiple of 4 bytes.
| Offset | Type | Description |
|---|
| 0x0 | u32 | Item Count |
| 0x4 | u32 [itemCount] | Offsets to list item names |
| string [itemCount] | Null-terminated list item strings |
TGG2 defines tag groups for MSBT files.
| Offset | Type | Description |
|---|
| 0x0 | u16 | Group count |
| 0x2 | padding [2] | - |
| 0x4 | u32 [groupCount] | Offsets to tag groups |
| Tag Group [groupCount] | Tag groups |
Tag groups act as the main container for tags. All group definitions are padded to a multiple of 4.
Version 3 MSBP:
| Offset | Type | Description |
|---|
| 0x0 | u16 | Tag count |
| 0x2 | u16 [tagCount] | Tag indices (located in the TAG2 block) |
| string | Null-terminated group name |
Version 4 MSBP:
| Offset | Type | Description |
|---|
| 0x0 | u16 | Group ID |
| 0x2 | u16 | Tag count |
| 0x4 | u16 [tagCount] | Tag indices (located in the TAG2 block) |
| string | Null-terminated group name |
TAG2 holds control tag definitions. All definitions are padded to a multiple of 4.
| Offset | Type | Description |
|---|
| 0x0 | u16 | Tag count |
| 0x2 | padding [2] | - |
| 0x4 | u32 [tagCount] | Offsets to each tag definition |
| Offset | Type | Description |
|---|
| 0x0 | u16 | Parameter count |
| 0x2 | u16 [parameterCount] | Tag parameter indices in the TGP2 section |
| - | - | Null-terminated tag name |
TGP2 holds tag parameter definitions. All definitions are padded to a multiple of 4.
| Offset | Type | Description |
|---|
| 0x0 | u16 | Parameter count |
| 0x2 | padding [2] | - |
| 0x4 | u32 [parameterCount] | Offsets to parameters |
In MSBT files, parameters which are strings will be length prefixed.
If type is not LIST
| Offset | Type | Description |
|---|
| 0x1 | string | Null-terminated Parameter name |
If type is LIST
| Offset | Type | Description |
|---|
| 0x1 | padding [1] | - |
| 0x2 | u16 | String count |
| 0x4 | u16 [stringCount] | String indices in the TGL2 section |
| string | Null-terminated Parameter name |
TGP2 stores strings for all LIST datatype parameters in TGP2.
| Offset | Type | Description |
|---|
| 0x0 | u16 | String count |
| 0x2 | u16 | Padding |
| 0x4 | u32 [stringCount] | Offsets to start of list |
| | Null-terminated strings |
SYL3 stores style data. These may be looked my by label through SLB1 or by their index.
| Offset | Type | Description |
|---|
| 0x0 | u32 | Style Count |
| 0x4 | Style [styleCount] | Styles |
| Offset | Type | Description |
|---|
| 0x0 | u32 | Region width |
| 0x4 | u32 | Line number |
| 0x8 | u32 | Font index |
| 0xC | u32 | Color index into CLB1 |
CTI1 defines source files made with the project.
| Offset | Type | Description |
|---|
| 0x0 | u32 | File count |
| 0x4 | u32 [fileCount] | Offsets to file strings |
| | Null terminated File strings |
Binary to Source naming scheme:
| Binary Format | Source Format |
|---|
.msbt | .mstxt |
.msbt | .msproj |
.msbt | .msflow |
Attributes and Tag Parameters store values based on a datatype. The enum is as follows:
| Value | Datatype |
|---|
| 0x0 | u8 |
| 0x1 | u16 |
| 0x2 | u32 |
| 0x3 | s8 |
| 0x4 | s16 |
| 0x5 | s32 |
| 0x6 | f32 |
| 0x7 | Unknown |
| 0x8 | string |
| 0x9 | known as list functionally equal to enum |