| 
				 | 
				
| Line 253: | 
Line 253: | 
 | 
  |  | 
  | 
 | == pic1 (Picture 1) ==  |  | == pic1 (Picture 1) ==  | 
 | '''pic1''' represents a picture that can be displayed in a layout. The previous 0x4C bytes are all defined by '''pan1'''.  |  | '''pic1''' represents a picture that can be displayed in a layout. The previous 0x4C bytes are all defined the same as [[CLYT_format#pan1_.28Pane_1.29|pan1]].  | 
 | 
  |  | 
  | 
 | {| class="wikitable" border="1"  |  | {| class="wikitable" border="1"  | 
		Revision as of 00:05, 24 October 2021
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 | 
0x2 | 
UInt16 | 
Nr Sections
 | 
| 0x12 | 
0x2 | 
UInt16 | 
Padding
 | 
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
 |   
 | 
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
 | 
Texture Coordinate Generation Entry
| Offset
 | 
Size
 | 
Type
 | 
Description
 | 
| 0x00 | 
0x1 | 
UInt8 | 
Type
| Value
 | 
Meaning
 |  
| 0 | 
2x4 matrix
 |   
 | 
| 0x08 | 
0x1 | 
UInt8 | 
Source (N = Tex N, max 2)
 | 
| 0x0C | 
0x2 | 
UInt8[] | 
Padding
 | 
TODO: 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 | 
Padding
 | 
| 0x0C | 
0x10 | 
String | 
Pane name
 | 
| 0x1C | 
0x8 | 
String | 
Data
 | 
| 0x24 | 
0xC | 
Vector3 | 
Translation
 | 
| 0x30 | 
0xC | 
Vector3 | 
Rotation
 | 
| 0x3C | 
0x8 | 
Vector2 | 
Scale
 | 
| 0x44 | 
0x8 | 
Vector2 | 
Size
 | 
pic1 (Picture 1)
pic1 represents a picture that can be displayed in a layout. The previous 0x4C bytes are all defined the same as pan1.
| Offset
 | 
Size
 | 
Type
 | 
Description
 | 
| 0x4C | 
0x4 | 
RGBA8 | 
Top left vertex color
 | 
| 0x50 | 
0x4 | 
RGBA8 | 
Top right vertex color
 | 
| 0x54 | 
0x4 | 
RGBA8 | 
Bottom left vertex color
 | 
| 0x58 | 
0x4 | 
RGBA8 | 
Bottom right vertex color
 | 
| 0x5C | 
0x2 | 
UInt16 | 
Material ID
 | 
| 0x5E | 
0x2 | 
UInt16 | 
Nr texture coordinates = N
 | 
| Texture coordinates entry
 | 
| 0x60 + N*0x20 | 
0x8 | 
Vector2 | 
Top left vertex texture coordinate
 | 
| 0x60 + N*0x20 | 
0x8 | 
Vector2 | 
Top right vertex texture coordinate
 | 
| 0x60 + N*0x20 | 
0x8 | 
Vector2 | 
Bottom left vertex texture coordinate
 | 
| 0x60 + N*0x20 | 
0x8 | 
Vector2 | 
Bottom right vertex texture coordinate
 | 
txt1 (Text 1)
A textbox used in layouts. 
The first 0x4C bytes are defined the same as pan1 with minor differences.
| Offset
 | 
Size
 | 
Type
 | 
Description
 | 
| 0x00 | 
0x4 | 
String | 
Signature (txt1)
 | 
| 0x04 | 
0x4 | 
UInt32 | 
Section size (including the textbox string)
 | 
| Duplicate of pan1 from 0x8 to 0x4c
 | 
| 0x4C | 
0x2 | 
Unknown | 
Flags
 | 
| 0x4E | 
0x2 | 
Unknown | 
Flags
 | 
| 0x50 | 
0x4 | 
UInt32 | 
Material ID
 | 
| 0x54 | 
0x2 | 
Unknown | 
Flags
 | 
| 0x56 | 
0x2 | 
Unknown | 
Padding
 | 
| 0x58 | 
0x4 | 
UInt32 | 
Offset from signature to beginning of the string
 | 
| 0x5C | 
0x4 | 
RGBA8 | 
Font top color
 | 
| 0x60 | 
0x4 | 
RGBA8 | 
Font bottom color
 | 
| 0x64 | 
0x8 | 
Vector2 | 
Font scale
 | 
| 0x6C | 
0x4 | 
Float | 
Horizontal font spacing
 | 
| 0x70 | 
0x4 | 
Float | 
Vertical font spacing
 | 
| 0x74 | 
User defined | 
String | 
Textbox text (must be multiple of 4), can be usd1
 | 
wnd1 (Window 1)
bnd1 (Bounding 1)
Same data structure as Panes.
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
 | 
usd1 (User Data 1)
Contains a map with strings as keys and variable values
| Offset
 | 
Size
 | 
Type
 | 
Description
 | 
| 0x00 | 
0x4 | 
String | 
Signature (usd1)
 | 
| 0x04 | 
0x4 | 
UInt32 | 
Section Size
 | 
| 0x08 | 
0x4 | 
UInt32 | 
Number of entries (= N)
 | 
| 0x12 | 
0x12 * N | 
Entries[] | 
Entries
 | 
| 0x12 + 0x12 * N | 
? | 
Variable | 
Values referred to by the entries
 | 
Where an entry is as follows:
| Offset
 | 
Size
 | 
Type
 | 
Description
 | 
| 0x0 | 
0x4 | 
UInt32 | 
Key: offset (from start of this entry) to null-terminated ascii string
 | 
| 0x4 | 
0x4 | 
UInt32 | 
Value: offset (from start of this entry) to a value (type decided by last field)
 | 
| 0x8 | 
0x2 | 
UInt16 | 
Amount or, if a string, the length of the value(s)
 | 
| 0xA | 
0x2 | 
UInt16 | 
Value type
| Value
 | 
Type
 |  
| 0x0 | 
String
 |  
| 0x1 | 
Int
 |  
| 0x2 | 
Float
 |   
 | 
Tools
- Every File Explorer has limited support for viewing these
 
See also
http://florian.nouwt.com/wiki/index.php/CLYT_%28File_Format%29
https://github.com/Gericom/EveryFileExplorer/tree/master/3DS/NintendoWare/LYT1