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]] |