Line 157:
Line 157:
|}
|}
|-
|-
−
|0x02||0x1||Byte||Bitfield
+
|0x03||0x1||Byte||Bitfield
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 201:
Line 201:
|}
|}
|-
|-
−
|0x08||0x1||UInt8||Source (N = Tex N, max 2)
+
|0x01||0x1||UInt8||Source (N = Tex N, max 2)
|-
|-
−
|0x0C||0x2||UInt8[]||Padding
+
|0x02||0x2||UInt8[]||Padding
|}
|}
TODO: tevStage, alphaCompare, blendMode, etc...
TODO: tevStage, alphaCompare, blendMode, etc...
−
== pan1 (Pane 1) ==
+
== pan1(Pane 1) ==
+
Defines a Null pane, used mostly to keep panes grouped in hierarchies or to control the children of a given pan1 without having to do so individually.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 233:
Line 234:
|}
|}
|-
|-
−
|0x09||0x1||UInt8||Origin
+
|0x09||0x1||UInt8||Origin (1 = centered, 2 = right, 3 = left, )
|-
|-
|0x0A||0x1||UInt8||Alpha
|0x0A||0x1||UInt8||Alpha
Line 252:
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 the same as [[CLYT_format#pan1_.28Pane_1.29|pan1]].
+
'''pic1''' represents a picture that can be displayed in a layout. The first 0x4C bytes are defined the same as [[CLYT_format#pan1_(Pane_1)|pan1]] with minor differences.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 261:
Line 262:
! Type
! Type
! Description
! Description
+
|-
+
|0x00||0x4||String||Signature (pic1)
+
|-
+
|0x04||0x4||UInt32||Section size (including the texture coordinates)
+
|-
+
! colspan="4"| Same as pan1 from 0x8 to 0x4c
|-
|-
|0x4C||0x4||RGBA8||Top left vertex color
|0x4C||0x4||RGBA8||Top left vertex color
Line 278:
Line 285:
|0x60 + (N-1) * 0x20||0x8||Vector2||Top left vertex texture coordinate
|0x60 + (N-1) * 0x20||0x8||Vector2||Top left vertex texture coordinate
|-
|-
−
|0x60 + (N-1) * 0x20||0x8||Vector2||Top right vertex texture coordinate
+
|0x64 + (N-1) * 0x20||0x8||Vector2||Top right vertex texture coordinate
|-
|-
−
|0x60 + (N-1) * 0x20||0x8||Vector2||Bottom left vertex texture coordinate
+
|0x68 + (N-1) * 0x20||0x8||Vector2||Bottom left vertex texture coordinate
|-
|-
−
|0x60 + (N-1) * 0x20||0x8||Vector2||Bottom right vertex texture coordinate
+
|0x6C + (N-1) * 0x20||0x8||Vector2||Bottom right vertex texture coordinate
|}
|}
Line 299:
Line 306:
|0x04||0x4||UInt32||Section size (including the textbox string)
|0x04||0x4||UInt32||Section size (including the textbox string)
|-
|-
−
! colspan="4"|Duplicate of pan1 from 0x8 to 0x4c
+
! colspan="4"| Same as pan1 from 0x8 to 0x4c
|-
|-
|0x4C||0x2||Unknown||Flags (H Direction?)
|0x4C||0x2||Unknown||Flags (H Direction?)
Line 324:
Line 331:
|-
|-
|0x74||User defined||String||Textbox text (must be multiple of 4), can be usd1
|0x74||User defined||String||Textbox text (must be multiple of 4), can be usd1
+
|}
+
== wnd1 (Window 1) ==
+
A more complex type of [[#pic1|image pane]], where the user can define the content, the corners and the sides of it, depending on what mode it's set to.
+
+
{| class="wikitable" border="1"
+
|-
+
! Offset
+
! Size
+
! Type
+
! Description
+
|-
+
|0x00||0x4||String||Signature (wnd1)
+
|-
+
|0x04||0x4||UInt32||Section size (including the texture coordinates)
+
|-
+
! colspan="4"| Same as pan1 from 0x8 to 0x4c
+
|-
+
|0x4C||0x4||float||Coordinate 1
+
|-
+
|0x50||0x4||float||Coordinate 2
+
|-
+
|0x54||0x4||float||Coordinate 3
+
|-
+
|0x58||0x4||float||Coordinate 4
+
|-
+
|0x5C||0x1||Byte|| Number of frames (n)
+
|-
+
|0x5D||0x1||Byte||Flag
+
|-
+
|0x5E||0x2||UInt16||Padding
+
|-
+
|0x60||0x4||UInt32||Window content offset (Points to 0x68)
+
|-
+
|0x64||0x4||UInt32||Window frame offsets, offset to offsets of the materials for the frames. (W)
+
|-
+
|0x68||0x4||RGBA8||Content box top left vertex color
+
|-
+
|0x6C||0x4||RGBA8||Content box top right vertex color
+
|-
+
|0x70||0x4||RGBA8||Content box bottom left vertex color
+
|-
+
|0x74||0x4||RGBA8||Content box bottom right vertex color
+
|-
+
|0x78||0x2||UInt16||Content box Material ID
+
|-
+
|0x7A||0x2||UInt16||Number of Texture coordinates (N)
+
|-
+
! colspan="4"|Texture coordinates entry
+
|-
+
|0x7C + (N-1) * 0x20||0x8||Vector2||Top left vertex texture coordinate
+
|-
+
|0x84 + (N-1) * 0x20||0x8||Vector2||Top right vertex texture coordinate
+
|-
+
|0x8C + (N-1) * 0x20||0x8||Vector2||Bottom left vertex texture coordinate
+
|-
+
|0x94 + (N-1) * 0x20||0x8||Vector2||Bottom right vertex texture coordinate
+
|-
+
! colspan="4"|Window frames
+
|-
+
|0x(W)||0x4 * n ||UInt32|| Offsets to frame materials
+
|-
+
|0x(W)||0x4 * n ||Window frame||
+
{| class="wikitable" border="1"
+
|-
+
! Offset
+
! Size
+
! Type
+
! Description
+
|-
+
|0x0||UInt16||0x2||Frame Material ID
+
|-
+
|0x2||Byte||0x1||Flip Type
+
|-
+
|0x3||Byte||0x1||Padding
+
|}
|}
|}
−
== wnd1 (Window 1) ==
+
Below is a table of possible material flip types. <sup><small>(From Mario Kart Wii Wiki)</small></sup>
+
+
{|class="wikitable"
+
|-
+
! Type !! Description
+
|-
+
| 0 || None
+
|-
+
| 1 || Flip (Horizontal)
+
|-
+
| 2 || Flip (Vertical)
+
|-
+
| 3 || Rotate 90 Degrees
+
|-
+
| 4 || Rotate 180 Degrees
+
|-
+
| 5 || Rotate 270 Degrees
+
|}
== bnd1 (Bounding 1) ==
== bnd1 (Bounding 1) ==
−
Same data structure as [[#pan1 (Pane 1)|Panes]].
+
Same data structure as [[#pan1 (Pane 1)|Panes]], but used to limit interaction with buttons.
+
+
{| class="wikitable" border="1"
+
|-
+
! Offset
+
! Size
+
! Type
+
! Description
+
|-
+
|0x00||0x4||String||Signature (bnd1)
+
|-
+
|0x04||0x4||UInt32||Section size (including the texture coordinates)
+
|-
+
! colspan="4"| Same as pan1 from 0x8 to 0x4c
+
|}
== pas1 (Pane Start 1) ==
== pas1 (Pane Start 1) ==
−
Starts a pane.
+
Marks the start of a pane hierarchy, with the parent being the previous pane.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 346:
Line 459:
|}
|}
== pae1 (Pane End 1) ==
== pae1 (Pane End 1) ==
−
Ends a pane.
+
Marks the end of a pane hierarchy.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 359:
Line 472:
|}
|}
== grp1 (Group 1) ==
== grp1 (Group 1) ==
+
Starts a pane group, which can be inside other pane groups.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 377:
Line 491:
|}
|}
== grs1 (Group Start 1) ==
== grs1 (Group Start 1) ==
−
Starts a group.
+
Starts a group hierarchy.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 390:
Line 504:
|}
|}
== gre1 (Group End 1) ==
== gre1 (Group End 1) ==
−
Ends a group.
+
Ends a group hierarchy.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 404:
Line 518:
== usd1 (User Data 1) ==
== usd1 (User Data 1) ==
−
Contains a map with strings as keys and variable values
+
Contains a dictionary with strings as keys and variable values
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 418:
Line 532:
| 0x08 || 0x4 || UInt32 || Number of entries (= N)
| 0x08 || 0x4 || UInt32 || Number of entries (= N)
|-
|-
−
| 0x12 || 0x12 * N || Entries[] || Entries
+
| 0xC || 0xC * N // Variable || Entries[] || Entries
−
|-
−
| 0x12 + 0x12 * N || ? || Variable || Values referred to by the entries
|}
|}
+
+
=== User Entries ===
Where an entry is as follows:
Where an entry is as follows:
Line 432:
Line 546:
! Description
! Description
|-
|-
−
| 0x0 || 0x4 || UInt32 || Key: offset (from start of this entry) to null-terminated ascii string
+
| 0x0 || 0x4 || UInt32 || Key offset (from start of this entry) to null-terminated ascii string that serves as key.
|-
|-
−
| 0x4 || 0x4 || UInt32 || Value: offset (from start of this entry) to a value (type decided by last field)
+
| 0x4 || 0x4 || UInt32 || Value offset (from start of this entry).
|-
|-
−
| 0x8 || 0x2 || UInt16 || Amount or, if a string, the length of the value(s)
+
| 0x8 || 0x2 || UInt16 || Number of entries or string length.
|-
|-
| 0xA || 0x2 || UInt16 || Value type
| 0xA || 0x2 || UInt16 || Value type
Line 454:
Line 568:
==Tools==
==Tools==
−
* [https://github.com/mariohackandglitch/EveryFileExplorer/releases/latest Every File Explorer] has limited support for viewing these.
+
* [https://github.com/PabloMK7/EveryFileExplorer/releases/latest Every File Explorer] and [https://github.com/KillzXGaming/Switch-Toolbox Switch Toolbox] both have limited support for viewing these.
* [https://github.com/pleonex/Clypo/releases Clypo] allows exporting these files to yml and importing back to bclyt but it only supports scale, size, translation and rotation of panes.
* [https://github.com/pleonex/Clypo/releases Clypo] allows exporting these files to yml and importing back to bclyt but it only supports scale, size, translation and rotation of panes.
= See also =
= See also =
−
http://florian.nouwt.com/wiki/index.php/CLYT_%28File_Format%29
+
https://wiki.tockdom.com/wiki/BRLYT_(File_Format) <br>
−
https://github.com/Gericom/EveryFileExplorer/tree/master/3DS/NintendoWare/LYT1
+
http://florian.nouwt.com/wiki/index.php/CLYT_%28File_Format%29 ([https://web.archive.org/web/20150511192058/http://florian.nouwt.com/wiki/index.php/CLYT_(File_Format) Archived]) <br>
+
https://github.com/Gericom/EveryFileExplorer/tree/master/3DS/NintendoWare/LYT1 <br>
+
https://github.com/KillzXGaming/Switch-Toolbox/tree/master/File_Format_Library/FileFormats/Layout/CTR/Panes <br>
+
[[Category:File formats]]
[[Category:File formats]]