CLYT (.bclyt) is the layout format used on the 3DS. It stands for (Binary) CTR Layout, and is similar to the RLYT format used on the Wii.
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x4 |
String |
Signature (CLYT)
|
0x04 |
0x2 |
UInt16 |
Byte Order Mark
|
0x06 |
0x2 |
UInt16 |
Header Length
|
0x08 |
0x4 |
UInt32 |
Revision
|
0x0C |
0x4 |
UInt32 |
File Size
|
0x10 |
0x4 |
UInt32 |
Nr Sections
|
lyt1 (Layout 1)
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x4 |
String |
Signature (lyt1)
|
0x04 |
0x4 |
UInt32 |
Section Size
|
0x08 |
0x4 |
UInt32 |
Origin type
Value
|
Meaning
|
0 |
Classic
|
1 |
Normal
|
|
0x0C |
0x8 |
Vector2 |
Canvas Size
|
txl1 (Texture List 1)
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x4 |
String |
Signature (txl1)
|
0x04 |
0x4 |
UInt32 |
Section Size
|
0x08 |
0x4 |
UInt32 |
Nr Textures = N
|
0x0C |
N * 4 |
UInt32[] |
Texture Name Offsets (relative to the start of this array)
|
After this, the null terminated names follow.
fnl1 (Font List 1)
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x4 |
String |
Signature (fnl1)
|
0x04 |
0x4 |
UInt32 |
Section Size
|
0x08 |
0x4 |
UInt32 |
Nr Fonts = N
|
0x0C |
N * 4 |
UInt32[] |
Font Name Offsets (relative to the start of this array)
|
After this, the null terminated names follow.
mat1 (Materials 1)
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x4 |
String |
Signature (mat1)
|
0x04 |
0x4 |
UInt32 |
Section Size
|
0x08 |
0x4 |
UInt32 |
Nr Materials = N
|
0x0C |
N * 4 |
UInt32[] |
Material Entry Offsets (relative to the start of this section)
|
After this, the material entries follow.
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x14 |
String |
Material Name
|
0x14 |
0x4 |
RGBA8 |
Tev Color (Buffer Color?)
|
0x18 |
0x18 |
RGBA8[6] |
Tev Constant Colors
|
0x30 |
0x4 |
UInt32 |
Flags / bitfield
Bit
|
Flag / data
|
0-1 |
Nr texMap
|
2-3 |
Nr texMatrix
|
4-5 |
Nr texCoordGen
|
6-8 |
Nr tevStage
|
9 |
Has alphaCompare
|
10 |
Has blendMode
|
11 |
Use Texture Only
|
12 |
Separate Blend Mode
|
14 |
Has Indirect Parameter
|
15-16 |
Nr projectionTexGenParameter
|
17 |
Has Font Shadow Parameter
|
|
Texture Map Entry
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x2 |
UInt16 |
Texture Index
|
0x02 |
0x1 |
Byte |
Bitfield
Bit
|
Data
|
0-1 |
Wrap S (Clamp = 0, Repeat = 1, Mirror = 2)
|
2-3 |
Min Filter (0 = Near, 1 = Linear)
|
|
0x02 |
0x1 |
Byte |
Bitfield
Bit
|
Data
|
0-1 |
Wrap T (Clamp = 0, Repeat = 1, Mirror = 2)
|
2-3 |
Mag Filter (0 = Near, 1 = Linear)
|
|
Texture Matrix Entry
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x8 |
Vector2 |
Translation
|
0x08 |
0x4 |
Single |
Rotation
|
0x0C |
0x8 |
Vector2 |
Scale
|
TODO: texCoordGen, tevStage, alphaCompare, blendMode, etc...
pan1 (Pane 1)
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x4 |
String |
Signature (pan1)
|
0x04 |
0x4 |
UInt32 |
Section Size
|
0x08 |
0x1 |
UInt8 |
Flags
Bit
|
Flag
|
0 |
Visible
|
1 |
InfluencedAlpha
|
2 |
LocationAdjust
|
|
0x09 |
0x1 |
UInt8 |
Origin
|
0x0A |
0x1 |
UInt8 |
Alpha
|
0x0B |
0x1 |
UInt8 |
Pane magnification flags
Bit
|
Flag
|
0 |
IgnorePartsMagnify
|
1 |
AdjustToPartsBounds
|
|
0x0C |
0x18 |
String |
Pane name
|
0x24 |
0xC |
Vector3 |
Translation
|
0x30 |
0xC |
Vector3 |
Rotation
|
0x3C |
0x8 |
Vector2 |
Scale
|
0x48 |
0x8 |
Vector2 |
Size
|
pic1 (Picture 1)
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x4 |
String |
Signature (pic1)
|
0x04 |
0x4 |
UInt32 |
Section Size
|
0x08 |
0x4 |
RGBA8 |
Top left vertex color
|
0x0C |
0x4 |
RGBA8 |
Top right vertex color
|
0x10 |
0x4 |
RGBA8 |
Bottom left vertex color
|
0x14 |
0x4 |
RGBA8 |
Bottom right vertex color
|
0x18 |
0x2 |
UInt16 |
Material ID
|
0x1A |
0x2 |
UInt16 |
Nr texture coordinates = N
|
Texture coordinates entry
|
0x1C + N*0x20 |
0x8 |
Vector2 |
Top left vertex texture coordinate
|
0x24 + N*0x20 |
0x8 |
Vector2 |
Top right vertex texture coordinate
|
0x2C + N*0x20 |
0x8 |
Vector2 |
Bottom left vertex texture coordinate
|
0x34 + N*0x20 |
0x8 |
Vector2 |
Bottom right vertex texture coordinate
|
txt1 (Text 1)
wnd1 (Window 1)
bnd1 (Bounding 1)
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x4 |
String |
Signature (bnd1)
|
0x04 |
0x4 |
UInt32 |
Section Size
|
0x08 |
0x2 |
UInt16? |
?
|
0x0A |
0x2 |
UInt16? |
?
|
0x0C |
? (0x10 up to 0x30) |
String |
Bounding name
|
0x3C |
0x8 |
Vector2 |
?
|
0x44 |
0x4 |
Vector2 |
?
|
⋮ |
⋮ |
⋮ |
⋮
|
pts1 (Parts 1)
pas1 (Pane Start 1)
Starts a pane.
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x4 |
String |
Signature (pas1)
|
0x04 |
0x4 |
UInt32 |
Section Size
|
pae1 (Pane End 1)
Ends a pane.
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x4 |
String |
Signature (pae1)
|
0x04 |
0x4 |
UInt32 |
Section Size
|
grp1 (Group 1)
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x4 |
String |
Signature (grp1)
|
0x04 |
0x4 |
UInt32 |
Section Size
|
0x08 |
0x10 |
String |
Group Name
|
0x18 |
0x4 |
UInt32 |
Nr Pane References (=N)
|
0x1C |
0x10 * N |
String[N] |
Pane References
|
grs1 (Group Start 1)
Starts a group.
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x4 |
String |
Signature (grs1)
|
0x04 |
0x4 |
UInt32 |
Section Size
|
gre1 (Group End 1)
Ends a group.
Offset
|
Size
|
Type
|
Description
|
0x00 |
0x4 |
String |
Signature (gre1)
|
0x04 |
0x4 |
UInt32 |
Section Size
|
See also
http://florian.nouwt.com/wiki/index.php/CLYT_%28File_Format%29
https://github.com/Gericom/EveryFileExplorer/tree/master/3DS/NintendoWare/LYT1