CLYT format: Difference between revisions
m →txt1 (Text 1):  changed flags  | 
				 Updated description and information of multiple sections and added info on wnd1 and bnd1, while also fixing an error in usd1. Added links to more sources (Mario Kart Wii Wiki & Switch Toolbox) and updated old links (EFE and florian.nouwt)  | 
				||
| Line 157: | Line 157: | ||
|}  | |}  | ||
|-  | |-  | ||
|  | |0x03||0x1||Byte||Bitfield  | ||
{| class="wikitable" border="1"  | {| class="wikitable" border="1"  | ||
|-  | |-  | ||
| Line 201: | Line 201: | ||
|}  | |}  | ||
|-  | |-  | ||
|  | |0x01||0x1||UInt8||Source (N = Tex N, max 2)  | ||
|-  | |-  | ||
|  | |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   | '''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  | ||
|-  | |-  | ||
|  | |0x64 + (N-1) * 0x20||0x8||Vector2||Top right vertex texture coordinate  | ||
|-  | |-  | ||
|  | |0x68 + (N-1) * 0x20||0x8||Vector2||Bottom left 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"|  | ! 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  | |||
|}  | |||
|}  | |}  | ||
=  | 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) ==  | ||
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) ==  | ||
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   | 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)  | ||
|-  | |-  | ||
|   | | 0xC || 0xC * N // Variable || Entries[] || 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  | | 0x0 || 0x4 || UInt32 || Key offset (from start of this entry) to null-terminated ascii string that serves as key.  | ||
|-  | |-  | ||
| 0x4 || 0x4 || UInt32 || Value  | | 0x4 || 0x4 || UInt32 || Value offset (from start of this entry).  | ||
|-  | |-  | ||
| 0x8 || 0x2 || UInt16 ||   | | 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/  | * [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]]  | ||