BYML: Difference between revisions
Jump to navigation
Jump to search
add ACNH and v4 info
imported>NiceneNerd |
imported>Leoetlino (add ACNH and v4 info) |
||
Line 1: | Line 1: | ||
<onlyinclude>'''BYML''' is a simplified, binary form of [[wikipedia:YAML|YAML]].</onlyinclude> | <onlyinclude>'''BYML''' is a simplified, binary form of [[wikipedia:YAML|YAML]].</onlyinclude> | ||
Only the version 2 | Only the version 2+ format is documented in this article. | ||
== Structure == | == Structure == | ||
Line 14: | Line 14: | ||
| align="center" | 0x00 | | align="center" | 0x00 | ||
| align="center" | 2 | | align="center" | 2 | ||
| | | “BY” (big endian) or “YB” (little endian). | ||
|- | |- | ||
| align="center" | 0x02 | | align="center" | 0x02 | ||
| align="center" | 2 | | align="center" | 2 | ||
| Version 0x0002 in Breath of the Wild. | | Version 0x0002 in ''Breath of the Wild''. 1, 3 and 4 are also valid version numbers. | ||
|- | |- | ||
| align="center" | 0x04 | | align="center" | 0x04 | ||
Line 40: | Line 40: | ||
! align="center" width="8%" | Identifier | ! align="center" width="8%" | Identifier | ||
! align="center" width="17%" | Type | ! align="center" width="17%" | Type | ||
! width=" | ! width="63%" | Description | ||
! width="10%" | Version | |||
|- | |- | ||
| align="center" | 0xA0 | | align="center" | 0xA0 | ||
| align="center" | Value (Index) | | align="center" | Value (Index) | ||
| String. Value is an index into the string table. | | String. Value is an index into the string table. | ||
| 2+ | |||
|- | |||
| align="center" | 0xA1 | |||
| align="center" | Container | |||
| Binary data. | |||
| 4+ | |||
|- | |- | ||
| align="center" | 0xC0 | | align="center" | 0xC0 | ||
| align="center" | Container | | align="center" | Container | ||
| Array. Node is an array of nodes, typically, though not necessarily, all of the same format. | | Array. Node is an array of nodes, typically, though not necessarily, all of the same format. | ||
| 2+ | |||
|- | |- | ||
| align="center" | 0xC1 | | align="center" | 0xC1 | ||
| align="center" | Container | | align="center" | Container | ||
| Hash. Node is a mapping from strings in the hash key table to other nodes. | | Hash. Node is a mapping from strings in the hash key table to other nodes. | ||
| 2+ | |||
|- | |- | ||
| align="center" | 0xC2 | | align="center" | 0xC2 | ||
| align="center" | Container (Special) | | align="center" | Container (Special) | ||
| String table. Special purpose node type only seen in the hash key table and the string table. | | String table. Special purpose node type only seen in the hash key table and the string table. | ||
| 2+ | |||
|- | |- | ||
| align="center" | 0xD0 | | align="center" | 0xD0 | ||
| align="center" | Value | | align="center" | Value | ||
| Bool. Node is 1 or 0 representing true or false respectively. | | Bool. Node is 1 or 0 representing true or false respectively. | ||
| 2+ | |||
|- | |- | ||
| align="center" | 0xD1 | | align="center" | 0xD1 | ||
| align="center" | Value | | align="center" | Value | ||
| Int. Node is a signed 32 bit integer value. | | Int. Node is a signed 32 bit integer value. | ||
| 2+ | |||
|- | |- | ||
| align="center" | 0xD2 | | align="center" | 0xD2 | ||
| align="center" | Value | | align="center" | Value | ||
| Float. Node is a binary32 floating-point number. | | Float. Node is a binary32 floating-point number. | ||
| 2+ | |||
|- | |- | ||
| align="center" | 0xD3 | | align="center" | 0xD3 | ||
| align="center" | Value | | align="center" | Value | ||
| UInt. Node is an unsigned 32 bit integer value. The game uses this for some CRC32 hashes and for masks. | | UInt. Node is an unsigned 32 bit integer value. The game uses this for some CRC32 hashes and for masks. | ||
| 2+ | |||
|- | |- | ||
| align="center" | 0xD4 | | align="center" | 0xD4 | ||
| align="center" | Value (Special) | | align="center" | Value (Special) | ||
| Int64. Node is a 64 bit integer value. | | Int64. Node is a 64 bit integer value. | ||
| 3+ | |||
|- | |- | ||
| align="center" | 0xD5 | | align="center" | 0xD5 | ||
| align="center" | Value (Special) | | align="center" | Value (Special) | ||
| UInt64. Node is an unsigned 64 bit integer value. | | UInt64. Node is an unsigned 64 bit integer value. | ||
| 3+ | |||
|- | |- | ||
| align="center" | 0xD6 | | align="center" | 0xD6 | ||
| align="center" | Value (Special) | | align="center" | Value (Special) | ||
| Double. Node is a binary64 floating-point number. | | Double. Node is a binary64 floating-point number. | ||
| 3+ | |||
|- | |- | ||
| align="center" | 0xFF | | align="center" | 0xFF | ||
| align="center" | Value | | align="center" | Value | ||
| Null. Value is always 0. | | Null. Value is always 0. | ||
| 3+ | |||
|} | |} | ||
Line 98: | Line 116: | ||
For special value nodes, the value is an offset to a 64 bit integer / floating-point number relative to the start of the file. | For special value nodes, the value is an offset to a 64 bit integer / floating-point number relative to the start of the file. | ||
==== 0xA1 - Binary Data Node ==== | |||
{| class="wikitable" | |||
! align="center" | Offset | |||
! align="center" | Size | |||
! Description | |||
|- | |||
| align="center" | 0x00 | |||
| align="center" | 4 | |||
| Data length | |||
|- | |||
| align="center" | 0x04 | |||
| align="center" | variable | |||
| Data | |||
|} | |||
==== 0xC0 - Array Node ==== | ==== 0xC0 - Array Node ==== | ||
Line 197: | Line 230: | ||
| ''Breath of the Wild'' (Switch) || Little endian || 2 || Uses SMO's library (in al::), but with unused code and support for big endian eliminated | | ''Breath of the Wild'' (Switch) || Little endian || 2 || Uses SMO's library (in al::), but with unused code and support for big endian eliminated | ||
|- | |- | ||
| ''Super Mario Odyssey'' (Switch) || Little endian (supports big endian as well) || 2 | | ''Super Mario Odyssey'' (Switch) || Little endian (supports big endian as well) || 3 || | ||
|- | |||
| ''Splatoon 2'' (Switch) || Little endian (supports big endian as well) || 3? || Uses SMO's library, but in the Lp::Utl:: namespace | |||
|- | |- | ||
| '' | | ''Animal Crossing: New Horizons'' (Switch) || Little endian (supports big endian as well) || 4 || | ||
|} | |} | ||