Bflyt
nn::ui2d provides the Binary Cafe Layout file format to define the layout of ui elements.
Header (FLYT)
There are 23 possible section types:
| Name | Magic | Description |
|---|---|---|
| User Data | usd1 | User Data for the previous section, can contain special SystemData structures that extend functionality |
| Layout | lyt1 | The headlining section for the Layout |
| Texture List | txl1 | A list of all textures used in the Layout |
| Font List | fnl1 | A list of all fonts used in the Layout |
| Material List | mat1 | All the materials used in the Layout |
| Capture Texture List | ctl1 | A list of all capture textures used in the Layout |
| Vector Graphics Texture List | vgl1 | A list of all vector graphics textures used in the Layout |
| Pane Start | pas1 | The start of a tree of panes, panes become children of last pane |
| Pane End | pae1 | The end of a tree of panes |
| Pane | pan1 | A default pane |
| Picture Pane | pic1 | A pane that can contain images |
| TextBox Pane | txt1 | A pane that can contain text |
| Window Pane | wnd1 | A pane that contain a frame and multiple images |
| Parts Pane | prt1 | A pane that can contain a sub layout |
| Alignment Pane | ali1 | A pane that aligns it's children |
| Capture Pane | cpt1 | A pane that captures it's children |
| Bounding Pane | bnd1 | A pane that can be used in hit detection |
| Scissor Pane | scr1 | A pane that scissors it's children |
| Group Start | grs1 | The start of a group |
| Group End | gre1 | The end of a group |
| Group | grp1 | A group |
| Control Source | cnt1 | The control source class and related for the layout |
| State Machine | stm1 | A state machine |
Layout (lyt1)
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | Ui2d Section Header | Magic: "lyt1" |
| 0x8 | 0x1 | u8 | Is Centered |
| 0x9 | 0x3 | u24 | Unknown/Reserved |
| 0xc | 0x4 | float | Width |
| 0x10 | 0x4 | float | Height |
| 0x14 | 0x4 | float | PartsWidth |
| 0x18 | 0x4 | float | PartsHeight |
| 0x1c | variable | char[] | Name |
Layout SystemData
| Name | EnumValue | Description |
|---|---|---|
| AnimTagName | 0x0 | Animation names? |
AnimTagName
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x4 | u32 | String Count |
| 0x4 | 0x4 * String Count | u32 | Anim Name String Offset Array |
Texture List (txl1)
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | Ui2d Section Header | Magic: "txl1" |
| 0x8 | 0x2 | u16 | Texture Count |
| 0xa | 0x2 | u16 | Unknown/Reserved |
| 0x4 | 0x4 * Texture Count | u32 | Texture Name Offset Array |
Font List (fnt1)
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | Ui2d Section Header | Magic: "fnt1" |
| 0x8 | 0x2 | u16 | Font Count |
| 0xa | 0x2 | u16 | Unknown/Reserved |
| 0x4 | 0x4 * Font Count | u32 | Font Name Offset Array |
Material List (mat1)
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | Ui2d Section Header | Magic: "mat1" |
| 0x8 | 0x2 | u16 | Material Count |
| 0xa | 0x2 | u16 | Unknown/Reserved |
| 0x4 | 0x4 * Material Count | u32 | Material Data Offset Array |
Material Memory
The layout of material memory is defined by this bitfield.
| Bitfield Size | Description |
|---|---|
| 0x2 | Texture Map Count |
| 0x2 | Texture SRT (Scale Rotation Translation) Count |
| 0x2 | Texture Coordinate Gen Count |
| 0x3 | Tev (Texture Environment) Combiner Count |
| 0x1 | Alpha Compare Count |
| 0x1 | Color Blend Mode Count |
| 0x1 | Unknown/Reserved |
| 0x1 | Color And Alpha Blend Mode Count |
| 0x1 | Unknown/Reserved |
| 0x1 | Rotate Vector Count |
| 0x2 | Projection Texture Gen Count |
| 0x1 | Font Color 2 Count |
| 0x1 | Unknown/Reserved |
| 0x1 | Detailed Combiner Count |
| 0x1 | User Combiner Count |
| 0x1 | Texture Extensions Count |
| 0x2 | Vector Texture Info Count |
| 0x2 | Brick Repeat Shader Info Count |
| 0x6 | Unknown/Reserved |
The order of appearance of Material Data structures are as follows:
| Structure |
|---|
| Material Data |
| Texture Map |
| Texture Extensions |
| Texture SRT |
| Texture Coordinate Gen |
| Tev Combiner |
| Alpha Compare |
| Blend Mode |
| Rotate Vector |
| Projection Texture Gen |
| Font Color 2 |
| DetailedCombiner |
| User Combiner |
| Vector Texture Info |
| Brick Repeat Shader Info |
Material Color Type
| Name | EnumValue | Description |
|---|---|---|
| Color4u8 | 0x0 | Material Color data offsets point to a Color4u8 |
| Color4f | 0x1 | Material Color data offsets point to a Color4f |
Material Color Data
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x1 | u8 | Color Type |
| 0x1 | 0x1 | u8 | Color Count |
| 0x2 | 0x1 * Color Count | u8 | Color Offsets |
| (Color4u8) 0x4 * Color Count
(Color4f) 0xc * Color Count |
Color4u8
Color4f |
Color Array |
Material Data
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x1c | char[0x1c] | Material name |
| 0x1c | 0x4 | Material Memory | Material memory bitfield |
| 0x20 | variable | MaterialColorData | Material color data |
Texture Map
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x2 | u16 | Texture Index |
| 0x2 | 0x1 | Texture UV Options | U Options |
| 0x3 | 0x1 | Texture UV Options | V Options |
Texture UV Options
| Bitfield Size | Description |
|---|---|
| 0x2 | Wrap Mode |
| 0x2 | Filter |
| 0x4 | Unknown/Reserved |
Texture Extensions
| Bitfield Size | Description |
|---|---|
| 0x1 | Is Capture Texture |
| 0x1 | Is Vector Graphics Texture |
| 0x1e | Unknown/Reserved |
Texture SRT
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | Vector2f | Translation |
| 0x8 | 0x4 | float | Rotation |
| 0xc | 0x8 | Vector2f | Scale |
Texture Coordinate Gen (TODO)
Tev Combiner (TODO)
Alpha Compare
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x1 | u8 | Alpha Test Function |
| 0x1 | 0x3 | u24 | Unknown/Reserved |
| 0x4 | 0x1 | float | Alpha Compare Reference |
Alpha Test Function
| Name | Enum Value | Description |
|---|---|---|
| Never | 0x0 | |
| LessThan | 0x1 | |
| LessThanEqual | 0x2 | |
| Equal | 0x3 | |
| NotEqual | 0x4 | |
| GreaterEqual | 0x5 | |
| Greater | 0x6 | |
| Always | 0x7 |
Blend Mode
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x1 | u8 | Blend Equation |
| 0x1 | 0x1 | u8 | Blend Function Source |
| 0x2 | 0x1 | u8 | Blend Function Destination |
| 0x3 | 0x1 | u8 | Logic Operation |
Blend Equation
| Name | Enum Value | Description |
|---|---|---|
| Invalid | 0x0 | |
| Add | 0x1 | |
| Sub | 0x2 | |
| ReverseSub | 0x3 | |
| Min | 0x4 | |
| Max | 0x5 |
Blend Function
| Name | Enum Value | Description |
|---|---|---|
| Zero | 0x0 | |
| One | 0x1 | |
| Destination Color | 0x2 | |
| Destination Color Minus One | 0x3 | |
| Source Alpha | 0x4 | |
| Source Alpha Minus One | 0x5 | |
| Destination Alpha | 0x6 | |
| Destination Alpha Minus One | 0x7 | |
| Source Color | 0x8 | |
| Source Color Minus One | 0x9 |
Logic Operation
| Name | Enum Value | Description |
|---|---|---|
| Invalid | 0x0 | |
| NoOp | 0x1 | |
| Clear | 0x2 | |
| Set | 0x3 | |
| Copy | 0x4 | |
| CopyInverted | 0x5 | |
| Invert | 0x6 | |
| And | 0x7 | |
| Nand | 0x8 | |
| Or | 0x9 | |
| Nor | 0xa | |
| Xor | 0xb | |
| Equivalent | 0xc | |
| AndReverse | 0xd | |
| AndInverted | 0xe | |
| OrReverse | 0xf | |
| OrInverted | 0x10 |
Rotate Vector (TODO)
Projection Texture Gen (TODO)
Font Color 2 (TODO)
Detailed Combiner (TODO)
User Combiner (TODO)
Vector Texture Info (TODO)
Brick Repeat Shader Info (TODO)
Capture Texture List (TODO)
Vector Graphics Texture List (TODO)
Pane Start
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | Ui2d Section Header | Magic: "pas1" |
Pane End
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | Ui2d Section Header | Magic: "pae1" |
Pane (pan1)
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | Ui2d Section Header | Magic: "pan1" |
| 0x8 | 0x1 | u8 | Pane Flags |
| 0x9 | 0x1 | u8 | Origin Bitfield |
| 0xa | 0x1 | u8 | Alpha |
| 0xb | 0x1 | u8 | FlagEx |
| 0xc | 0x18 | char[0x18] | Pane name |
| 0x24 | 0x8 | char[0x8] | User name |
| 0x2c | 0xc | Vector3f | Translation |
| 0x28 | 0xc | Vector3f | Rotation |
| 0x44 | 0x8 | Vector2f | Scale |
| 0x4c | 0x8 | Vector2f | Size |
Pane System Data
0x10 onwards is runtime appended user data.
| Name | Enum Value | Description |
|---|---|---|
| QuadScale0 | 0 | |
| QuadScale1 | 1 | |
| AlignmentOptions | 2 | |
| MaskTexture | 3 | |
| DropShadow | 4 | |
| ProceduralShape | 6 | |
| PaneEffect | 0x11 | |
| ProceduralShapeRuntime | 0x12 | |
| StateMachine | 0x13 | |
| Reserve0 | 0x14 | |
| Root | 0x15 |
Picture Pane (pic1)
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x54 | Pane | Magic: "pic1" |
| 0x54 | 0x4 | Color4u8 | Vertex Color Top Left |
| 0x58 | 0x4 | Color4u8 | Vertex Color Top Right |
| 0x5c | 0x4 | Color4u8 | Vertex Color Bottom Left |
| 0x60 | 0x4 | Color4u8 | Vertex Color Bottom Right |
| 0x64 | 0x2 | u16 | Material Index |
| 0x66 | 0x1 | u8 | Texture Count |
| 0x67 | 0x1 | u8 | Is Shape |
| 0x68 | 0x20 | Texture UV | Texture UV Array |
Texture UV
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | Vector2f | Top Left |
| 0x8 | 0x8 | Vector2f | Top Right |
| 0x10 | 0x8 | Vector2f | Bottom Left |
| 0x18 | 0x8 | Vector2f | Bottom Right |
TextBox Pane (txt1)
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x54 | Pane | Magic: "pic1" |
| 0x54 | 0x2 | u16 | Text Buffer Size |
| 0x56 | 0x2 | u16 | Text Length |
| 0x58 | 0x2 | u16 | Material Index |
| 0x5a | 0x2 | u16 | Font Index |
| 0x5c | 0x1 | u8 | Text Origin |
| 0x5d | 0x1 | u8 | Line Alignment |
| 0x5e | 0x2 | u16 | Flags |
| 0x60 | 0x4 | float | Italic Tilt |
| 0x64 | 0x4 | u32 | Text Offset |
| 0x68 | 0x4 | Color4u8 | Font Top Color |
| 0x6c | 0x4 | Color4u8 | Font Bottom Color |
| 0x70 | 0x8 | Vector2f | Font Size |
| 0x78 | 0x4 | float | Character Space |
| 0x7c | 0x4 | float | Line Space |
| 0x80 | 0x4 | u32 | Label Offset |
| 0x84 | 0x8 | Vector2f | Shadow Translation |
| 0x8c | 0x8 | Vector2f | Shadow Size |
| 0x94 | 0x4 | Color4u8 | Shadow Top Color |
| 0x98 | 0x4 | Color4u8 | Shadow Bottom Color |
| 0x9c | 0x4 | float | Shadow Italic Tilt |
| 0xa0 | 0x4 | u32 | Line Transform Offset |
| 0xa4 | 0x4 | u32 | Per Character Transform Offset |
Line Transform (TODO)
Per Character Transform (TODO)
Window Pane (TODO)
Parts Pane
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x54 | Pane | Magic: "prt1" |
| 0x54 | 0x4 | u32 | Property Count |
| 0x58 | 0x8 | Vector2f | Magnification |
| 0x60 | 0x28 * Property Count | Parts Property | Property Array |
Parts Property
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x18 | char[0x18] | Property Name |
| 0x18 | 0x1 | u8 | Usage Flag |
| 0x19 | 0x1 | u8 | Basic Usage Flag |
| 0x1a | 0x1 | u8 | Material Usage Flag |
| 0x1b | 0x1 | u8 | Reserved |
| 0x1c | 0x4 | u32 | Pane Offset |
| 0x20 | 0x4 | u32 | User Data Offset |
| 0x24 | 0x4 | u32 | Pane Basic Info Offset |
Parts Pane Basic Info
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | char[0x8] | User Name |
| 0x8 | 0xc | Vector3f | Position |
| 0x14 | 0xc | Vector3f | Rotation |
| 0x20 | 0x8 | Vector2f | Scale |
| 0x28 | 0x8 | Vector2f | Size |
| 0x30 | 0x1 | u8 | Pane Alpha |
Alignment Pane
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x54 | Pane | Magic: "ali1" |
Capture Pane
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x54 | Pane | Magic: "cpt1" |
Bounding Pane
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x54 | Pane | Magic: "bnd1" |
Scissor Pane
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x54 | Pane | Magic: "scr1" |
Group Start
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | Ui2d Section Header | Magic: "grs1" |
Group End
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | Ui2d Section Header | Magic: "gre1" |
Group
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | Ui2d Section Header | Magic: "grp1" |
| 0x8 | 0x21 | char[0x21] | Group Name |
| 0x29 | 0x1 | u8 | Reserved |
| 0x2a | 0x2 | u16 | Pane Count |
| 0x2c | 0x18 * Pane Count | char[ChildCount][0x18] | Pane Name Array |
Control Source
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x0 | 0x8 | Ui2d Section Header | Magic: "cnt1" |
| 0x8 | 0x4 | u32 | Name Offset |
| 0xc | 0x4 | u32 | Name Array Offset |
| 0x10 | 0x2 | u16 | Pane Count |
| 0x12 | 0x2 | u16 | Anim Count |
| 0x14 | 0x4 | u32 | Pane Name Offset Array Offset |
| 0x18 | 0x4 | u32 | Anim Name Offset Array Offset |
| 0x1c | char[] | Control Name |