nn::ui2d provides the Binary Cafe Layout file format to define the layout of ui elements.
Standard ui2d header.
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.
Note; 0-2 use unofficial names
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
|