<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://zeldamods.org/w_botw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kyto</id>
	<title>ZeldaMods (Breath of the Wild) - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://zeldamods.org/w_botw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kyto"/>
	<link rel="alternate" type="text/html" href="https://zeldamods.org/wiki/Special:Contributions/Kyto"/>
	<updated>2026-06-02T01:34:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=BYML&amp;diff=11784</id>
		<title>BYML</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=BYML&amp;diff=11784"/>
		<updated>2023-05-15T21:17:52Z</updated>

		<summary type="html">&lt;p&gt;Kyto: Updated file format to version 7 for TotK&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;&#039;&#039;&#039;BYML&#039;&#039;&#039; is a simplified, binary form of [[wikipedia:YAML|YAML]].&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the version 2+ format is documented in this article.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
The file is broken up into a node structure, with possible interlinking between the nodes. Each node has a one byte format identifier. The File begins with a header which points to three special nodes; the hash key table; the string table node and the root node.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;4%&amp;quot; | Offset&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;3%&amp;quot; | Size&lt;br /&gt;
! width=&amp;quot;91%&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x00&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| “BY” (big endian) or “YB” (little endian).&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x02&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| Version 2 in &#039;&#039;Breath of the Wild&#039;&#039;, Versions 4 to 7 in &#039;&#039;Tears of the Kingdom&#039;&#039;. 1 and 3 are also valid version numbers.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x04&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| Offset to the hash key table, relative to start (usually 0x010). May be 0 if no hash nodes are used. Must be a string value node (0xc2).&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x08&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| Offset to the string table, relative to start. May be 0 if no strings are used. Must be a string value node (0xc2).&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x0c&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| Offset to the root node, relative to start. May be 0 if the document is totally empty. Must be either an array node (0xc0) or one of the hash nodes (0x20, 0x21 or 0xc1).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Nodes ===&lt;br /&gt;
&lt;br /&gt;
Every node format has a unique one byte identifier as follows. Some nodes are considered value nodes as indicated below. The container nodes have a longer encoding in the file, which must be four byte aligned. The order of encoding full nodes within the file does not seem to matter.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;8%&amp;quot; | Identifier&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;17%&amp;quot; | Type&lt;br /&gt;
! width=&amp;quot;63%&amp;quot; | Description&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; | Version&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x20&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Container&lt;br /&gt;
| Plain hash. Node is a mapping from 32-bit hashes to other nodes.&lt;br /&gt;
| 7+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x21&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Container&lt;br /&gt;
| Value hash. Node is a mapping from 32-bit hashes to other nodes and a second 4 byte value.&lt;br /&gt;
| 7+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xA0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Value (Index)&lt;br /&gt;
| String. Value is an index into the string table.&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xA1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Value (Special)&lt;br /&gt;
| Binary data.&lt;br /&gt;
| 4+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xA2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Value (Special)&lt;br /&gt;
| File data. Node contains the binary data of another file.&lt;br /&gt;
| 5+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xC0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Container&lt;br /&gt;
| Array. Node is an array of nodes, typically, though not necessarily, all of the same format.&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xC1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Container&lt;br /&gt;
| String hash. Node is a mapping from strings in the hash key table to other nodes.&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xC2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Container (Special)&lt;br /&gt;
| String table. Special purpose node type only seen in the hash key table and the string table.&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xD0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Value&lt;br /&gt;
| Bool. Node is 1 or 0 representing true or false respectively.&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xD1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Value&lt;br /&gt;
| Int. Node is a signed 32 bit integer value.&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xD2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Value&lt;br /&gt;
| Float. Node is a binary32 floating-point number.&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xD3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Value&lt;br /&gt;
| UInt. Node is an unsigned 32 bit integer value. The game uses this for some CRC32 hashes and for masks.&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xD4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Value (Special)&lt;br /&gt;
| Int64. Node is a 64 bit integer value.&lt;br /&gt;
| 3+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xD5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Value (Special)&lt;br /&gt;
| UInt64. Node is an unsigned 64 bit integer value.&lt;br /&gt;
| 3+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xD6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Value (Special)&lt;br /&gt;
| Double. Node is a binary64 floating-point number.&lt;br /&gt;
| 3+&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0xFF&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Value&lt;br /&gt;
| Null. Value is always 0.&lt;br /&gt;
| 3+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Value Nodes ====&lt;br /&gt;
&lt;br /&gt;
Value nodes can only be encoded as children of container nodes. Each value node has a direct four byte encoding.&lt;br /&gt;
&lt;br /&gt;
For string nodes, this encoding is simply a four byte index into the string table respectively.&lt;br /&gt;
&lt;br /&gt;
For special value nodes, the value is an offset relative to the start of the file.&lt;br /&gt;
&lt;br /&gt;
==== 0x20 - Hash Node ====&lt;br /&gt;
&lt;br /&gt;
Hash / dictionary nodes are used to encode name value collections. Entries must sorted by their hash value.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Offset&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x00&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| 0x20 node type.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x01&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| Number of entries in dictionary.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x04&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 8*N&lt;br /&gt;
| Dictionary entries.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x04+8*N&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1*N&lt;br /&gt;
| Array of N types, on for each entry in the dictionary. This is padded to 4 bytes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each entry in the dictionary has the following structure.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;5%&amp;quot; | Offset&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;3%&amp;quot; | Size&lt;br /&gt;
! width=&amp;quot;90%&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x00&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| Hash. A 32-bit hash of the key.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x04&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| Value. For regular value nodes, this is the 4 byte node value. For other nodes, this is a 4 byte offset to the node relative to the start of the file.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 0x21 - Value Hash Node ====&lt;br /&gt;
&lt;br /&gt;
This type is the similar to the hash node with the addition of a 4-byte value in each dictionary entry.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;5%&amp;quot; | Offset&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;3%&amp;quot; | Size&lt;br /&gt;
! width=&amp;quot;90%&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x00&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| Value. For regular value nodes, this is the 4 byte node value. For other nodes, this is a 4 byte offset to the node relative to the start of the file.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x04&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| Hash. A 32-bit hash of the key.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x08&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| Unknown. Always 0 in &#039;&#039;Tears of the Kingdom&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 0xA1 - Binary Data Node ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Offset&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x00&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| Data length&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x04&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | variable&lt;br /&gt;
| Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 0xA2 - File Node ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Offset&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x00&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| File length&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x04&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| Unknown. Always 0x1000.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x08&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | variable&lt;br /&gt;
| File data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 0xC0 - Array Node ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;12%&amp;quot; | Offset&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;6%&amp;quot; | Size&lt;br /&gt;
! width=&amp;quot;81%&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x00&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| 0xC0 node type.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x01&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| Number of entries in array.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x04&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | N&lt;br /&gt;
| Array of N node types; the type of each element in the array.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x04 + N’&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4*N&lt;br /&gt;
| Array of N node values. For regular value nodes, this is a 4 byte node value. For other nodes, this is a 4 byte offset to the node relative to the start of the file.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
N’ is N rounded up to the nearest multiple of 4.&lt;br /&gt;
&lt;br /&gt;
==== 0xC1 - String Hash Node ====&lt;br /&gt;
&lt;br /&gt;
Hash / dictionary nodes are used to encode name value collections. Entries must be lexicographically sorted&amp;lt;ref&amp;gt;Nintendo&#039;s BYML library performs a binary search when looking up items by key in a hash node.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Offset&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x00&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| 0xC1 node type.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x01&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| Number of entries in dictionary.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
What then follows is a variable length array of dictionary entries. Each entry has the following structure.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;5%&amp;quot; | Offset&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;3%&amp;quot; | Size&lt;br /&gt;
! width=&amp;quot;90%&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x00&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| Name. Value is an index in the hash key table.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x03&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| The node type.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x04&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| Value. For regular value nodes, this is the 4 byte node value. For other nodes, this is a 4 byte offset to the node relative to the start of the file.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 0xC2 - String Table Node ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;4%&amp;quot; | Offset&lt;br /&gt;
! align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; | Size&lt;br /&gt;
! width=&amp;quot;87%&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x00&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| 0xC2 node type.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x01&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| Number of entries in the string table.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x04&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Y=4*(N+1)&lt;br /&gt;
| Array of N+1 offsets to each string relative to the start of the node. The last entry is an offset to the end of the last string.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0x04+Y’&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | variable&lt;br /&gt;
| Array of N null-terminated strings stored in alphabetical order.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y’ is Y rounded up to the nearest multiple of 4.&lt;br /&gt;
&lt;br /&gt;
== Usage in Nintendo games ==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Game !! Endianness !! Version || Notes&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Breath of the Wild&#039;&#039; (Wii U) || Big endian || 2 || Uses SMO&#039;s library (in al::)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Breath of the Wild&#039;&#039; (Switch) || Little endian || 2 || Uses SMO&#039;s library (in al::), but with unused code and support for big endian eliminated&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Super Mario Odyssey&#039;&#039; (Switch) || Little endian (supports big endian as well) || 3 ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Splatoon 2&#039;&#039; (Switch) || Little endian (supports big endian as well) || 3? || Uses SMO&#039;s library, but in the Lp::Utl:: namespace&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Animal Crossing: New Horizons&#039;&#039; (Switch) || Little endian (supports big endian as well) || 4 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The v3 format seems to be identical to v2 but with the 64-bit node types added.&lt;br /&gt;
&lt;br /&gt;
=== Extensions ===&lt;br /&gt;
Nintendo uses several file extensions for BYML files in BotW. The basic format is the same even though each kind has a different purpose and contains different parameters. Known extensions:&lt;br /&gt;
* [[Baischedule|.baischedule]]&lt;br /&gt;
* [[Baniminfo|.baniminfo]]&lt;br /&gt;
* [[Bgdata|.bgdata]]&lt;br /&gt;
* [[Bgsvdata|.bgsvdata]]&lt;br /&gt;
* [[Bquestpack|.bquestpack]]&lt;br /&gt;
* [[BYML|.byml]]&lt;br /&gt;
* [[BYML|.byaml]]&lt;br /&gt;
* [[Mubin|.mubin]]&lt;br /&gt;
TotK has added the following extensions:&lt;br /&gt;
* .bgyml&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (BYML)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This article was adapted from documentation in the [https://github.com/handsomematt/botw-modding/blob/master/docs/file_formats/byml.md handsomematt/botw-modding repo].&#039;&#039;&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Kyto</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Save_Files&amp;diff=11590</id>
		<title>Save Files</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Save_Files&amp;diff=11590"/>
		<updated>2022-07-03T09:16:19Z</updated>

		<summary type="html">&lt;p&gt;Kyto: Created page with &amp;quot;&amp;lt;onlyinclude&amp;gt; BotW can store up to 9 save states per profile, 6 for normal mode (1 manual save and 5 autosaves) and 2 for master mode (1 manual save and 1 autosave). &amp;lt;/onlyinc...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
BotW can store up to 9 save states per profile, 6 for normal mode (1 manual save and 5 autosaves) and 2 for master mode (1 manual save and 1 autosave).&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Folder Structure==&lt;br /&gt;
The content of the save folder is structured as following:&lt;br /&gt;
&lt;br /&gt;
 0&lt;br /&gt;
     caption.jpg&lt;br /&gt;
     caption.sav&lt;br /&gt;
     game_data.sav&lt;br /&gt;
 1&lt;br /&gt;
 ...&lt;br /&gt;
 album&lt;br /&gt;
     pict_000.jpg&lt;br /&gt;
     pict_001.jpg&lt;br /&gt;
     ...&lt;br /&gt;
 pict_book&lt;br /&gt;
     Animal_Cassowary_A.jpg&lt;br /&gt;
     Weapon_Sword_008.jpg&lt;br /&gt;
     ...&lt;br /&gt;
 tracker&lt;br /&gt;
     trackblock00.sav&lt;br /&gt;
     trackblock01.sav&lt;br /&gt;
     ...&lt;br /&gt;
 option.sav&lt;br /&gt;
&lt;br /&gt;
The numbered folders each represent one save state.&lt;br /&gt;
&lt;br /&gt;
===Options===&lt;br /&gt;
&amp;lt;code&amp;gt;option.sav&amp;lt;/code&amp;gt; contains the settings set in the options menu (inverted camera, stick sensitivity etc.).&lt;br /&gt;
&lt;br /&gt;
===Album===&lt;br /&gt;
The album folder contains one JPG file for each entry in the in-game album, numbered in the order they were taken.&lt;br /&gt;
&lt;br /&gt;
===Hyrule Compendium===&lt;br /&gt;
Each JPG file in the &amp;lt;code&amp;gt;pict_book&amp;lt;/code&amp;gt; folder corresponds to one entry in the Hyrule Compendium. The name of each file is the internal name of the given item, weapon or animal. Do note that the compendium is not directly tied to a specific save state, meaning the images are shared between all saves.&lt;br /&gt;
&lt;br /&gt;
===Save State===&lt;br /&gt;
Each save state contains 3 files:&lt;br /&gt;
* caption.jpg A screenshot taken at the time of saving.&lt;br /&gt;
* caption.sav Contains a small amount of data for each save that is displayed in the save select screen (e.g. time and location).&lt;br /&gt;
* game_data.sav The data for each save state.&lt;br /&gt;
&lt;br /&gt;
==.sav Folder Format==&lt;br /&gt;
All data in these files is stored as little endian on Switch and as big endian ion Wii U.&lt;br /&gt;
&lt;br /&gt;
A save file (with the exception of files in the tracker folder) starts with the following header:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || 4 || &#039;&#039;&#039;version&#039;&#039;&#039;: Version of the game that created the save file.&lt;br /&gt;
|-&lt;br /&gt;
|0x04 || 4 || &#039;&#039;&#039;marker&#039;&#039;&#039;: Always 0xFFFFFFFF.&lt;br /&gt;
|-&lt;br /&gt;
|0x08 || 4 || &#039;&#039;&#039;unknown&#039;&#039;&#039;: Always 0x1.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Versions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Game version !! Save version&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.0 || 0x24E2&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.0 || 0x24EE&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.1 || &lt;br /&gt;
|-&lt;br /&gt;
| 1.1.2 || &lt;br /&gt;
|-&lt;br /&gt;
| 1.2.0 || 0x2588&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.0 || 0x29C0&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.1 || 0x2A46&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.3 || 0x3EF8&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.4 || 0x3EF9&lt;br /&gt;
|-&lt;br /&gt;
| 1.4.0 || 0x471A&lt;br /&gt;
|-&lt;br /&gt;
| 1.4.1 || 0x471A&lt;br /&gt;
|-&lt;br /&gt;
| 1.5.0 || 0x471B&lt;br /&gt;
|-&lt;br /&gt;
| 1.6.0 || 0x471E&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The data after the header is comprised of 8-byte chunks:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || 4 || &#039;&#039;&#039;id&#039;&#039;&#039;: ID of the data being stored&lt;br /&gt;
|-&lt;br /&gt;
|0x04 || 4 || &#039;&#039;&#039;value&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;Pack/Bootup.pack/GameData/savedataformat.ssarc/saveformat_*.bgsvdata&amp;lt;/code&amp;gt; the game stores a mapping for each ID to the corresponding entry name. This name is then further defined in one of the files in &amp;lt;code&amp;gt;Pack/Bootup.pack/GameData/gamedata.ssarc/*&amp;lt;/code&amp;gt;, depending on its data type.&lt;br /&gt;
&lt;br /&gt;
Strings are stored with the maximum possible number of characters (e.q. 256 characters for strings defined in string256_data_0.bgdata) and are broken up into 4-byte parts. These are then stored in sequential chunks with the ID repeating for each chunk.&lt;br /&gt;
&lt;br /&gt;
For arrays the data is also stored in sequential chunks, each with an identical ID. The horse names for example will take up 96 chunk with the ID 0x7B74E117 in the save file, 6 names with 16 chunks (= 64 characters) for each name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:File_formats]]&lt;/div&gt;</summary>
		<author><name>Kyto</name></author>
	</entry>
</feed>