BLO is a format used to define layouts in Gamecube games, such as Super Mario Sunshine and Luigi's Mansion. There are two versions of BLO, which are marked as blo1 and blo2: differences will be noted between the two formats.
File Format
The file begins with the string "SCRN" in ASCII.
blo1/blo2
Right after the SCRN magic, the blo section is described.
Offset |
Type |
Description
|
0x00 |
String |
File magic. Always blo1/blo2 in ASCII.
|
0x04 |
UInt32 |
File Size.
|
0x08 |
UInt32 |
Number of sections.
|
0x0C |
Byte[0x10] |
Padding. In blo2, this is an empty SVR1 section with 0xC bytes of padding (0xFF.)
|
INF1
INF1 stores basic information on the layout.
Offset |
Type |
Description
|
0x00 |
String |
Header magic. Always INF1 in ASCII.
|
0x04 |
UInt32 |
Section Size.
|
0x08 |
UInt16 |
Layout width.
|
0x0A |
UInt16 |
Layout height.
|
0x0C |
UInt32 |
Tint Color. (RGBA)
|
PAN1/PAN2
PAN defines a null panel.
PAN1
Offset |
Type |
Description
|
0x00 |
String |
Header magic. Always PAN1 in ASCII.
|
0x04 |
UInt32 |
Section Size.
|
0x08 |
Byte |
Number of parameters.
|
The parameters are defined right after. The are in the following order:
Offset |
Type |
Description
|
0x09 |
Byte |
Is Visible.
|
0x0A |
UInt16 |
Padding.
|
0x0C |
String |
Panel name. String is always 0x4 in length.
|
0x10 |
UInt16 |
Left?
|
0x12 |
UInt16 |
Top?
|
0x14 |
UInt16 |
Panel height.
|
0x16 |
UInt16 |
Panel width.
|
0x18 |
UInt16 |
Angle.
|
0x1A |
Byte |
Anchor.
|
0x1B |
Byte |
Alpha.
|
0x1C |
Byte |
Inherit Alpha.
|
PAN2
todo
BGN1
BGN1 begins all child panel data.
Offset |
Type |
Description
|
0x00 |
String |
Header magic. Always BGN1 in ASCII.
|
0x04 |
UInt32 |
Section Size.
|
END1
END1 ends all child panel data.
Offset |
Type |
Description
|
0x00 |
String |
Header magic. Always END1 in ASCII.
|
0x04 |
UInt32 |
Section Size.
|