Changes

3,178 bytes added ,  3 April
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:  
|}
 
|}
 
|-
 
|-
|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]]
7

edits