Difference between revisions of "BFLYT (File Format)"
m (This looks better when the letters aren't reversed) |
m (→pan1) |
||
(8 intermediate revisions by 2 users not shown) | |||
Line 138: | Line 138: | ||
| 0x04 || UInt32 || Section size. | | 0x04 || UInt32 || Section size. | ||
|- | |- | ||
− | | 0x08 || Byte || Flag 1. ''' | + | | 0x08 || Byte || Flag 1. '''Axxx xBCD''': |
− | '''A''' = Influence alpha | + | '''A''' = Panel Hidden (in editor?)<br> |
− | ''' | + | '''B''' = Location Adjust<br> |
+ | '''C''' = Influence alpha<br> | ||
+ | '''D''' = Visible | ||
|- | |- | ||
− | | 0x09 || Byte || | + | | 0x09 || Byte || Origin flags. '''AABB CCDD''': |
'''A''' = Origin X where 0 = center, 1 = left, 2 = right<br> | '''A''' = Origin X where 0 = center, 1 = left, 2 = right<br> | ||
'''B''' = Origin Y where 0 = center, 1 = top, 2 = bottom<br> | '''B''' = Origin Y where 0 = center, 1 = top, 2 = bottom<br> | ||
Line 150: | Line 152: | ||
| 0x0A || Byte || Alpha. | | 0x0A || Byte || Alpha. | ||
|- | |- | ||
− | | 0x0B || Byte || | + | | 0x0B || Byte || Panel flags. '''xxxA BCDE''': |
+ | '''A''' = ''IsConstantBufferReadySelf''.<br> | ||
+ | '''B''' = ''ViewerInvisible''.<br> | ||
+ | '''C''' = Use external user data animations.<br> | ||
+ | '''D''' = ''PartsMagnifyAdjustToPartsBound'' <br> | ||
+ | '''E''' = Ignore magnification parts. | ||
|- | |- | ||
| 0x0C || String || '''Pane name'''. The string has a fixed length of 0x18, unused characters are set to 0. | | 0x0C || String || '''Pane name'''. The string has a fixed length of 0x18, unused characters are set to 0. | ||
Line 229: | Line 236: | ||
| 0x5E || Byte || Flag 1. '''xxxA BBCD''' | | 0x5E || Byte || Flag 1. '''xxxA BBCD''' | ||
'''A''' = Per Char Transform enabled<br> | '''A''' = Per Char Transform enabled<br> | ||
− | '''B''' = Border format where 0 = | + | '''B''' = Border format where 0 = Standard, 1 = Delete Border, 2 = Render in two cycles<br> |
− | '''C''' = Restricted text | + | '''C''' = Restricted text length enabled<br> |
'''D''' = Shadow enabled | '''D''' = Shadow enabled | ||
|- | |- | ||
Line 237: | Line 244: | ||
| 0x60 || Float || Italic tilt. | | 0x60 || Float || Italic tilt. | ||
|- | |- | ||
− | | 0x64 || UInt32 || '''Text offset''', relative to the start of this pane. Links to the pane text which is stored in UTF-16 (big endian) as a null- | + | | 0x64 || UInt32 || '''Text offset''', relative to the start of this pane. Links to the pane text which is stored in UTF-16 (big endian) as a null-terminated string. |
|- | |- | ||
| 0x68 || Byte[4] || Font top color in RGBA format. | | 0x68 || Byte[4] || Font top color in RGBA format. | ||
Line 261: | Line 268: | ||
| 0x9C || Float || Shadow italic. | | 0x9C || Float || Shadow italic. | ||
|- | |- | ||
− | | 0xA0 || UInt32 || | + | | 0xA0 || UInt32 || [[#Per-Character Transform|Per-Character transform offset]], if the above flag is set to 1. |
+ | |} | ||
+ | |||
+ | ==== Per-Character Transform ==== | ||
+ | The per-character transform is for separate animations for every character in a textbox. | ||
+ | |||
+ | {|class="wikitable" | ||
+ | |- | ||
+ | ! Offset !! Type !! Description | ||
+ | |- | ||
+ | | 0x00 || Float || Curve time offset. | ||
+ | |- | ||
+ | | 0x04 || Float || Animation curve width. | ||
+ | |- | ||
+ | | 0x08 || Byte || Loop type. | ||
+ | |- | ||
+ | | 0x09 || Byte || Vertical origin. | ||
+ | |- | ||
+ | | 0x0A || Byte || Has animation info. | ||
+ | |- | ||
+ | | 0x0B || Byte || Padding. | ||
|} | |} | ||
Line 289: | Line 316: | ||
| 0x64 || Byte || '''N''' = Number of frames. | | 0x64 || Byte || '''N''' = Number of frames. | ||
|- | |- | ||
− | | 0x65 || Byte || Flags. '''xxAB | + | | 0x65 || Byte || Flags. '''xxAB BBCD''' |
'''A''' = Do not draw content.<br> | '''A''' = Do not draw content.<br> | ||
− | '''B''' = Window kind.<br> | + | '''B''' = [[#Window Kind|Window kind.]]<br> |
'''C''' = Use vertex colors on all materials.<br> | '''C''' = Use vertex colors on all materials.<br> | ||
'''D''' = Use a single material. | '''D''' = Use a single material. | ||
Line 299: | Line 326: | ||
| 0x68 || UInt32 || [[#Window Content|Content]] offset. | | 0x68 || UInt32 || [[#Window Content|Content]] offset. | ||
|- | |- | ||
− | | 0x6C || UInt32 || Frame offset table offset. Links to a UInt32['''N'''} with offsets which links to [[#Window Frame|window frames]]. All offsets are relative to the start of the pane. | + | | 0x6C || UInt32 || Frame offset table offset. Links to a UInt32['''N'''}] with offsets which links to [[#Window Frame|window frames]]. All offsets are relative to the start of the pane. |
|} | |} | ||
Line 347: | Line 374: | ||
|- | |- | ||
| 0x03 || Byte || Padding. | | 0x03 || Byte || Padding. | ||
+ | |} | ||
+ | |||
+ | ==== Window Kind ==== | ||
+ | {|class="wikitable" | ||
+ | |- | ||
+ | ! Value !! Description | ||
+ | |- | ||
+ | | 0x00 || Normal. | ||
+ | |- | ||
+ | | 0x01 || Horizontal. | ||
+ | |- | ||
+ | | 0x02 || Horizontal with no content. | ||
|} | |} | ||
Line 378: | Line 417: | ||
| 0x19 || Byte || Basic usage flag. | | 0x19 || Byte || Basic usage flag. | ||
|- | |- | ||
− | | 0x1A || | + | | 0x1A || Byte || Material usage flag. |
+ | |- | ||
+ | | 0x1B || Byte || Padding. | ||
|- | |- | ||
| 0x1C || UInt32 || Property offset. | | 0x1C || UInt32 || Property offset. | ||
Line 424: | Line 465: | ||
| 0x04 || UInt32 || Section size. | | 0x04 || UInt32 || Section size. | ||
|- bgcolor="#AAFFAA" | |- bgcolor="#AAFFAA" | ||
− | | colspan="4" align="center" | '''if BFLYT version < 5. | + | | colspan="4" align="center" | '''if BFLYT version < 5.0.0.0''' |
|- bgcolor="#DDFFDD" | |- bgcolor="#DDFFDD" | ||
| 0x08 || String || '''Group name'''. The string has a fixed length of 0x18, unused characters are set to 0. | | 0x08 || String || '''Group name'''. The string has a fixed length of 0x18, unused characters are set to 0. | ||
Line 450: | Line 491: | ||
| 0x04 || UInt32 || Section size. | | 0x04 || UInt32 || Section size. | ||
|- bgcolor="#AAFFAA" | |- bgcolor="#AAFFAA" | ||
− | | colspan="4" align="center" | '''if BFLYT version < | + | | colspan="4" align="center" | '''if BFLYT version < 3.0.0.0''' |
|- bgcolor="#DDFFDD" | |- bgcolor="#DDFFDD" | ||
| 0x08 || UInt32 || Functional panel names offset. | | 0x08 || UInt32 || Functional panel names offset. |
Latest revision as of 13:40, 1 May 2019
BFLYT (Binary caFe LaYouT) is an updated format for BRLYT files on the Wii. It contains 2D layout information.
Format
Header
The file starts with a header which is 0x14 bytes long.
Offset | Type | Description |
---|---|---|
0x00 | String | File magic. Always FLYT in ASCII. |
0x04 | UInt16 | Byte Order Mark (BOM): 0xFEFF for big endian and 0xFFFE for little endian. |
0x06 | UInt16 | Header size. |
0x08 | UInt32 | Version. |
0x0C | UInt32 | File size. |
0x10 | UInt16 | Number of sections. |
0x12 | UInt16 | Padding. |
Sections
After the header comes first 4 sections, where 3 of them are optional. Then comes all the panes and then the groups.
lyt1
The lyt1 section contains general information about the layout.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always lyt1 in ASCII. |
0x04 | UInt32 | Section size. |
0x08 | Byte | Drawn from center. |
0x09 | Byte[3] | Padding. |
0x0C | Float | Width of the layout. |
0x10 | Float | Height of the layout. |
0x14 | Float | Max parts height. Unknown meaning. |
0x18 | Float | Max parts height. Unknown meaning. |
0x1C | String | Layout name, null terminated. |
txl1
The txl1 section is a list of external BFLIM references.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always txl1 in ASCII. |
0x04 | UInt32 | Section size. |
0x08 | UInt16 | N = Number of textures. |
0x0A | UInt16 | Padding. |
0x0C | UInt32[N] | Texture string offsets. Links to null-termined strings. |
fnl1
The fnl section is a font list. It links to external BFFNT files.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always fnl1 in ASCII. |
0x04 | UInt32 | Section size. |
0x08 | UInt16 | N = Number of fonts. |
0x0A | UInt16 | Padding. |
0x0C | UInt32[N] | Font string offsets. Links to null-termined strings. |
mat1
The mat1 section stores materials. It is currently unknown.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always mat1 in ASCII. |
0x04 | UInt32 | S = Section size. |
0x08 | Byte[S] | Material data. |
pas1
The pas1 section indicates start of children pane data.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always pas1 in ASCII. |
0x04 | UInt32 | Section size. |
pae1
The pas1 section indicates end of children pane data.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always pae1 in ASCII. |
0x04 | UInt32 | Section size. |
pan1
The pan1 section contains information about a null pane, a pane that isn't visible. The root pane is always a pan1 called "RootPane". Other pane sections start with this structure and then has additional data. The only difference is that the magic is changed.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always pan1 in ASCII. |
0x04 | UInt32 | Section size. |
0x08 | Byte | Flag 1. Axxx xBCD:
A = Panel Hidden (in editor?) |
0x09 | Byte | Origin flags. AABB CCDD:
A = Origin X where 0 = center, 1 = left, 2 = right |
0x0A | Byte | Alpha. |
0x0B | Byte | Panel flags. xxxA BCDE:
A = IsConstantBufferReadySelf. |
0x0C | String | Pane name. The string has a fixed length of 0x18, unused characters are set to 0. |
0x24 | String | User information. Unknown purpose. The string has a fixed length of 8, unused character are set to 0. |
0x2C | Float[3] | Pane translation in X, Y and Z directions. |
0x38 | Float[3] | Pane rotation in X, Y and Z directions. |
0x44 | Float[2] | Pane scale in X and Y directions. |
0x4C | Float[2] | Pane size in X and Y directions. |
pic1
The pic1 section contains information about a picture pane.
Offset | Type | Description |
---|---|---|
0x54 | Byte[4] | Top left vertex color in RGBA format. |
0x58 | Byte[4] | Top right vertex color in RGBA format. |
0x5C | Byte[4] | Bottom left vertex color in RGBA format. |
0x60 | Byte[4] | Bottom right vertex color in RGBA format. |
0x64 | UInt16 | Material index. |
0x66 | Byte | Number of UV coordinates. |
0x67 | Byte | Padding. |
UV coordinates then follows with the following structures.
Offset | Type | Description |
---|---|---|
0x00 | Float[2] | Top left UV coordinates. |
0x08 | Float[2] | Top right UV coordinates. |
0x10 | Float[2] | Bottom left UV coordinates. |
0x08 | Float[2] | Bottom right UV coordinates. |
txt1
The txt1 section contains information about a text pane.
Offset | Type | Description |
---|---|---|
0x54 | UInt16 | Text length. |
0x56 | UInt16 | Restricted text length. |
0x58 | UInt16 | Material index. |
0x5A | UInt16 | Font index. |
0x5C | Byte | Text alignment. xxxx AABB A = Horizontal where 0 = Center, 1 = Left, 2 = Right |
0x5D | Byte | Line alignment.
0 = Not specified |
0x5E | Byte | Flag 1. xxxA BBCD
A = Per Char Transform enabled |
0x5F | Byte | Padding. |
0x60 | Float | Italic tilt. |
0x64 | UInt32 | Text offset, relative to the start of this pane. Links to the pane text which is stored in UTF-16 (big endian) as a null-terminated string. |
0x68 | Byte[4] | Font top color in RGBA format. |
0x6C | Byte[4] | Font bottom color in RGBA format. |
0x70 | Float[2] | Font XY size. |
0x78 | Float | Character space. |
0x7C | Float | Line space. |
0x80 | UInt32 | Textbox name offset, relative to the start of this pane. Links to the name of this textbox, stored in ASCII as a null-termined string. |
0x84 | Float[2] | Shadow XY. |
0x8C | Float[2] | Shadow XY size. |
0x94 | Byte[4] | Shadow top color in RGBA format. |
0x98 | Byte[4] | Shadow bottom color in RGBA format. |
0x9C | Float | Shadow italic. |
0xA0 | UInt32 | Per-Character transform offset, if the above flag is set to 1. |
Per-Character Transform
The per-character transform is for separate animations for every character in a textbox.
Offset | Type | Description |
---|---|---|
0x00 | Float | Curve time offset. |
0x04 | Float | Animation curve width. |
0x08 | Byte | Loop type. |
0x09 | Byte | Vertical origin. |
0x0A | Byte | Has animation info. |
0x0B | Byte | Padding. |
wnd1
The wnd1 pane contains information about a window pane. It is unknown how it works.
Offset | Type | Description |
---|---|---|
0x54 | Int16 | Inflation left. |
0x56 | Int16 | Inflation right. |
0x58 | Int16 | Inflation top. |
0x5A | Int16 | Inflation bottom. |
0x5C | Int16 | Frame size left. |
0x5E | Int16 | Frame size right. |
0x60 | Int16 | Frame size top. |
0x62 | Int16 | Frame size bottom. |
0x64 | Byte | N = Number of frames. |
0x65 | Byte | Flags. xxAB BBCD
A = Do not draw content. |
0x66 | UInt16 | Padding. |
0x68 | UInt32 | Content offset. |
0x6C | UInt32 | Frame offset table offset. Links to a UInt32[N}] with offsets which links to window frames. All offsets are relative to the start of the pane. |
Window Content
Offset | Type | Description |
---|---|---|
0x00 | Byte[4] | Top left vertex color in RGBA format. |
0x04 | Byte[4] | Top right vertex color in RGBA format. |
0x08 | Byte[4] | Bottom left vertex color in RGBA format. |
0x0C | Byte[4] | Bottom right vertex color in RGBA format. |
0x10 | UInt16 | Material index. |
0x12 | Byte | Number of UV coordinates. |
0x13 | Byte | Padding. |
UV coordinates then follows with the following structures.
Offset | Type | Description |
---|---|---|
0x00 | Float[2] | Top left UV coordinates. |
0x08 | Float[2] | Top right UV coordinates. |
0x10 | Float[2] | Bottom left UV coordinates. |
0x08 | Float[2] | Bottom right UV coordinates. |
Window Frame
Offset | Type | Description |
---|---|---|
0x00 | UInt16 | Material index. |
0x02 | Byte | Texture flip. |
0x03 | Byte | Padding. |
Window Kind
Value | Description |
---|---|
0x00 | Normal. |
0x01 | Horizontal. |
0x02 | Horizontal with no content. |
bnd1
The bnd1 section is a boundary pane. It has unknown purpose and no additional data follows the pane.
prt1
The prt1 section is an unknown pane. Unknown additional data follows the pane.
Offset | Type | Description |
---|---|---|
0x54 | UInt32 | Property count. |
0x58 | Float | Magnify X. |
0x5C | Float | Magnify Y. |
Following this structure are N amount of properties.
Offset | Type | Description |
---|---|---|
0x00 | String | Property Name, 0x18 in length. |
0x18 | Byte | Usage flag. |
0x19 | Byte | Basic usage flag. |
0x1A | Byte | Material usage flag. |
0x1B | Byte | Padding. |
0x1C | UInt32 | Property offset. |
0x20 | UInt32 | External user data offset. |
0x24 | UInt32 | Panel information offset. |
The three sections, properties, user data, and panel information are defined below the property.
grs1
The grs1 section indicates start of group children data.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always grs1 in ASCII. |
0x04 | UInt32 | Section size. |
gre1
The gre1 section indicates end of group children data.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always gre1 in ASCII. |
0x04 | UInt32 | Section size. |
grp1
The grp1 section contains information about a group.
Offset | Type | Description | |
---|---|---|---|
0x00 | String | Section magic. Always grp1 in ASCII. | |
0x04 | UInt32 | Section size. | |
if BFLYT version < 5.0.0.0 | |||
0x08 | String | Group name. The string has a fixed length of 0x18, unused characters are set to 0. | |
0x20 | UInt16 | Number of children. | |
0x22 | UInt16 | Padding. | |
0x08 | String | Group name. The string has a fixed length of 0x22, unused characters are set to 0. | |
0x2A | UInt16 | Number of children. |
The section follows by children names. The amount is given by "Number of children". Each string has a fixed length of 0x18, unused characters are set to 0.
cnt1
Unknown.
Offset | Type | Description | |
---|---|---|---|
0x00 | String | Section magic. Always cnt1 in ASCII. | |
0x04 | UInt32 | Section size. | |
if BFLYT version < 3.0.0.0 | |||
0x08 | UInt32 | Functional panel names offset. | |
0x0C | UInt16 | Functional panel count. | |
0x0E | UInt16 | Panel animation count. | |
0x08 | UInt32 | Control username offset. | |
0x0C | UInt32 | Functional panel names offset. | |
0x10 | UInt16 | Functional panel count. | |
0x12 | UInt16 | Panel animation count. | |
0x14 | UInt32 | Panel parameter names offset. | |
0x18 | UInt32 | Animation parameter names offset. |
The section follows by children names. The amount is given by "Number of children". Each string has a fixed length of 0x18, unused characters are set to 0.
usd1
The usd1 section contains user data, generic data set by the creator. User data can be attached to any pane section. The section follows directly after the section it is attached to.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always usd1 in ASCII. |
0x04 | UInt32 | S = Section size. |
0x08 | Byte[S - 8] | Unknown data. |
Tools
The following tool can handle BFLYT files:
- BenzinU, by diddy81
- Wexos's Toolbox, by Wexos