<?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=Ginger</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=Ginger"/>
	<link rel="alternate" type="text/html" href="https://zeldamods.org/wiki/Special:Contributions/Ginger"/>
	<updated>2026-04-22T11:26:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11962</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11962"/>
		<updated>2026-04-14T23:14:50Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Okay. WHY do I need to use a mod manager? */ Rewrite with more casual language, so the average person can understand&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/NiceneNerd/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already.&lt;br /&gt;
&lt;br /&gt;
==== Note for Non-Native English Speakers ====&lt;br /&gt;
Make sure that you set the UKMM Language setting to your native language (if present). This will help you understand the program and its layout better. &lt;br /&gt;
&lt;br /&gt;
(Yes, I realize that the fact that you don&#039;t speak English natively means you may not be able to read this, but hey, maybe you&#039;re translating this page, or maybe you can partially read English. I&#039;m not judging, here.)&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done! Now go to [[Help:Tools/UKMM#No, really, how do I use it?|No, really, how do I use it?]] to learn the simplest way to use UKMM&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains the Cemu program. There you go! All done! Now go to [[Help:Tools/UKMM#No, really, how do I use it?|No, really, how do I use it?]] to learn the simplest way to use UKMM&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go [[Help:Dumping_games|dump]] your game and come back. [[Help:Dumping_games|Help:Dumping_games]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Base with Update Folder (Switch)&lt;br /&gt;
|Where you store your Base with Update Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;01007EF00011E000&amp;lt;/code&amp;gt; folder in your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011E000/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. NOTE: DO NOT END THIS PATH WITH &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;, IT WILL NOT WORK. END THE PATH WITH &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;!&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;01007EF00011F001&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011F001/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. The &amp;lt;code&amp;gt;01007EF00011F002&amp;lt;/code&amp;gt; dump is not needed.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Check it if you are using Cemu. Do not check it if you are not using Cemu.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|Emulator Executable (optional)&lt;br /&gt;
|The command to use to run open your emulator when using the Open Emulator button&lt;br /&gt;
|A shell command for running your emulator. On Windows, this requires quotes around it at all times. On other OSes, it requires quotes around it if there are spaces in the path. As a shell command, it supports switches, e.g. &amp;quot;C:\path\to\Cemu.exe&amp;quot; -g &amp;quot;C:\path\to\botw\U-King.rpx&amp;quot; will open Cemu and skip the game selection menu, running the game immediately.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs will not install with UKMM, due to how they were made. If you find one, please contact Ginger.&lt;br /&gt;
* Certain mods distributed as BNPs that add lots of the same thing very close to each other on the map may be missing some of those things. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
&lt;br /&gt;
=== Mod Manager-Related Questions ===&lt;br /&gt;
&lt;br /&gt;
==== Do I need to use a mod manager? ====&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
==== But I install mods manually all the time? ====&lt;br /&gt;
In other games you do. BotW doesn&#039;t work the same way. You need to use a mod manager.&lt;br /&gt;
&lt;br /&gt;
==== Okay. WHY do I need to use a mod manager? ====&lt;br /&gt;
In other games, mods are generally not file replacements, they&#039;re a series of standalone instruction sets that tells the game (or a patching library, like BepInEx or Reloaded) how to change what to use.&lt;br /&gt;
&lt;br /&gt;
BotW doesn&#039;t have anything like that. It needs to have all the files and code merged and in order before you even boot your console/emulator, because the best we can do for those is replace archives.&lt;br /&gt;
&lt;br /&gt;
Now, BotW contains almost all of its data in archives and registry files.&lt;br /&gt;
&lt;br /&gt;
When those archives are fully and completely decompressed and extracted, each one contains anymore from about a dozen, to a few thousand files. Most of those files contain dozens, even hundreds, of parameters. If a mod edits just one of those parameters, it will override every other mod that contains one of the other 12-2000 files. Plus, a lot of mods edit the game&#039;s most important archives: the ones loaded at bootup and in the title screen&#039;s background. So if you take any random two mods, they&#039;ll &#039;&#039;probably&#039;&#039; conflict with each other.&lt;br /&gt;
&lt;br /&gt;
The registry files are single files that contain a ton of data about other files. You know that meme about the different Spidermans (Spidermen?) all pointing at each other? The registry files are basically like that. If they&#039;re not all agreeing on everything (aka they don&#039;t all have the same data) then things can get real buggy.&lt;br /&gt;
&lt;br /&gt;
And &#039;&#039;then&#039;&#039;, as if it&#039;s not complicated enough already, there&#039;s a special file that BotW has, called the RSTB. The RSTB contains data on almost every one of the other files in the entire game, and so almost every mod needs to edit the RSTB. Most mods rely on a mod manager to edit the RSTB, so even if you don’t want to install more than one mod, the odds are still good that the mod you’re installing is assuming you’ll use a mod manager to make it work.&lt;br /&gt;
&lt;br /&gt;
And to top it all off, even if you only want to use one mod? It may not edit everything it needs to. The mod author might have assumed you&#039;d be using a mod manager that would automate some of the process, and not actually changed everything they needed to, meaning you might not get the entire mod, even if you use only one.&lt;br /&gt;
&lt;br /&gt;
So... yeah. It&#039;s complicated. It&#039;s a mess. We do our best, but BotW modding is really just a gigantic ball of chaos held together with string and chewing gum. The mod managers help keep it all together.&lt;br /&gt;
&lt;br /&gt;
=== UKMM vs. BCML Questions ===&lt;br /&gt;
&lt;br /&gt;
==== When should I use UKMM as my mod manager, instead of BCML? ====&lt;br /&gt;
Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
==== What are the exceptions, for when I should use BCML instead? ====&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
This list is not exhaustive, but it &#039;&#039;almost&#039;&#039; is. There&#039;s very few other real reasons to use BCML, after 2024 when UKMM surpassed it.&lt;br /&gt;
&lt;br /&gt;
==== WHY should I use UKMM instead? ====&lt;br /&gt;
# It installs BNPs just like BCML does.&lt;br /&gt;
# It&#039;s easier to install.&lt;br /&gt;
# If you&#039;re using Cemu, or previously used BCML, it&#039;s much easier to set up.&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there.&lt;br /&gt;
# It merges map changes from the DLC files into the base game, so you can install many mods that only have DLC map files even if you don&#039;t have the DLC.&lt;br /&gt;
# It doesn&#039;t do unnecessary things, part 1. When you install a mod, all it does is install it. It will only combine it with other mods when you tell it to combine them.&lt;br /&gt;
# It doesn&#039;t do unnecessary things, part 2. When you merge/combine mods, it only recombines those files from the mods you&#039;ve changed since your last combo.&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file.&lt;br /&gt;
# It makes mods more compatible than before, part 1. It merges more file types.&lt;br /&gt;
# It makes mods more compatible than before, part 2. It fixes merging for several file types that BCML had errors with.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size. (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu. (The hope is to also add support for NSP and XCI files with the Switch version, but those still can&#039;t be read yet)&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash.&lt;br /&gt;
# When something goes wrong, it gives the list of things it was doing in a way that is mostly readable by a human, instead of just dumping a bunch of code on you.&lt;br /&gt;
# If English isn&#039;t your native language, it (probably) has localization for your language, so that you can understand its UI better.&lt;br /&gt;
This list is not exhaustive, but it&#039;s long enough that the question is probably sufficiently answered.&lt;br /&gt;
&lt;br /&gt;
==== But I found a bunch of tutorials for BCML! ====&lt;br /&gt;
Not a question. Also, that&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to install and set up.&lt;br /&gt;
&lt;br /&gt;
=== Dump-Related Questions ===&lt;br /&gt;
&lt;br /&gt;
==== Do I really need a game dump? ====&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
==== Do I REAAAAAALLY need a game dump??? ====&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
==== Why do I need a game dump? ====&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
==== Where is my game dump? ====&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
==== But I really don&#039;t know where my game dump is! ====&lt;br /&gt;
Not a question. But it shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
=== General UKMM Questions ===&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s the difference between merge/Apply and Deploy? ====&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
==== Why don&#039;t my mods show up in my emulator after deploying? ====&lt;br /&gt;
Make sure you&#039;re using the most up to date version. Go back up to [[Help:Tools/UKMM#Install|the installation section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where UKMM deploys to.&lt;br /&gt;
&lt;br /&gt;
==== Why aren&#039;t all BNPs compatible? ====&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
==== Why can&#039;t UKMM detect my dump paths for consoles? ====&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
==== Why can&#039;t UKMM detect my dump paths for Yuzu/Ryujinx? ====&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
==== Why is UKMM so hard to use? ====&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
==== UKMM&#039;s UI sucks! It makes me want to kill my mother! ====&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
==== Why did you write this program in Rust? Rust is the product of Lovecraftian madmen! ====&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;br /&gt;
&lt;br /&gt;
=== Error-Related Questions ===&lt;br /&gt;
&lt;br /&gt;
==== Why is it failing to install BNPs? ====&lt;br /&gt;
What you&#039;re seeing is the least-specific thing. It&#039;s the equivalent of UKMM saying &amp;quot;something went wrong.&amp;quot; In order to find out what actually &#039;&#039;caused&#039;&#039; it, you&#039;ll need to expand the details by clicking on the little arrow next to the word Details.&lt;br /&gt;
&lt;br /&gt;
==== Why can&#039;t it find files in my dumps? ====&lt;br /&gt;
Your dump paths may be set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly. Notably, on Wii U: Base Game and Update paths should end in &amp;lt;code&amp;gt;/content&amp;lt;/code&amp;gt; and DLC path should end in &amp;lt;code&amp;gt;/content/0010&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve checked both of these things and made sure they&#039;re correct, then it&#039;s possible that the mod has corrupted files in it, which caused UKMM to write down that they exist, but was unable to open them to see what it needed to do with them. There isn&#039;t much that can be done about this: if a file is corrupted in a way that UKMM wants to read it, but can&#039;t, then the game won&#039;t be able to read it either. The mod will need to be fixed. (List of known mods this applies to: Hyrule Rebalance v8. There may be others)&lt;br /&gt;
&lt;br /&gt;
==== What does &amp;quot;game flag missing key&amp;quot; mean? ====&lt;br /&gt;
The mod was made wrong.&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;game flag&amp;quot; is something the game uses to store data when you leave, for example either walking away in-game or turning off the game entirely. If a game flag is missing something, it won&#039;t work properly.&lt;br /&gt;
&lt;br /&gt;
==== Why does it say &amp;quot;no platform for update&amp;quot;? ====&lt;br /&gt;
It can&#039;t detect what operating system you&#039;re using, in order to determine which version of the executable to download. Support for this feature is ongoing. You can just download the new version manually, from the link above in the [[#Prebuilt_program]] section.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11961</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11961"/>
		<updated>2026-04-14T22:56:20Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Prebuilt program */ Point back to official repo now that everything has been merged back into it&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/NiceneNerd/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already.&lt;br /&gt;
&lt;br /&gt;
==== Note for Non-Native English Speakers ====&lt;br /&gt;
Make sure that you set the UKMM Language setting to your native language (if present). This will help you understand the program and its layout better. &lt;br /&gt;
&lt;br /&gt;
(Yes, I realize that the fact that you don&#039;t speak English natively means you may not be able to read this, but hey, maybe you&#039;re translating this page, or maybe you can partially read English. I&#039;m not judging, here.)&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done! Now go to [[Help:Tools/UKMM#No, really, how do I use it?|No, really, how do I use it?]] to learn the simplest way to use UKMM&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains the Cemu program. There you go! All done! Now go to [[Help:Tools/UKMM#No, really, how do I use it?|No, really, how do I use it?]] to learn the simplest way to use UKMM&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go [[Help:Dumping_games|dump]] your game and come back. [[Help:Dumping_games|Help:Dumping_games]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Base with Update Folder (Switch)&lt;br /&gt;
|Where you store your Base with Update Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;01007EF00011E000&amp;lt;/code&amp;gt; folder in your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011E000/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. NOTE: DO NOT END THIS PATH WITH &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;, IT WILL NOT WORK. END THE PATH WITH &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;!&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;01007EF00011F001&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011F001/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. The &amp;lt;code&amp;gt;01007EF00011F002&amp;lt;/code&amp;gt; dump is not needed.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Check it if you are using Cemu. Do not check it if you are not using Cemu.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|Emulator Executable (optional)&lt;br /&gt;
|The command to use to run open your emulator when using the Open Emulator button&lt;br /&gt;
|A shell command for running your emulator. On Windows, this requires quotes around it at all times. On other OSes, it requires quotes around it if there are spaces in the path. As a shell command, it supports switches, e.g. &amp;quot;C:\path\to\Cemu.exe&amp;quot; -g &amp;quot;C:\path\to\botw\U-King.rpx&amp;quot; will open Cemu and skip the game selection menu, running the game immediately.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs will not install with UKMM, due to how they were made. If you find one, please contact Ginger.&lt;br /&gt;
* Certain mods distributed as BNPs that add lots of the same thing very close to each other on the map may be missing some of those things. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
&lt;br /&gt;
=== Mod Manager-Related Questions ===&lt;br /&gt;
&lt;br /&gt;
==== Do I need to use a mod manager? ====&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
==== But I install mods manually all the time? ====&lt;br /&gt;
In other games you do. BotW doesn&#039;t work the same way. You need to use a mod manager.&lt;br /&gt;
&lt;br /&gt;
==== Okay. WHY do I need to use a mod manager? ====&lt;br /&gt;
BotW contains about 17,000 archives in its standard form. When those archives are fully and completely decompressed and extracted, the game contains roughly 200,000 files. Most of those 200,000 files contain dozens, even hundreds, of parameters.&lt;br /&gt;
&lt;br /&gt;
If a mod edits just one of those parameters, in one of those files, in one of those archives, then, without a mod manager, that mod will override every other mod that you have that contains that archive. Given that an archive may contain an average of several thousand parameters, you can see how often mods will conflict.&lt;br /&gt;
&lt;br /&gt;
This isn’t even taking into account a special file that BotW has, called the RSTB. The RSTB contains data on almost every one of those 200,000 files, and so almost every mod needs to edit the RSTB. Most mods rely on a mod manager to edit the RSTB, so even if you don’t want to install more than one mod, the odds are still good that the mod you’re installing is assuming you’ll use a mod manager to make it work.&lt;br /&gt;
&lt;br /&gt;
And to top it all off, even if the one mod you want to use includes its own RSTB? That RSTB was probably made automatically, using an outdated tool that generates bad edits for the RSTB. And nobody has ever fixed that tool, because UKMM contains a much more accurate tool for it, that everyone is using anyway.&lt;br /&gt;
&lt;br /&gt;
=== UKMM vs. BCML Questions ===&lt;br /&gt;
&lt;br /&gt;
==== When should I use UKMM as my mod manager, instead of BCML? ====&lt;br /&gt;
Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
==== What are the exceptions, for when I should use BCML instead? ====&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
This list is not exhaustive, but it &#039;&#039;almost&#039;&#039; is. There&#039;s very few other real reasons to use BCML, after 2024 when UKMM surpassed it.&lt;br /&gt;
&lt;br /&gt;
==== WHY should I use UKMM instead? ====&lt;br /&gt;
# It installs BNPs just like BCML does.&lt;br /&gt;
# It&#039;s easier to install.&lt;br /&gt;
# If you&#039;re using Cemu, or previously used BCML, it&#039;s much easier to set up.&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there.&lt;br /&gt;
# It merges map changes from the DLC files into the base game, so you can install many mods that only have DLC map files even if you don&#039;t have the DLC.&lt;br /&gt;
# It doesn&#039;t do unnecessary things, part 1. When you install a mod, all it does is install it. It will only combine it with other mods when you tell it to combine them.&lt;br /&gt;
# It doesn&#039;t do unnecessary things, part 2. When you merge/combine mods, it only recombines those files from the mods you&#039;ve changed since your last combo.&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file.&lt;br /&gt;
# It makes mods more compatible than before, part 1. It merges more file types.&lt;br /&gt;
# It makes mods more compatible than before, part 2. It fixes merging for several file types that BCML had errors with.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size. (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu. (The hope is to also add support for NSP and XCI files with the Switch version, but those still can&#039;t be read yet)&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash.&lt;br /&gt;
# When something goes wrong, it gives the list of things it was doing in a way that is mostly readable by a human, instead of just dumping a bunch of code on you.&lt;br /&gt;
# If English isn&#039;t your native language, it (probably) has localization for your language, so that you can understand its UI better.&lt;br /&gt;
This list is not exhaustive, but it&#039;s long enough that the question is probably sufficiently answered.&lt;br /&gt;
&lt;br /&gt;
==== But I found a bunch of tutorials for BCML! ====&lt;br /&gt;
Not a question. Also, that&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to install and set up.&lt;br /&gt;
&lt;br /&gt;
=== Dump-Related Questions ===&lt;br /&gt;
&lt;br /&gt;
==== Do I really need a game dump? ====&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
==== Do I REAAAAAALLY need a game dump??? ====&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
==== Why do I need a game dump? ====&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
==== Where is my game dump? ====&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
==== But I really don&#039;t know where my game dump is! ====&lt;br /&gt;
Not a question. But it shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
=== General UKMM Questions ===&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s the difference between merge/Apply and Deploy? ====&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
==== Why don&#039;t my mods show up in my emulator after deploying? ====&lt;br /&gt;
Make sure you&#039;re using the most up to date version. Go back up to [[Help:Tools/UKMM#Install|the installation section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where UKMM deploys to.&lt;br /&gt;
&lt;br /&gt;
==== Why aren&#039;t all BNPs compatible? ====&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
==== Why can&#039;t UKMM detect my dump paths for consoles? ====&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
==== Why can&#039;t UKMM detect my dump paths for Yuzu/Ryujinx? ====&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
==== Why is UKMM so hard to use? ====&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
==== UKMM&#039;s UI sucks! It makes me want to kill my mother! ====&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
==== Why did you write this program in Rust? Rust is the product of Lovecraftian madmen! ====&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;br /&gt;
&lt;br /&gt;
=== Error-Related Questions ===&lt;br /&gt;
&lt;br /&gt;
==== Why is it failing to install BNPs? ====&lt;br /&gt;
What you&#039;re seeing is the least-specific thing. It&#039;s the equivalent of UKMM saying &amp;quot;something went wrong.&amp;quot; In order to find out what actually &#039;&#039;caused&#039;&#039; it, you&#039;ll need to expand the details by clicking on the little arrow next to the word Details.&lt;br /&gt;
&lt;br /&gt;
==== Why can&#039;t it find files in my dumps? ====&lt;br /&gt;
Your dump paths may be set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly. Notably, on Wii U: Base Game and Update paths should end in &amp;lt;code&amp;gt;/content&amp;lt;/code&amp;gt; and DLC path should end in &amp;lt;code&amp;gt;/content/0010&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve checked both of these things and made sure they&#039;re correct, then it&#039;s possible that the mod has corrupted files in it, which caused UKMM to write down that they exist, but was unable to open them to see what it needed to do with them. There isn&#039;t much that can be done about this: if a file is corrupted in a way that UKMM wants to read it, but can&#039;t, then the game won&#039;t be able to read it either. The mod will need to be fixed. (List of known mods this applies to: Hyrule Rebalance v8. There may be others)&lt;br /&gt;
&lt;br /&gt;
==== What does &amp;quot;game flag missing key&amp;quot; mean? ====&lt;br /&gt;
The mod was made wrong.&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;game flag&amp;quot; is something the game uses to store data when you leave, for example either walking away in-game or turning off the game entirely. If a game flag is missing something, it won&#039;t work properly.&lt;br /&gt;
&lt;br /&gt;
==== Why does it say &amp;quot;no platform for update&amp;quot;? ====&lt;br /&gt;
It can&#039;t detect what operating system you&#039;re using, in order to determine which version of the executable to download. Support for this feature is ongoing. You can just download the new version manually, from the link above in the [[#Prebuilt_program]] section.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Bas&amp;diff=11960</id>
		<title>Bas</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Bas&amp;diff=11960"/>
		<updated>2026-04-12T17:36:23Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* FrameCtrl */ Whoops, these are actually floats in the files. Why are they floats? Who knows. Thanks Nintendo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;bas&#039;&#039;&#039; files each represent an animation that can be called by an [[actor]] or [[Demo|cutscene]]. They contain a reference to an animation name, but not the animation file itself. They can be found at &#039;&#039;&#039;Actor/AS/{EventName}/{AnimationSequenceName}.bas&#039;&#039;&#039; in [[Beventpack|beventpacks]] and [[TitleBG.pack]]/Actor/AS, and &#039;&#039;&#039;Actor/AS/{AnimationSequenceName}.bas&#039;&#039;&#039; in bactorpacks.&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Layout==&lt;br /&gt;
Each bas file is made up of one list of elements, named Elements. Each element (Element0, Element1, etc) can be either a test to figure out what animation to play, or a call to play the animation.&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
All nodes have Parameters, which determine what kind of node they are. They can be a control node, which helps decide which animation to play, or an animation node, which actually plays the animation.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key&lt;br /&gt;
!Key Type&lt;br /&gt;
!Description&lt;br /&gt;
!Node Type&lt;br /&gt;
!Default value&lt;br /&gt;
|-&lt;br /&gt;
|TypeIndex&lt;br /&gt;
|int&lt;br /&gt;
|Type of node the Element is. Known types are listed below the table.&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|NoSync&lt;br /&gt;
|bool&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|JudgeOnce&lt;br /&gt;
|bool&lt;br /&gt;
|Tells the game to skip evaluating this node (and use the previous result) if the input value has not changed since the last time the node was run.&lt;br /&gt;
|Control&lt;br /&gt;
|False&lt;br /&gt;
|-&lt;br /&gt;
|InputLimit&lt;br /&gt;
|float&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|FileName&lt;br /&gt;
|str64&lt;br /&gt;
|Name of the animation to play&lt;br /&gt;
|Animation&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Morph&lt;br /&gt;
|int&lt;br /&gt;
|Time to blend the previous animation into this one. Appears to be measured in frames.&lt;br /&gt;
|Animation&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|SequenceLoop&lt;br /&gt;
|bool&lt;br /&gt;
|Determines whether a sequence (Used with TypeIndex 61) is set to repeat&lt;br /&gt;
|Control&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Parameter TypeIndex====&lt;br /&gt;
Nodes with Blender are generally used to perform the same checks as those with Selector in the name, with a key difference: Blender nodes may evaluate multiple cases as true, and will blend the resulting animations together. Selector nodes will choose only the first case that evaluates to true.{{Check}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Name &amp;lt;ref&amp;gt;TypeIndex function table in the 1.5.0 [[executable]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
!Description&lt;br /&gt;
!Type&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|AbsTemperatureBlender&lt;br /&gt;
|Current world temperature. Evaluated by float range.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|AbsTemperatureSelector&lt;br /&gt;
|Current world temperature. Evaluated by float range.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|ArmorSelector&lt;br /&gt;
|What armor is currently equipped. Used only in &#039;&#039;&#039;Player_Wait.bas&#039;&#039;&#039;. Only observed working values are &amp;lt;code&amp;gt;NoUpper&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NoLower&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NoAll&amp;lt;/code&amp;gt;.{{#tag:ref|Element32 of Player_Wait.bas, WiiU 1.5.0|name=e32pw}} Does not appear to accept armor actor names.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|ArrowSelector&lt;br /&gt;
|Seems to check what arrow Link has equipped. However, the game only ever uses a &#039;&#039;&#039;StringArray&#039;&#039;&#039; of &#039;&#039;&#039;Empty&#039;&#039;&#039; and a default case. This is used to check whether Link has arrows in his bow, to determine how to blend his animations or to play different ones.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|AttentionSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|BoneBlender&lt;br /&gt;
|Accepts bone chains as values. May accept multiple values. Some examples of known bone chains are &amp;quot;ArmR&amp;quot; and &amp;quot;ArmL&amp;quot;.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|BoneVisibilityAsset&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|BoolSelector&lt;br /&gt;
|Boolean evaluator - See [[#BitIndex]]{{#tag:ref|Element1 of Player_CutNinja.bas, WiiU 1.5.0|name=e1pcn}}{{#tag:ref|Element0 of Player_FaceDefault.bas, WiiU 1.5.0|name=e0pfd}}{{#tag:ref|Element2 of Player_FaceDefault.bas, WiiU 1.5.0|name=e2pfd}} If false, the element specified by Child0 is evaluated. If true, Child1 is evaluated.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|ButtonSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|ChargeSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|ClearMatAnmAsset&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|ComboSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|DiffAngleYBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|DiffAngleYSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|DirectionAngleBlender&lt;br /&gt;
|Compares to the movement analog stick&#039;s current orientation, in degrees, in counter-clockwise fashion. Accepts -359 to 360. (e.g. 270 and -90 both point directly to the right). Evaluated by float range.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|DirectionAngleSelector&lt;br /&gt;
|Compares to the movement analog stick&#039;s current orientation, in degrees, in counter-clockwise fashion. Accepts -359 to 360. (e.g. 270 and -90 both point directly to the right). Evaluated by float range.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|DistanceBlender&lt;br /&gt;
|Compares distance between Link and his current locked target{{#tag:ref|Element2 of Player_CutNinja.bas, WiiU 1.5.0|name=e2pcn}}. Evaluated by float range.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|DistanceSelector&lt;br /&gt;
|Compares distance between Link and his current locked target. Evaluated by float range.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|DungeonClearSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|DungeonNumberSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|EmotionSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|EventFlagSelector&lt;br /&gt;
|Checks whether a GameData flag is true. The StringArray defines the flags to be checked. Known to accept 1 child plus a default case, but in a single instance there&#039;s no default case.&amp;lt;ref&amp;gt;Npc_Rito_Hearts_BandVisibilityOff.bas&amp;lt;/ref&amp;gt; In another instance, both strings are flags. &amp;lt;ref&amp;gt;UR_M_Teba_Teba_DamageVisibility_On.bas&amp;lt;/ref&amp;gt; If both are true, the first case evaluated as true will be run.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|EyeSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|EyebrowSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|FaceEmotionSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|FootBLLifeSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|FootBRLifeSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|FootFLLifeSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|FootFRLifeSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|29&lt;br /&gt;
|ForwardBentBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|30&lt;br /&gt;
|ForwardBentSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|31&lt;br /&gt;
|GearSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|32&lt;br /&gt;
|GenerationSelector&lt;br /&gt;
|Int check - Unknown&amp;lt;ref&amp;gt;Element7 of UH_C_Face_Talk.bas and Element3 of UH_C_Face_Default.bas&amp;lt;/ref&amp;gt; In both referenced cases (used in NPC actorpacks), Value0 is &#039;&#039;&#039;2&#039;&#039;&#039;, and Value1 is &#039;&#039;&#039;-2147483648&#039;&#039;&#039;, which is the negative 32-bit integer limit.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|33&lt;br /&gt;
|GrabTypeSelector&lt;br /&gt;
|Compares the [[Bgparamlist#Liftable|LiftType]] of the actor that is being grabbed/lifted (from its bgparamlist). Known to accept as many as 24 children and a default case.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|34&lt;br /&gt;
|GroundNormalBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|35&lt;br /&gt;
|GroundNormalSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|36&lt;br /&gt;
|GroundNormalSideBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|37&lt;br /&gt;
|GroundNormalSideSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|38&lt;br /&gt;
|MaskSelector&lt;br /&gt;
|Checks the MaskType parameter of the currently equipped Head armor. Its children reference other elements to jump to if a matching MaskType is found, and a StringArray in its Extend determine the MaskType(s) to check for.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|39&lt;br /&gt;
|MatVisibilityAsset&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|40&lt;br /&gt;
|MouthSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|41&lt;br /&gt;
|NoAnmAsset&lt;br /&gt;
|Play no animation. Used to cancel evaluation.&lt;br /&gt;
|Animation&lt;br /&gt;
|-&lt;br /&gt;
|42&lt;br /&gt;
|NoLoopStickAngleBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|43&lt;br /&gt;
|NoLoopStickAngleSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|44&lt;br /&gt;
|NodePosSelector&lt;br /&gt;
|Compares name of a bone, takes StrRef of the bone name. Unknown how it decides which bone name to compare the StrRef to.{{#tag:ref|Element0 of Player_LadderJump.bas, WiiU 1.5.0|name=e0plj}} Can be paired with an axis name (e.g. &amp;lt;code&amp;gt;Toe_L,Z&amp;lt;/code&amp;gt;) to measure value on that axis. When used in this way, the node chooses the child corresponding to the highest value among those measured.{{#tag:ref|Element8 of UZ_M_Move_End.bas, WiiU 1.5.0|name=e8uzmme}} When no axis name is given, the vector to the origin is measured. {{Check}}&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|45&lt;br /&gt;
|PersonalitySelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|46&lt;br /&gt;
|PostureSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|47&lt;br /&gt;
|PreASSelector&lt;br /&gt;
|Compares last played animation name, takes StrRef of animation name. Accepts up to 5 children.{{#tag:ref|Element11 of Player_CutChargeWait.bas, WiiU 1.5.0|name=e11pccw}}&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|48&lt;br /&gt;
|PreExclusionRandomSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|49&lt;br /&gt;
|RandomSelector&lt;br /&gt;
|Picks a random node from the given nodes.{{Check}}&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|50&lt;br /&gt;
|RideSelector&lt;br /&gt;
|Compares the profile of the mount the actor is currently riding. Known to accept one Child, plus a default case, but might accept more or less.{{Check}}&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|51&lt;br /&gt;
|RightStickAngleBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|52&lt;br /&gt;
|RightStickAngleSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|53&lt;br /&gt;
|RightStickValueBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|54&lt;br /&gt;
|RightStickValueSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|55&lt;br /&gt;
|RightStickXBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|56&lt;br /&gt;
|RightStickXSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|57&lt;br /&gt;
|RightStickYBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|58&lt;br /&gt;
|RightStickYSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|59&lt;br /&gt;
|SelfHeightSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|60&lt;br /&gt;
|SelfWeightSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|61&lt;br /&gt;
|SequencePlayContainer&lt;br /&gt;
|Float comparison - Unknown{{#tag:ref|Element0 of Player_Move.bas, WiiU 1.5.0|name=e0pm}}&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|62&lt;br /&gt;
|ShaderParamAsset&lt;br /&gt;
|Plays material animation, takes StrRef of the animation name. Its Extend uses a secondary animation name for unknown purpose.{{#tag:ref|Element1 of Player_SkinColor.bas, WiiU 1.5.0|name=e1psc}}{{#tag:ref|Element2 of Player_SkinColor.bas, WiiU 1.5.0|name=e2psc}}&lt;br /&gt;
|Animation&lt;br /&gt;
|-&lt;br /&gt;
|63&lt;br /&gt;
|ShaderParamColorAsset&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|64&lt;br /&gt;
|ShaderParamTexSRTAsset&lt;br /&gt;
|Plays texture transform animation, takes StrRef of the animation name.&lt;br /&gt;
|Animation&lt;br /&gt;
|-&lt;br /&gt;
|65&lt;br /&gt;
|SizeBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|66&lt;br /&gt;
|SizeSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|67&lt;br /&gt;
|SkeltalAsset&lt;br /&gt;
|Plays model animation, takes StrRef of the animation name.&lt;br /&gt;
|Animation&lt;br /&gt;
|-&lt;br /&gt;
|68&lt;br /&gt;
|SpeedBlender&lt;br /&gt;
|Compares actor&#039;s current movement speed. Evaluated by float range.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|69&lt;br /&gt;
|SpeedSelector&lt;br /&gt;
|Compares actor&#039;s current movement speed. Evaluated by float range.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|70&lt;br /&gt;
|StickAngleBlender&lt;br /&gt;
|Compares the movement analog stick&#039;s current orientation, in degrees, in counter-clockwise fashion. Accepts -359 to 360. (e.g. 270 and -90 both point directly to the right). Evaluated by float range.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|71&lt;br /&gt;
|StickAngleSelector&lt;br /&gt;
|Compares the movement analog stick&#039;s current orientation, in degrees, in counter-clockwise fashion. Accepts -359 to 360. (e.g. 270 and -90 both point directly to the right). Evaluated by float range.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|72&lt;br /&gt;
|StickValueBlender&lt;br /&gt;
|Range evaluation - Unknown{{#tag:ref|Element0 of Player_SwimAtnMove.bas, WiiU 1.5.0|name=e0psam}}&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|73&lt;br /&gt;
|StickValueSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|74&lt;br /&gt;
|StickXBlender&lt;br /&gt;
|Compares the movement analog stick&#039;s current horizontal position, as a float value. Fully left is -1.0, fully right is 1.0.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|75&lt;br /&gt;
|StickXSelector&lt;br /&gt;
|Compares the movement analog stick&#039;s current horizontal position, as a float value. Fully left is -1.0, fully right is 1.0.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|76&lt;br /&gt;
|StickYBlender&lt;br /&gt;
|Compares the movement analog stick&#039;s current vertical position, as a float value. Fully down is -1.0, fully up is 1.0.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|77&lt;br /&gt;
|StickYSelector&lt;br /&gt;
|Compares the movement analog stick&#039;s current vertical position, as a float value. Fully down is -1.0, fully up is 1.0.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|78&lt;br /&gt;
|StressBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|79&lt;br /&gt;
|StressSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|80&lt;br /&gt;
|SyncPlayContainer&lt;br /&gt;
|Synchronously plays multiple child elements&lt;br /&gt;
|Animation&lt;br /&gt;
|-&lt;br /&gt;
|81&lt;br /&gt;
|TemperatureBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|82&lt;br /&gt;
|TemperatureSelector&lt;br /&gt;
|Range evaluation - Unknown{{#tag:ref|Element1 of Player_FaceDefault.bas, WiiU 1.5.0|name=e1pfd}}&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|83&lt;br /&gt;
|TexturePatternAsset&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|84&lt;br /&gt;
|TimeSelector&lt;br /&gt;
|Checks the current time. Observed values are &#039;&#039;&#039;Morning_A&#039;&#039;&#039;, &#039;&#039;&#039;Morning_B&#039;&#039;&#039;, &#039;&#039;&#039;Evening_B&#039;&#039;&#039;, &#039;&#039;&#039;Night_A&#039;&#039;&#039;, and &#039;&#039;&#039;Night_B&#039;&#039;&#039;. &#039;&#039;&#039;Evening_A&#039;&#039;&#039; is never used, but is assumed to exist. Known to accept any number of children along with a default case.&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|85&lt;br /&gt;
|TiredBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|86&lt;br /&gt;
|TiredSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|87&lt;br /&gt;
|UseItemSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|88&lt;br /&gt;
|UserAngle2Blender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|89&lt;br /&gt;
|UserAngle2Selector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|90&lt;br /&gt;
|UserAngleBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|91&lt;br /&gt;
|UserAngleSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|92&lt;br /&gt;
|UserSpeedBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|93&lt;br /&gt;
|UserSpeedSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|94&lt;br /&gt;
|VariationSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|95&lt;br /&gt;
|WallAngleBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|96&lt;br /&gt;
|WallAngleSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|97&lt;br /&gt;
|WeaponDetailSelector&lt;br /&gt;
|Compares actor&#039;s equipped weapon subtype (from its bgparamlist [ProfileUser] WeaponSubtype value), takes StrRef of weapon subtype name&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|98&lt;br /&gt;
|WeaponSelector&lt;br /&gt;
|Compares actor&#039;s equipped weapon profile (from its bxml ProfileUser value), takes StrRef of weapon profile name&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|99&lt;br /&gt;
|WeatherSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|100&lt;br /&gt;
|WeightBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|101&lt;br /&gt;
|WeightSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|102&lt;br /&gt;
|WindVelocityBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|103&lt;br /&gt;
|YSpeedBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|104&lt;br /&gt;
|YSpeedSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|105&lt;br /&gt;
|ZEx00ExposureBlender&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|106&lt;br /&gt;
|ZEx00ExposureSelector&lt;br /&gt;
| -&lt;br /&gt;
|Control&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Children===&lt;br /&gt;
Control nodes will have Children, in addition to Parameters, which determine which Element to go to after the control node is evaluated. The properties of Children will be named Child0, Child1, etc, and each will have a single integer value, which will correspond to the Element number. e.g. &amp;lt;code&amp;gt;Child0: 7&amp;lt;/code&amp;gt; points to Element7.&lt;br /&gt;
&lt;br /&gt;
===Extend===&lt;br /&gt;
All nodes have an Extend, which contains specific details about the node. Control node Extends will contain details about the comparison being performed, while animation nodes will contain information about the animation being played, such as: during which frames of the animation a weapon will deal damage if it hits something, when user input is ignored, when to draw weapon trails through the air for attack animations, etc.&lt;br /&gt;
&lt;br /&gt;
====Typed Array====&lt;br /&gt;
A list of variables of a given type to use for various control comparisons. Corresponds directly to the Children of the node. i.e. if Value0 matches the value being compared against, the code will jump to the Element listed under Child0. If no comparison of a lower Child number has evaluated as true, automatically evaluates a Child whose value is &amp;quot;default&amp;quot; as true.{{#tag:ref|Element0 of Player_CutNinja.bas, WiiU 1.5.0|name=e0pcn}}{{#tag:ref|Element3 of Player_FaceDefault.bas, WiiU 1.5.0|name=e3pfd}}&lt;br /&gt;
&lt;br /&gt;
====BitIndex====&lt;br /&gt;
Used with BoolSelector Parameters. Also has TypeIndex, which are used to perform the check.&lt;br /&gt;
&lt;br /&gt;
*2 - Unknown (believed to check if Link has any armor equipped)&amp;lt;ref name=&amp;quot;e0pfd&amp;quot; /&amp;gt;&lt;br /&gt;
*5 - Unknown (believed to check if Link is carrying an object)&lt;br /&gt;
*15 - Unknown. Appears in Player_WeaponEquipOn after an Attention Selector and a BitIndex 30 check, implying that it has something to do with shields.&lt;br /&gt;
*17 - Unknown (believed to check whether Link is airborne)&lt;br /&gt;
*30 - Whether or not Link has a shield equipped. (First Child is False, Second Child is True)&amp;lt;ref name=&amp;quot;e1pcn&amp;quot; /&amp;gt;&lt;br /&gt;
*32 - Unknown. Seems associated with playing NPC facial expressions.&lt;br /&gt;
*33 - Unknown (believed to check if Link is tired)&amp;lt;ref name=&amp;quot;e2pfd&amp;quot; /&amp;gt;&lt;br /&gt;
*36 - Unknown (believed to check if Link is locked onto a target)&lt;br /&gt;
*37 - Whether IsBlunt is set to true in the equipped weapon’s bgparamlist&lt;br /&gt;
*38 - Unknown (believed to check if the current weapon is on fire). (First Child is False, Second Child is True)&lt;br /&gt;
*46 - Unknown (believed to check if Link is crouched)&lt;br /&gt;
&lt;br /&gt;
====Ranges====&lt;br /&gt;
Used with control nodes that perform a Range evaluation. If the value being compared is above the Start value and below the End value, evaluates as true. Otherwise, moves on to the next value. (Unknown what happens if none of the Ranges evaluate to true, presumably game crash)&lt;br /&gt;
&lt;br /&gt;
====FrameCtrl====&lt;br /&gt;
Used with animation nodes. The node itself is required, even if it is empty (i.e. none of the keys are specified)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
!Default value&lt;br /&gt;
|-&lt;br /&gt;
|Rate&lt;br /&gt;
|float&lt;br /&gt;
|Speed at which to play the animation. Higher numbers are faster.&lt;br /&gt;
|1.0&lt;br /&gt;
|-&lt;br /&gt;
|StartFrame&lt;br /&gt;
|float&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|EndFrame&lt;br /&gt;
|float&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|LoopStopCount&lt;br /&gt;
|float&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|LoopStopCountRandom&lt;br /&gt;
|float&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|UseGlobalFrame&lt;br /&gt;
|bool&lt;br /&gt;
| -&lt;br /&gt;
|false&lt;br /&gt;
|-&lt;br /&gt;
|ReversePlay&lt;br /&gt;
|bool&lt;br /&gt;
| -&lt;br /&gt;
|false&lt;br /&gt;
|-&lt;br /&gt;
|Connect&lt;br /&gt;
|int&lt;br /&gt;
|The only observed values are 1, 2, and 3.&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|AnmLoop&lt;br /&gt;
|int&lt;br /&gt;
|The only observed values are 1 and 2. &amp;lt;ref&amp;gt;Elements 10 and 11 of AncientDoctor_C_Face_Default.bas&amp;lt;/ref&amp;gt;&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TriggerEvents====&lt;br /&gt;
Used with Parameter TypeIndex 67. Possibly used with other animation node TypeIndexes, but none have so far been observed. Events which are triggered during this animation.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
!Default value&lt;br /&gt;
|-&lt;br /&gt;
|TypeIndex&lt;br /&gt;
|int&lt;br /&gt;
|Which type of event to fire. Known events are detailed below&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Frame&lt;br /&gt;
|float&lt;br /&gt;
|Which frame to fire the event on, relative to the frame numbers of the animation. Can be negative.&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Value&lt;br /&gt;
|strRef&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Known TypeIndex values:&lt;br /&gt;
&lt;br /&gt;
*0 - Used to play sound effects during animations. Known to accept any attack or enemy attack sound effect, but probably works with other sound files.&amp;lt;ref&amp;gt;Compare Event0 of TriggerEvents and Event0 of HoldEvents for most of Link&#039;s attack animations&amp;lt;/ref&amp;gt;&lt;br /&gt;
*4 - Triggers the animation controller to transition back into the idle stance. The Frame value should be a few before the end of the actual animation, so that the controller can make the blending look natural.&amp;lt;ref&amp;gt;Compare TriggerEvent TypeIndex 4 Frame value for an animation with the number of frames in the actual animation.&amp;lt;/ref&amp;gt;&lt;br /&gt;
*5 - Seems to tell when to start the laser targeting animation based on frame. Observed in Water Blight&#039;s &amp;quot;Attack_Eye_Start&amp;quot; animation.&lt;br /&gt;
*7 - Call AS. Passes the strRef to the ASList to retrieve an AS file and starts evaluating it from Element0.&lt;br /&gt;
*14 - Seems to indicate an enemy has entered a state of being airborne.&lt;br /&gt;
*17 - Seems to check when an enemy&#039;s targeting laser should end. Observed in Water Blight&#039;s &amp;quot;Attack_Eye_End&amp;quot; animation.&lt;br /&gt;
*28 - Play audio. Able to play any bfwav file in PlayerVoice.bars.&lt;br /&gt;
*29 - Seems to determine when a weapon will bind to a bone. &amp;lt;ref&amp;gt;Player_WeaponEquipOn.bas&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====HoldEvents====&lt;br /&gt;
Used with Parameter TypeIndex 67. Possibly used with other animation node TypeIndexes, but none have so far been observed. States that are entered into while the animation is playing.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
!Default value&lt;br /&gt;
|-&lt;br /&gt;
|TypeIndex&lt;br /&gt;
|int&lt;br /&gt;
|Which type of event to fire. Known events are detailed below&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|StartFrame&lt;br /&gt;
|float&lt;br /&gt;
|Which frame to start the event on, relative to the frame numbers of the animation. Unknown if it can be negative.&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|EndFrame&lt;br /&gt;
|float&lt;br /&gt;
|Which frame to end the event on, relative to the frame numbers of the animation. A value of -1 is treated as the ending frame of the animation.&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Value&lt;br /&gt;
|strRef&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Known TypeIndex values:&lt;br /&gt;
&lt;br /&gt;
*0 - Seems to allow Link&#039;s attack animations to combo into one another. New attack elements will not combo together if there is no TypeIndex 0 present in the Hold Events.&lt;br /&gt;
*2 - Seems to determine when some attacks (entries in Player_CutJumpSt and others) will connect with targets. Removing TypeIndex 2 causes animations to play halfway through. TypeIndex 2 also tends to have a StartFrame somewhere near the middle of the animation, and an end frame of -1.0, indicating that it may be responsible for blending certain attack animations into one another, particularly those that loop or combine.&lt;br /&gt;
*3 - Defines when an attack will deal damage. Value is the damage type. Left: slashing. Stab: piercing. Lower: blunt. {{Check}}&lt;br /&gt;
*6  - Can be multiple events in a row (event1, event2, event3) with observed !str32 values 0-3. Found after TypeIndex 3 and TypeIndex 44. Observed in several Dark Beast Ganon attacks and appears related to what frames interacting with Dark Beast Ganon&#039;s legs will deal damage to Link.&lt;br /&gt;
*13 - Associated with many of Sidon&#039;s swimming animations during the Vah Ruta fight such as &amp;quot;Act_Sink_St&amp;quot;, &amp;quot;Act_Sink_Ed&amp;quot; and &amp;quot;Act_Swim_Ejection&amp;quot;, etc. May be associated with splash effects.&lt;br /&gt;
*14 - Defines when an animation will block attack damage using Link&#039;s equipped shield.&lt;br /&gt;
*15 - Unknown. Observed after TypeIndex 30 and 31 which may indicate it relates to cloth simulation. Accepts a !str32 with one observed value being &amp;quot;0&amp;quot;.&lt;br /&gt;
*17 - Unknown&lt;br /&gt;
*20 - Observed with value of !str32 &amp;quot;Equipment&amp;quot; and &amp;quot;Weapon&amp;quot;. Accepts Start and end frames. Likely associated with spawining actors as observed in Demo_Appearance_Para which is used in the Vagrant&#039;s parasailing scenes.&lt;br /&gt;
*22 - Unknown. Found in Link&#039;s Player_CutShieldRide.bas animation, and seems to correspond to the air effects under the board, but can&#039;t be applied to other attack animations. Also found in elder NPCs for walking and sitting. May be checking the IKFoot position (i.e FloorContact_Ankle_L) based on frame count.&lt;br /&gt;
*25 - Unknown. Appears to have something to do with Bone Control, as it is often observed with the !str32 Value &amp;quot;OnlyEye&amp;quot;. Also observed in elder Zora NPCs with the !str32 Value &amp;quot;OnlyNeck&amp;quot;.&lt;br /&gt;
*26 - Appears related to TypeIndex 25. Observed as an Event1 when Event0 for TypeIndex 25 has the !str32 Value &amp;quot;Disable&amp;quot;. May allow for whatever was disabled to be turned on.&lt;br /&gt;
*30 - Observed in Dorephan&#039;s facial expressions. Associated with HAVOK physics with !str32 Value &amp;quot;Head_FinTail_Havok&amp;quot;. May affect all cloth simulation in a chain compared to TypeIndex 31.&lt;br /&gt;
*31 - Appears related to Bone Control or Cloth Physics. Observed with the !str32 Value &amp;quot;Arm_Fin_1&amp;quot; which is associated with Zora NPC physics. May only affect one part of a cloth chain compared to TypeIndex30.&lt;br /&gt;
*35 - Unknown&lt;br /&gt;
*44 - Unknown. May be related to when an attack will deal damage. Observed in several Dark Beast Ganon attacks.&lt;br /&gt;
*45 - Defines when to accept input to start the next attack.&lt;br /&gt;
*48 - Defines when to display the trails in the air during an attack.&lt;br /&gt;
*49 - Believed to define the animation frames during which an actor is resistant to knock back. Notably used during animations where the actor leaves the ground and in most cases, active during frames when actor is airborne.&lt;br /&gt;
*50 - Observed at the end of several Dark Beast Ganon attacks. Appears to be how many frames observed values !str32 Value &amp;quot;Large&amp;quot; and &amp;quot;Middle&amp;quot; will be.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (AAMP)]]&lt;br /&gt;
[[Category:Actor parameter files]]&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11959</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11959"/>
		<updated>2026-04-04T17:41:13Z</updated>

		<summary type="html">&lt;p&gt;Ginger: Overhaul: Moved early info sections into FAQ, added some FAQ questions, reorganized FAQ area, simplified some language, added note about changing language for non-English and non-native speakers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already.&lt;br /&gt;
&lt;br /&gt;
==== Note for Non-Native English Speakers ====&lt;br /&gt;
Make sure that you set the UKMM Language setting to your native language (if present). This will help you understand the program and its layout better. &lt;br /&gt;
&lt;br /&gt;
(Yes, I realize that the fact that you don&#039;t speak English natively means you may not be able to read this, but hey, maybe you&#039;re translating this page, or maybe you can partially read English. I&#039;m not judging, here.)&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done! Now go to [[Help:Tools/UKMM#No, really, how do I use it?|No, really, how do I use it?]] to learn the simplest way to use UKMM&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains the Cemu program. There you go! All done! Now go to [[Help:Tools/UKMM#No, really, how do I use it?|No, really, how do I use it?]] to learn the simplest way to use UKMM&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go [[Help:Dumping_games|dump]] your game and come back. [[Help:Dumping_games|Help:Dumping_games]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Base with Update Folder (Switch)&lt;br /&gt;
|Where you store your Base with Update Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;01007EF00011E000&amp;lt;/code&amp;gt; folder in your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011E000/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. NOTE: DO NOT END THIS PATH WITH &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;, IT WILL NOT WORK. END THE PATH WITH &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;!&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;01007EF00011F001&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011F001/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. The &amp;lt;code&amp;gt;01007EF00011F002&amp;lt;/code&amp;gt; dump is not needed.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Check it if you are using Cemu. Do not check it if you are not using Cemu.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|Emulator Executable (optional)&lt;br /&gt;
|The command to use to run open your emulator when using the Open Emulator button&lt;br /&gt;
|A shell command for running your emulator. On Windows, this requires quotes around it at all times. On other OSes, it requires quotes around it if there are spaces in the path. As a shell command, it supports switches, e.g. &amp;quot;C:\path\to\Cemu.exe&amp;quot; -g &amp;quot;C:\path\to\botw\U-King.rpx&amp;quot; will open Cemu and skip the game selection menu, running the game immediately.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs will not install with UKMM, due to how they were made. If you find one, please contact Ginger.&lt;br /&gt;
* Certain mods distributed as BNPs that add lots of the same thing very close to each other on the map may be missing some of those things. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
&lt;br /&gt;
=== Mod Manager-Related Questions ===&lt;br /&gt;
&lt;br /&gt;
==== Do I need to use a mod manager? ====&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
==== But I install mods manually all the time? ====&lt;br /&gt;
In other games you do. BotW doesn&#039;t work the same way. You need to use a mod manager.&lt;br /&gt;
&lt;br /&gt;
==== Okay. WHY do I need to use a mod manager? ====&lt;br /&gt;
BotW contains about 17,000 archives in its standard form. When those archives are fully and completely decompressed and extracted, the game contains roughly 200,000 files. Most of those 200,000 files contain dozens, even hundreds, of parameters.&lt;br /&gt;
&lt;br /&gt;
If a mod edits just one of those parameters, in one of those files, in one of those archives, then, without a mod manager, that mod will override every other mod that you have that contains that archive. Given that an archive may contain an average of several thousand parameters, you can see how often mods will conflict.&lt;br /&gt;
&lt;br /&gt;
This isn’t even taking into account a special file that BotW has, called the RSTB. The RSTB contains data on almost every one of those 200,000 files, and so almost every mod needs to edit the RSTB. Most mods rely on a mod manager to edit the RSTB, so even if you don’t want to install more than one mod, the odds are still good that the mod you’re installing is assuming you’ll use a mod manager to make it work.&lt;br /&gt;
&lt;br /&gt;
And to top it all off, even if the one mod you want to use includes its own RSTB? That RSTB was probably made automatically, using an outdated tool that generates bad edits for the RSTB. And nobody has ever fixed that tool, because UKMM contains a much more accurate tool for it, that everyone is using anyway.&lt;br /&gt;
&lt;br /&gt;
=== UKMM vs. BCML Questions ===&lt;br /&gt;
&lt;br /&gt;
==== When should I use UKMM as my mod manager, instead of BCML? ====&lt;br /&gt;
Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
==== What are the exceptions, for when I should use BCML instead? ====&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
This list is not exhaustive, but it &#039;&#039;almost&#039;&#039; is. There&#039;s very few other real reasons to use BCML, after 2024 when UKMM surpassed it.&lt;br /&gt;
&lt;br /&gt;
==== WHY should I use UKMM instead? ====&lt;br /&gt;
# It installs BNPs just like BCML does.&lt;br /&gt;
# It&#039;s easier to install.&lt;br /&gt;
# If you&#039;re using Cemu, or previously used BCML, it&#039;s much easier to set up.&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there.&lt;br /&gt;
# It merges map changes from the DLC files into the base game, so you can install many mods that only have DLC map files even if you don&#039;t have the DLC.&lt;br /&gt;
# It doesn&#039;t do unnecessary things, part 1. When you install a mod, all it does is install it. It will only combine it with other mods when you tell it to combine them.&lt;br /&gt;
# It doesn&#039;t do unnecessary things, part 2. When you merge/combine mods, it only recombines those files from the mods you&#039;ve changed since your last combo.&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file.&lt;br /&gt;
# It makes mods more compatible than before, part 1. It merges more file types.&lt;br /&gt;
# It makes mods more compatible than before, part 2. It fixes merging for several file types that BCML had errors with.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size. (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu. (The hope is to also add support for NSP and XCI files with the Switch version, but those still can&#039;t be read yet)&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash.&lt;br /&gt;
# When something goes wrong, it gives the list of things it was doing in a way that is mostly readable by a human, instead of just dumping a bunch of code on you.&lt;br /&gt;
# If English isn&#039;t your native language, it (probably) has localization for your language, so that you can understand its UI better.&lt;br /&gt;
This list is not exhaustive, but it&#039;s long enough that the question is probably sufficiently answered.&lt;br /&gt;
&lt;br /&gt;
==== But I found a bunch of tutorials for BCML! ====&lt;br /&gt;
Not a question. Also, that&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to install and set up.&lt;br /&gt;
&lt;br /&gt;
=== Dump-Related Questions ===&lt;br /&gt;
&lt;br /&gt;
==== Do I really need a game dump? ====&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
==== Do I REAAAAAALLY need a game dump??? ====&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
==== Why do I need a game dump? ====&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
==== Where is my game dump? ====&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
==== But I really don&#039;t know where my game dump is! ====&lt;br /&gt;
Not a question. But it shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
=== General UKMM Questions ===&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s the difference between merge/Apply and Deploy? ====&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
==== Why don&#039;t my mods show up in my emulator after deploying? ====&lt;br /&gt;
Make sure you&#039;re using the most up to date version. Go back up to [[Help:Tools/UKMM#Install|the installation section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where UKMM deploys to.&lt;br /&gt;
&lt;br /&gt;
==== Why aren&#039;t all BNPs compatible? ====&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
==== Why can&#039;t UKMM detect my dump paths for consoles? ====&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
==== Why can&#039;t UKMM detect my dump paths for Yuzu/Ryujinx? ====&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
==== Why is UKMM so hard to use? ====&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
==== UKMM&#039;s UI sucks! It makes me want to kill my mother! ====&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
==== Why did you write this program in Rust? Rust is the product of Lovecraftian madmen! ====&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;br /&gt;
&lt;br /&gt;
=== Error-Related Questions ===&lt;br /&gt;
&lt;br /&gt;
==== Why is it failing to install BNPs? ====&lt;br /&gt;
What you&#039;re seeing is the least-specific thing. It&#039;s the equivalent of UKMM saying &amp;quot;something went wrong.&amp;quot; In order to find out what actually &#039;&#039;caused&#039;&#039; it, you&#039;ll need to expand the details by clicking on the little arrow next to the word Details.&lt;br /&gt;
&lt;br /&gt;
==== Why can&#039;t it find files in my dumps? ====&lt;br /&gt;
Your dump paths may be set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly. Notably, on Wii U: Base Game and Update paths should end in &amp;lt;code&amp;gt;/content&amp;lt;/code&amp;gt; and DLC path should end in &amp;lt;code&amp;gt;/content/0010&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve checked both of these things and made sure they&#039;re correct, then it&#039;s possible that the mod has corrupted files in it, which caused UKMM to write down that they exist, but was unable to open them to see what it needed to do with them. There isn&#039;t much that can be done about this: if a file is corrupted in a way that UKMM wants to read it, but can&#039;t, then the game won&#039;t be able to read it either. The mod will need to be fixed. (List of known mods this applies to: Hyrule Rebalance v8. There may be others)&lt;br /&gt;
&lt;br /&gt;
==== What does &amp;quot;game flag missing key&amp;quot; mean? ====&lt;br /&gt;
The mod was made wrong.&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;game flag&amp;quot; is something the game uses to store data when you leave, for example either walking away in-game or turning off the game entirely. If a game flag is missing something, it won&#039;t work properly.&lt;br /&gt;
&lt;br /&gt;
==== Why does it say &amp;quot;no platform for update&amp;quot;? ====&lt;br /&gt;
It can&#039;t detect what operating system you&#039;re using, in order to determine which version of the executable to download. Support for this feature is ongoing. You can just download the new version manually, from the link above in the [[#Prebuilt_program]] section.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11954</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11954"/>
		<updated>2026-02-13T05:30:27Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Why use UKMM? */ Add the thing about forwarding map file changes. Dunno why. Nobody reads this freakin section.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==Why Use a Mod Manager?==&lt;br /&gt;
BotW contains about 17,000 archives in its standard form. When those archives are fully and completely decompressed and extracted, the game contains roughly 200,000 files. Most of those 200,000 files contain dozens, even hundreds, of parameters.&lt;br /&gt;
&lt;br /&gt;
If a mod edits just one of those parameters, in one of those files, in one of those archives, then, without a mod manager, that mod will override every other mod that you have that contains that archive. Given that an archive may contain an average of several thousand parameters, you can see how often mods will conflict.&lt;br /&gt;
&lt;br /&gt;
This isn’t even taking into account a special file that BotW has, called the RSTB. The RSTB contains data on almost every one of those 200,000 files, and so almost every mod needs to edit the RSTB. Most mods rely on a mod manager to edit the RSTB, so even if you don’t want to install more than one mod, the odds are still good that the mod you’re installing is assuming you’ll use a mod manager to make it work.&lt;br /&gt;
&lt;br /&gt;
And to top it all off, even if the one mod you want to use includes its own RSTB? That RSTB was probably made automatically, using an outdated tool that generates bad edits for the RSTB. And nobody has ever fixed that tool, because UKMM contains a much more accurate tool for it, that everyone is using anyway.&lt;br /&gt;
&lt;br /&gt;
BotW is not like other games. Manually installing mods is not a simple process for it, 99% of the time. You &#039;&#039;need&#039;&#039; a mod manager.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# If you&#039;re using Cemu, or previously used BCML, it&#039;s much easier to set up&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It merges map changes from the DLC files into the base game, so you can install many mods that only have DLC map files even if you don&#039;t have the DLC&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains Cemu.exe. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go [[Help:Dumping_games|dump]] your game and come back. [[Help:Dumping_games|Help:Dumping_games]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Base with Update Folder (Switch)&lt;br /&gt;
|Where you store your Base with Update Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;01007EF00011E000&amp;lt;/code&amp;gt; folder in your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011E000/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. NOTE: DO NOT END THIS PATH WITH &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;, IT WILL NOT WORK. END THE PATH WITH &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;!&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;01007EF00011F001&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011F001/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. The &amp;lt;code&amp;gt;01007EF00011F002&amp;lt;/code&amp;gt; dump is not needed.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Check it if you are using Cemu. Do not check it if you are not using Cemu.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|Emulator Executable (optional)&lt;br /&gt;
|The command to use to run open your emulator when using the Open Emulator button&lt;br /&gt;
|A shell command for running your emulator. On Windows, this requires quotes around it at all times. On other OSes, it requires quotes around it if there are spaces in the path. As a shell command, it supports switches, e.g. &amp;quot;C:\path\to\Cemu.exe&amp;quot; -g &amp;quot;C:\path\to\botw\U-King.rpx&amp;quot; will open Cemu and skip the game selection menu, running the game immediately.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs will not install with UKMM, due to how they were made. If you find one, please contact Ginger.&lt;br /&gt;
* Certain mods distributed as BNPs that add lots of the same thing very close to each other on the map may be missing some of those things. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===Why does it say it can&#039;t find files in my dumps?===&lt;br /&gt;
Your dump paths are probably set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
===Why don&#039;t my mods show up in my emulator after deploying?===&lt;br /&gt;
Make sure you&#039;re using the most up to date version. Go back up to [[Help:Tools/UKMM#Install|the installation section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where you deploy to.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why can&#039;t UKMM detect my dump paths for consoles/Yuzu/Ryujinx?===&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
===Why does UKMM say &amp;quot;no platform for update&amp;quot;?===&lt;br /&gt;
It can&#039;t detect what operating system you&#039;re using, in order to determine which version of the executable to download. Support for this feature is ongoing. You can just download the new version manually, from the link above in the [[#Prebuilt_program]] section.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11948</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11948"/>
		<updated>2026-01-18T08:59:34Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Manual Setup */ Change switch base folder description, emulator executable command description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==Why Use a Mod Manager?==&lt;br /&gt;
BotW contains about 17,000 archives in its standard form. When those archives are fully and completely decompressed and extracted, the game contains roughly 200,000 files. Most of those 200,000 files contain dozens, even hundreds, of parameters.&lt;br /&gt;
&lt;br /&gt;
If a mod edits just one of those parameters, in one of those files, in one of those archives, then, without a mod manager, that mod will override every other mod that you have that contains that archive. Given that an archive may contain an average of several thousand parameters, you can see how often mods will conflict.&lt;br /&gt;
&lt;br /&gt;
This isn’t even taking into account a special file that BotW has, called the RSTB. The RSTB contains data on almost every one of those 200,000 files, and so almost every mod needs to edit the RSTB. Most mods rely on a mod manager to edit the RSTB, so even if you don’t want to install more than one mod, the odds are still good that the mod you’re installing is assuming you’ll use a mod manager to make it work.&lt;br /&gt;
&lt;br /&gt;
And to top it all off, even if the one mod you want to use includes its own RSTB? That RSTB was probably made automatically, using an outdated tool that generates bad edits for the RSTB. And nobody has ever fixed that tool, because UKMM contains a much more accurate tool for it, that everyone is using anyway.&lt;br /&gt;
&lt;br /&gt;
BotW is not like other games. Manually installing mods is not a simple process for it, 99% of the time. You &#039;&#039;need&#039;&#039; a mod manager.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# If you&#039;re using Cemu, or previously used BCML, it&#039;s much easier to set up&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains Cemu.exe. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go [[Help:Dumping_games|dump]] your game and come back. [[Help:Dumping_games|Help:Dumping_games]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Base with Update Folder (Switch)&lt;br /&gt;
|Where you store your Base with Update Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;01007EF00011E000&amp;lt;/code&amp;gt; folder in your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011E000/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. NOTE: DO NOT END THIS PATH WITH &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;, IT WILL NOT WORK. END THE PATH WITH &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;!&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;01007EF00011F001&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011F001/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. The &amp;lt;code&amp;gt;01007EF00011F002&amp;lt;/code&amp;gt; dump is not needed.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Check it if you are using Cemu. Do not check it if you are not using Cemu.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|Emulator Executable (optional)&lt;br /&gt;
|The command to use to run open your emulator when using the Open Emulator button&lt;br /&gt;
|A shell command for running your emulator. On Windows, this requires quotes around it at all times. On other OSes, it requires quotes around it if there are spaces in the path. As a shell command, it supports switches, e.g. &amp;quot;C:\path\to\Cemu.exe&amp;quot; -g &amp;quot;C:\path\to\botw\U-King.rpx&amp;quot; will open Cemu and skip the game selection menu, running the game immediately.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs will not install with UKMM, due to how they were made. If you find one, please contact Ginger.&lt;br /&gt;
* Certain mods distributed as BNPs that add lots of the same thing very close to each other on the map may be missing some of those things. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===Why does it say it can&#039;t find files in my dumps?===&lt;br /&gt;
Your dump paths are probably set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
===Why don&#039;t my mods show up in my emulator after deploying?===&lt;br /&gt;
Make sure you&#039;re using the most up to date version. Go back up to [[Help:Tools/UKMM#Install|the installation section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where you deploy to.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why can&#039;t UKMM detect my dump paths for consoles/Yuzu/Ryujinx?===&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
===Why does UKMM say &amp;quot;no platform for update&amp;quot;?===&lt;br /&gt;
It can&#039;t detect what operating system you&#039;re using, in order to determine which version of the executable to download. Support for this feature is ongoing. You can just download the new version manually, from the link above in the [[#Prebuilt_program]] section.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Replacing_textures&amp;diff=11919</id>
		<title>Help:Replacing textures</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Replacing_textures&amp;diff=11919"/>
		<updated>2025-06-22T19:35:05Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Troubleshooting */ Added 2 additional questions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When replacing textures, the process is fairly similar on both Wii U/Cemu and Switch. The main difference is the presence of Tex1 and Tex2 which are combined as a single Tex file on the switch.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* [[Help:Tools/Switch Toolbox|Switch Toolbox]]&lt;br /&gt;
&lt;br /&gt;
== Replacing The Textures ==&lt;br /&gt;
&lt;br /&gt;
# Open Switch Toolbox and find the texture you&#039;re looking for. Use [https://github.com/MrCheeze/botw-tools/blob/master/botw_names.json IDs List] to find the bfres name.&lt;br /&gt;
# Drag the Tex1 (or Tex if Switch) into Switch Toolbox. These can mostly be found in &amp;lt;code&amp;gt;content/Model&amp;lt;/code&amp;gt;, though some are in &amp;lt;code&amp;gt;content/Pack/TitleBG.pack//Model&amp;lt;/code&amp;gt;. If Wii U, make sure the Tex2 is in the same directory as the Tex1 (so that Switch Toolbox can load/save its contents properly)&lt;br /&gt;
# Click the + icon next to the file, and then the one next to the textures folder.&lt;br /&gt;
# Find the texture you&#039;re looking to replace and right-click, replace. Please note when replacing textures sometimes sRGB won&#039;t be automatically selected. If it&#039;s an albedo (_Alb), then it will glow in-game without sRGB.&lt;br /&gt;
# Save the file and say Yes to yaz0-compression if it asks. If you&#039;re on Wii U, it will ask where to save the Tex2: save it in the same spot the Tex2 would belong for that model (probably in the same place as the Tex1) and yaz0-compress it as well.&lt;br /&gt;
# If the file size increased it&#039;s recommended that you [[Help:Tools/BCML| install with BCML]] to handle metadata files.&lt;br /&gt;
&lt;br /&gt;
Congratulations! You replaced the texture! If you&#039;re on CEMU, create a graphics pack and try it out, otherwise follow the normal steps for mods on Switch / Wii U to see it in action.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Patchwork/color-splotchy textures ===&lt;br /&gt;
# Make sure your texture formats match the originals that you&#039;re replacing. With the texture selected, the format is listed on the right side. It&#039;ll be something like &amp;lt;code&amp;gt;T_BC1_SRGB&amp;lt;/code&amp;gt;&lt;br /&gt;
# Make sure your mipmaps were generated correctly. If toolbox throws an error when you try to use the Mip Level selector above the texture preview, or it claims there are not X mip levels (where the size of the longer side of your texture is 2^X, for example 256 is 2^8 so a 256x256 texture should have 8 mip levels) then the mipmaps were not generated correctly. If you imported a PNG, delete it from the bfres, save, close toolbox, open toolbox, and try reimporting it again. If you imported a DDS, then it likely didn&#039;t have any mip levels stored in it, and you would need to export the file from your texture editor with mipmaps baked in.&lt;br /&gt;
&lt;br /&gt;
=== Red texture ===&lt;br /&gt;
The game cannot find the texture it expects with the name it expects. Make sure your texture has the same name as the texture you replaced. If it is the same name, see Patchwork/color-splotchy textures.&lt;br /&gt;
&lt;br /&gt;
=== Game crashing ===&lt;br /&gt;
The game cannot gracefully handle too many resources loaded at once, so too many large textures will cause the game to be unable to allocate memory for a resource, return a null pointer, and crash. Only replace textures with new textures of the same size or smaller unless the loss of detail is unacceptable.&lt;br /&gt;
&lt;br /&gt;
=== Textures Looking Blocky/Not Like What You Imported ===&lt;br /&gt;
If you import something with a swizzle pattern other than 0, then Toolbox will properly import and sort the blocks according to the pattern, but will then save the file and not write the swizzle pattern out. It will instead log everything as having swizzle pattern 0, and when loading the textures, their blocks will be put together in the wrong configuration.&lt;br /&gt;
&lt;br /&gt;
The current workaround, if you experience this, is to reimport the correct-looking texture and choose swizzle pattern 0 on import.&lt;br /&gt;
&lt;br /&gt;
=== Toolbox Crashes When Opening Textures From A Tex2 File ===&lt;br /&gt;
Tex2s only contain mipmaps, not full textures. Toolbox doesn&#039;t get enough info when trying to open the Tex2 directly, and just crashes. To edit mipmaps, you need to open the Tex1 while the Tex2 is in the same folder. Then, you can replace the full-size textures and Toolbox will also import the mipmaps (if DDS) or generate them for you (if PNG or another type without mipmaps).&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11913</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11913"/>
		<updated>2025-05-11T22:07:26Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Why use UKMM? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==Why Use a Mod Manager?==&lt;br /&gt;
BotW contains about 17,000 archives in its standard form. When those archives are fully and completely decompressed and extracted, the game contains roughly 200,000 files. Most of those 200,000 files contain dozens, even hundreds, of parameters.&lt;br /&gt;
&lt;br /&gt;
If a mod edits just one of those parameters, in one of those files, in one of those archives, then, without a mod manager, that mod will override every other mod that you have that contains that archive. Given that an archive may contain an average of several thousand parameters, you can see how often mods will conflict.&lt;br /&gt;
&lt;br /&gt;
This isn’t even taking into account a special file that BotW has, called the RSTB. The RSTB contains data on almost every one of those 200,000 files, and so almost every mod needs to edit the RSTB. Most mods rely on a mod manager to edit the RSTB, so even if you don’t want to install more than one mod, the odds are still good that the mod you’re installing is assuming you’ll use a mod manager to make it work.&lt;br /&gt;
&lt;br /&gt;
And to top it all off, even if the one mod you want to use includes its own RSTB? That RSTB was probably made automatically, using an outdated tool that generates bad edits for the RSTB. And nobody has ever fixed that tool, because UKMM contains a much more accurate tool for it, that everyone is using anyway.&lt;br /&gt;
&lt;br /&gt;
BotW is not like other games. Manually installing mods is not a simple process for it, 99% of the time. You &#039;&#039;need&#039;&#039; a mod manager.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# If you&#039;re using Cemu, or previously used BCML, it&#039;s much easier to set up&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains Cemu.exe. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go [[Help:Dumping_games|dump]] your game and come back. [[Help:Dumping_games|Help:Dumping_games]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Base with Update Folder (Switch)&lt;br /&gt;
|Where you store your Base with Update Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt; inside , inside the &amp;lt;code&amp;gt;01007EF00011E800&amp;lt;/code&amp;gt; folder in your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011E800/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. NOTE: DO NOT END THIS PATH WITH &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;, IT WILL NOT WORK. END THE PATH WITH &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;!&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;01007EF00011F001&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011F001/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. The &amp;lt;code&amp;gt;01007EF00011F002&amp;lt;/code&amp;gt; dump is not needed.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Check it if you are using Cemu. Do not check it if you are not using Cemu.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|Emulator Executable (optional)&lt;br /&gt;
|The command to use to run open your emulator when using the Open Emulator button&lt;br /&gt;
|The path to your emulator executable&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs will not install with UKMM, due to how they were made. If you find one, please contact Ginger.&lt;br /&gt;
* Certain mods distributed as BNPs that add lots of the same thing very close to each other on the map may be missing some of those things. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===Why does it say it can&#039;t find files in my dumps?===&lt;br /&gt;
Your dump paths are probably set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
===Why don&#039;t my mods show up in my emulator after deploying?===&lt;br /&gt;
Make sure you&#039;re using the most up to date version. Go back up to [[Help:Tools/UKMM#Install|the installation section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where you deploy to.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why can&#039;t UKMM detect my dump paths for consoles/Yuzu/Ryujinx?===&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
===Why does UKMM say &amp;quot;no platform for update&amp;quot;?===&lt;br /&gt;
It can&#039;t detect what operating system you&#039;re using, in order to determine which version of the executable to download. Support for this feature is ongoing. You can just download the new version manually, from the link above in the [[#Prebuilt_program]] section.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11911</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11911"/>
		<updated>2025-05-01T20:10:58Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Why Use a Mod Manager? */Added “Why Use a Mod Manager?” Section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==Why Use a Mod Manager?==&lt;br /&gt;
BotW contains about 17,000 archives in its standard form. When those archives are fully and completely decompressed and extracted, the game contains roughly 200,000 files. Most of those 200,000 files contain dozens, even hundreds, of parameters.&lt;br /&gt;
&lt;br /&gt;
If a mod edits just one of those parameters, in one of those files, in one of those archives, then, without a mod manager, that mod will override every other mod that you have that contains that archive. Given that an archive may contain an average of several thousand parameters, you can see how often mods will conflict.&lt;br /&gt;
&lt;br /&gt;
This isn’t even taking into account a special file that BotW has, called the RSTB. The RSTB contains data on almost every one of those 200,000 files, and so almost every mod needs to edit the RSTB. Most mods rely on a mod manager to edit the RSTB, so even if you don’t want to install more than one mod, the odds are still good that the mod you’re installing is assuming you’ll use a mod manager to make it work.&lt;br /&gt;
&lt;br /&gt;
And to top it all off, even if the one mod you want to use includes its own RSTB? That RSTB was probably made automatically, using an outdated tool that generates bad edits for the RSTB. And nobody has ever fixed that tool, because UKMM contains a much more accurate tool for it, that everyone is using anyway.&lt;br /&gt;
&lt;br /&gt;
BotW is not like other games. Manually installing mods is not a simple process for it, 99% of the time. You &#039;&#039;need&#039;&#039; a mod manager.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains Cemu.exe. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go [[Help:Dumping_games|dump]] your game and come back. [[Help:Dumping_games|Help:Dumping_games]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Base with Update Folder (Switch)&lt;br /&gt;
|Where you store your Base with Update Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt; inside , inside the &amp;lt;code&amp;gt;01007EF00011E800&amp;lt;/code&amp;gt; folder in your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011E800/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. NOTE: DO NOT END THIS PATH WITH &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;, IT WILL NOT WORK. END THE PATH WITH &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;!&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;01007EF00011F001&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011F001/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. The &amp;lt;code&amp;gt;01007EF00011F002&amp;lt;/code&amp;gt; dump is not needed.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Check it if you are using Cemu. Do not check it if you are not using Cemu.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|Emulator Executable (optional)&lt;br /&gt;
|The command to use to run open your emulator when using the Open Emulator button&lt;br /&gt;
|The path to your emulator executable&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs will not install with UKMM, due to how they were made. If you find one, please contact Ginger.&lt;br /&gt;
* Certain mods distributed as BNPs that add lots of the same thing very close to each other on the map may be missing some of those things. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===Why does it say it can&#039;t find files in my dumps?===&lt;br /&gt;
Your dump paths are probably set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
===Why don&#039;t my mods show up in my emulator after deploying?===&lt;br /&gt;
Make sure you&#039;re using the most up to date version. Go back up to [[Help:Tools/UKMM#Install|the installation section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where you deploy to.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why can&#039;t UKMM detect my dump paths for consoles/Yuzu/Ryujinx?===&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
===Why does UKMM say &amp;quot;no platform for update&amp;quot;?===&lt;br /&gt;
It can&#039;t detect what operating system you&#039;re using, in order to determine which version of the executable to download. Support for this feature is ongoing. You can just download the new version manually, from the link above in the [[#Prebuilt_program]] section.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11909</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11909"/>
		<updated>2025-03-23T16:37:05Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Known Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains Cemu.exe. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go [[Help:Dumping_games|dump]] your game and come back. [[Help:Dumping_games|Help:Dumping_games]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Base with Update Folder (Switch)&lt;br /&gt;
|Where you store your Base with Update Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt; inside , inside the &amp;lt;code&amp;gt;01007EF00011E800&amp;lt;/code&amp;gt; folder in your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011E800/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. NOTE: DO NOT END THIS PATH WITH &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;, IT WILL NOT WORK. END THE PATH WITH &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;!&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;01007EF00011F001&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/01007EF00011F001/romfs&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. The &amp;lt;code&amp;gt;01007EF00011F002&amp;lt;/code&amp;gt; dump is not needed.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Check it if you are using Cemu. Do not check it if you are not using Cemu.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|Emulator Executable (optional)&lt;br /&gt;
|The command to use to run open your emulator when using the Open Emulator button&lt;br /&gt;
|The path to your emulator executable&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs will not install with UKMM, due to how they were made. If you find one, please contact Ginger.&lt;br /&gt;
* Certain mods distributed as BNPs that add lots of the same thing very close to each other on the map may be missing some of those things. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===Why does it say it can&#039;t find files in my dumps?===&lt;br /&gt;
Your dump paths are probably set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
===Why don&#039;t my mods show up in my emulator after deploying?===&lt;br /&gt;
Make sure you&#039;re using the most up to date version. Go back up to [[Help:Tools/UKMM#Install|the installation section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where you deploy to.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why can&#039;t UKMM detect my dump paths for consoles/Yuzu/Ryujinx?===&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
===Why does UKMM say &amp;quot;no platform for update&amp;quot;?===&lt;br /&gt;
It can&#039;t detect what operating system you&#039;re using, in order to determine which version of the executable to download. Support for this feature is ongoing. You can just download the new version manually, from the link above in the [[#Prebuilt_program]] section.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/botw_flag_util&amp;diff=11907</id>
		<title>Help:Tools/botw flag util</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/botw_flag_util&amp;diff=11907"/>
		<updated>2025-02-24T05:28:10Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Setup */ Fix bcml python version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tools]]&lt;br /&gt;
{{Tool infobox&lt;br /&gt;
| name = BotW Flag Util&lt;br /&gt;
| authors = Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/botw_flag_util&lt;br /&gt;
| license = AGLPv3+&lt;br /&gt;
| written_in = Python&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Breath of the Wild Flag Utilities is a flag manager and generator for BotW mods. It can be used to automatically create [[Bgdata|gamedata flags]] for many of BotW&#039;s use cases, including actors, shrines, and enemy/item revival flags.&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
#Ensure you have a &#039;&#039;&#039;64 bit version&#039;&#039;&#039; of Python 3.7+ installed and added to your PATH.&lt;br /&gt;
#Install the &amp;lt;code&amp;gt;botw_flag_util&amp;lt;/code&amp;gt; pip package. {{Install py package help|package=botw_flag_util}}&lt;br /&gt;
#If you have not already used [[Help:Tools/BCML|bcml]], it will be installed with botw_flag_util. Run it once and set the paths to your dumps. &#039;&#039;&#039;Note that bcml will not work with Python 3.9+&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
===Generating flags===&lt;br /&gt;
&amp;lt;code&amp;gt;botw_flag_util generate [path_to_mod_root] [-a] [-r # #] [-b] [-v]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;path_to_mod_root&amp;lt;/code&amp;gt; - The path to the root folder of your mod, which contains the content folder. Required.&lt;br /&gt;
*&amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; - Generate actor flags.&lt;br /&gt;
*&amp;lt;code&amp;gt;-r # #&amp;lt;/code&amp;gt; - Generate revival flags. The first number is the ResetType for MainField actors. The second is the ResetType for CDungeon (shrine) actors. If one of them is set to -1, it will skip flag generation for that field type.&lt;br /&gt;
*&amp;lt;code&amp;gt;-b&amp;lt;/code&amp;gt; - Use big-endian mode. For generating flags for Wii U.&lt;br /&gt;
*&amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt; - Use verbose mode. Will give more verbose after-action report.&lt;br /&gt;
&lt;br /&gt;
===Finding flags===&lt;br /&gt;
&amp;lt;code&amp;gt;botw_flag_util find [path_to_mod_root] [search_name] [-b] [-v]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;path_to_mod_root&amp;lt;/code&amp;gt; - The path to the root folder of your mod, which contains the content folder. Required.&lt;br /&gt;
*&amp;lt;code&amp;gt;search_name&amp;lt;/code&amp;gt; - The name of the flag to search for. Will find all flags whose DataName contains search_name. For example, MainField_Npc_HiddenKorok will find all Korok NPC flags.&lt;br /&gt;
*&amp;lt;code&amp;gt;-b&amp;lt;/code&amp;gt; - Use big-endian mode. For deleting flags for Wii U.&lt;br /&gt;
*&amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt; - Use verbose mode. Will give more verbose after-action report.&lt;br /&gt;
&lt;br /&gt;
Once the search has been completed, you will be told how many game data and save data flags were found that matched search_name. You will then be given three choices:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt; - View more detailed information on the flags found: their full names and their types, and then prompt for another choice.&lt;br /&gt;
*&amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt; - Delete all the flags that were found by this search, and then return to the command line.&lt;br /&gt;
*&amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; - Return to the command line.&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
*botw_flag_util uses [[Help:Tools/BCML|bcml]] to find the locations of some of your vanilla files. If you haven&#039;t installed/run bcml and set your paths in it, botw_flag_util will not be able to find some of the files it needs.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Replacing_models&amp;diff=11906</id>
		<title>Help:Replacing models</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Replacing_models&amp;diff=11906"/>
		<updated>2025-02-12T13:03:59Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Why does the lighting on my model look weird? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Model replacement is the process of changing the shape of an entity (weapon, character, etc) to a custom shape, either created by you or by someone else. Examples of model replacements include the [https://gamebanana.com/skins/163434 Zelda] and [https://gamebanana.com/skins/163132 Linkle] replacement mods.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes you either have a model already, or will be editing one of the in-game models. It also assumes you will be replacing an in-game model, not making a new one. Pictures dealing with modeling programs are taken in 3ds Max, but similar options should be available in your program of choice.&lt;br /&gt;
&lt;br /&gt;
==Required Tools==&lt;br /&gt;
Model replacement in Breath of the Wild requires a set of tools. These tools will vary somewhat, based upon your personal preference, but the tools below are currently the most effective for properly modding the game.&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/KillzXGaming/Switch-Toolbox/releases Switch Toolbox] (Yes, even if you are using WiiU or Cemu)&lt;br /&gt;
*A 3D modeling program of your choice (common choices are 3ds Max and Blender)&lt;br /&gt;
*(optional) If you are using 3ds Max, the [https://github.com/Aaaboy97/BotW-Tools/tree/master/CSV%20Exporting CSV export] script&lt;br /&gt;
*(optional) If you are using 3ds Max, the [https://www.vg-resource.com/thread-29836.html BFRES importer] MaxScript may be helpful. (expand the &amp;quot;Wii U &amp;amp; Nintendo Switch - BFRES importer (originally by ItsEasyActually)&amp;quot; to find it)&lt;br /&gt;
*(optional) [https://github.com/Shadsterwolf/BotWUnpacker/releases BotWUnpacker]&lt;br /&gt;
&lt;br /&gt;
==Tutorial==&lt;br /&gt;
&lt;br /&gt;
===Obtaining a Rig===&lt;br /&gt;
[[File:ModelReplacement_obtainRig.png|alt=Obtaining a rig|thumb|The red box shows what to click to extract a model.]]&lt;br /&gt;
[[File:ModelReplacement VertexBuffers.png|thumb|Select the object (left) and read the vertex buffers (right)]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Export a model from the SBFRES you want to use, using Switch Toolbox. Take note of the skin count and the vertex buffers and formats.&amp;lt;/blockquote&amp;gt;A &amp;quot;rig&amp;quot; or &amp;quot;skeleton&amp;quot; is a set of &amp;quot;bones&amp;quot; that animations use. Every model is made up of several pieces: objects (which tells the game how to make the model in 3D), materials (which tell the game what the model should look like), and the rig (which tells the game how the model moves during animations). If you were to consider a door, the objects would be the rectangle for the main door and sphere of the knob, the materials would be the wood grain and brown coloring of the door and silver reflective surface of the knob, and the rig would be what tells the game that the knob rotates and the door swings inward.&lt;br /&gt;
In order to obtain a rig, you should find the SBFRES archive for the model you wish to use a rig from. Most models are contained in the game files in the content\Model folder. Once you&#039;ve chosen your SBFRES, copy it to a safe place away from the game files, so you don&#039;t accidentally modify any of the original game&#039;s files.&lt;br /&gt;
&lt;br /&gt;
Open Switch Toolbox, select File -&amp;gt; Open from the toolbar, and select your SBFRES. On the left side, expand the only available option, and then expand Models. Right-click on the model you need and select Export. If there are multiple options, pick as many as you need. For example, if you are replacing an entire armor set, you would export all three models, but if you were only replacing one piece of the armor, you would export just that piece. Export it as a DAE file. Switch Toolbox will ask if you want to export textures. It&#039;s not needed, but it doesn&#039;t hurt.&lt;br /&gt;
&lt;br /&gt;
Next, expand the model(s) you are exporting, expand the Objects folder, and select each object in turn. On the right side of Switch Toolbox, you&#039;ll see a collapsed section labeled Vertex Buffer. Expand it. In this section, you will see several important things: the skin count, the vertex buffers, and the buffer formats. It&#039;s not important to know what all of these things mean if you don&#039;t wish, but take note of what they are for every object that you&#039;ll be replacing. Screenshots or a text file work well for saving this info. It will be important later.&lt;br /&gt;
&lt;br /&gt;
Note: if you wish to export all the models in an SBFRES quickly, right-click on the Models folder instead and select Export All.&lt;br /&gt;
&lt;br /&gt;
===Import the Original to Your Workspace===&lt;br /&gt;
[[File:ModelReplacement_importModel.png|alt=Import the Original Model|thumb|Click on 1 to expand the menu, then click on 2 (or highlight 2 and click on 3) to import. Blender&#039;s layout for this step is almost identical.]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Import the DAE into a shared workspace with your model, so that the object list has your objects, the original objects, and the original skeleton.&amp;lt;/blockquote&amp;gt;Open your 3D modeling program of choice, and bring your replacement model into the workspace. Then, go to File -&amp;gt; Import, and import the DAE model you extracted from the SBFRES. If you exported multiple models, only import the model you are currently working with. For example, if you exported an entire armor, you should only import the legs (or whatever part you are working with). Once you have finished the &amp;quot;Export Your Rigged Model&amp;quot; step, return here to repeat the process for other models.&lt;br /&gt;
You may see errors when you import with 3ds Max - this is normal, you can ignore them. Blender suppresses these errors, so you won&#039;t see them.&lt;br /&gt;
Combine the original model&#039;s objects, roughly along the lines of how your objects are. For example, if the original model has separate fingers, hands, and arms, and your model has separate hands and arms, combine the fingers with the hands. Or if your model is only a single object, combine all the original model&#039;s objects into a single object. In 3ds Max, you can do this with Command Panel -&amp;gt; Modify -&amp;gt; Edit Geometry -&amp;gt; Attach, and selecting the object to attach the selected object to. In Blender, you can do this by selecting multiple objects with Ctrl+click in Object mode, then right-clicking and selecting Join.&lt;br /&gt;
&lt;br /&gt;
In your object list, you will now see the original model&#039;s objects along with your objects. You will also see the original model&#039;s skeleton, which is important to have and you should generally not touch it.&lt;br /&gt;
&lt;br /&gt;
===Align Your Model With the Original===&lt;br /&gt;
[[File:ModelReplacement_alignModel.png|alt=Align Your Model|thumb|Select your model (1), select the mesh (2), select the type of thing to modify (3), and select how to modify it (4).]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Get your objects to match up with the original ones, as close as possible. Anything delicate is important: feet, hands/fingers, waists, necklines, handles of weapons, etc.&amp;lt;/blockquote&amp;gt;In all likelihood, your model will differ greatly from the original you just imported. Using the Move, Rotate, and Scale tools, make sure your model lines up with the original&#039;s - the closer the better.&lt;br /&gt;
There are also plenty of tools in 3ds Max&#039;s Edit Poly/Mesh modes, or Blender&#039;s Sculpt mode for helping move the model around. In 3ds Max, you can right click on the Edit Mesh/Poly to convert between them. In Blender, one of Sculpt mode&#039;s tools is the Pose tool, which is quite good for moving limbs into place if you&#039;re modifying an armor.&lt;br /&gt;
&lt;br /&gt;
Rename your objects to something close to the original&#039;s, so that you can easily figure out which of your objects corresponds to which original object. This will help both during this step and later, during the &amp;quot;Replace the Original Model with Yours&amp;quot; step. For example, if you have an object for hair, it&#039;s encouraged to name it &amp;lt;code&amp;gt;Hair_###__Mt_Hair_###&amp;lt;/code&amp;gt;, where ### is the number of the armor you might be working with, and Mt_Hair_### is the name of the material you want to use with it. Including the name of the material in the object is helpful so that when you need to reassign materials in Switch Toolbox (which you may have to do often, depending on how much trouble you have) you will be able to tell, straight away, which object needs which material.&lt;br /&gt;
&lt;br /&gt;
Note: If you need help with this step, there are many great tutorials on YouTube.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Apply the Rig from the Original to Your Model===&lt;br /&gt;
[[File:ModelReplacement_copyRig.png|alt=Copy the Rig|thumb|Select the original object (1), right click on the Skin modifier and copy it (2), select your replacement object (3), and right click in the modifier area and paste the Skin modifier there (4).]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Apply the rig from the original object(s) to your object(s). Set maximum limit for bones to affect vertices to the object&#039;s skin count.&amp;lt;/blockquote&amp;gt;For 3ds Max: Select the original object&#039;s Skin modifier in the modifier list, then copy it. Select your object, then paste the rig onto it. If all has gone well, you&#039;re done with this step. 3ds Max uses one or more of a series of algorithms to map the rig of one object onto the rig of another object automatically, and it&#039;s generally pretty good about it.&lt;br /&gt;
For Blender:&lt;br /&gt;
* Click and drag the object on top of the original object&#039;s Armature (the one with the orange upside-down triangle next to it), while holding shift and alt. This will assign the object to that armature, instead. Then, select the object in Object mode, go to the Modifiers tab (which looks like a diagonal wrench, in the bottom right area), and in the box that says Armature at the top, click on the box next to Object, and select the armature of the original model. If there is no box that says Armature at the top, click on Add Modifier and select Armature. There is now a box that says Armature at the top.&lt;br /&gt;
* Select your object in Object mode. In the bottom right, click on the upside-down green triangle. If there is anything in the Vertex Groups tab, delete it all with the - button. Then, Ctrl+click the original object that most closely matches its location. Go into Weight Paint mode, click on the Weights button in the top left, and select Transfer Weights. In the bottom left, expand the new small tab there, if it is not already. For Vertex Mapping, select Nearest Face Interpolated. For Source Layers Selection, select By Name. For Destination Layers Matching, select All Layers.&lt;br /&gt;
&lt;br /&gt;
After applying the rig onto an object, set the limit for the number of bones to affect each vertex to 4. In 3ds Max, you can do this by scrolling the modifier rollout on the right side down to the bottom, expanding Advanced Parameters, and setting the number in the Bone Affect Limit box. In Blender, you can do it with the Limit Total option, found right under the Transfer Weights option described earlier. Other programs will have different ways of setting this limit.&lt;br /&gt;
&lt;br /&gt;
You also want your weights to be normalized. In 3ds Max, the weights are normalized by default. In Blender, in Weight Paint mode, you need to click on the screwdriver-and-wrench icon in the middle of the right side, expand Options, and select Auto Normalize.&lt;br /&gt;
&lt;br /&gt;
If you get the model into the game and the animations deform the model in strange ways, you&#039;ll need to come back and manually adjust the rigging, which is a very time-consuming process, documented in a number of excellent tutorials on YouTube.&lt;br /&gt;
&lt;br /&gt;
===Delete the Original Model&#039;s Objects===&lt;br /&gt;
[[File:ModelReplacement_deleteObjects.png|alt=Delete Original Objects|thumb|The workspace has been cleared of the painted object, leaving only the custom, unpainted one and the skeleton.]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Delete the original model&#039;s objects and your model&#039;s skeleton (if any), leaving just your objects and the original skeleton. Rename your objects.&amp;lt;/blockquote&amp;gt;Delete all the objects from your workspace that you don&#039;t want to be imported to the game. This includes any secondary objects not part of your final model, your model&#039;s skeleton (but not the original model&#039;s skeleton), and the original model&#039;s objects.&lt;br /&gt;
It&#039;s also a good idea to rename the your objects to names that describe what they are for. In Blender, renaming the upside-down orange triangle doesn&#039;t do it, you have to expand that and rename the upside-down green triangle. Though this isn&#039;t strictly necessary to get the replacement model to work, it can really help smooth things out later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Export the Model from Your Modeling Program===&lt;br /&gt;
[[File:ModelReplacement_exportModel.png|alt=Export Model|thumb|212x212px|Select the File menu (1), then click on export (2), or hover over it and click on Export (3).]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Fairly simple, export your model. DAE is probably best.&amp;lt;/blockquote&amp;gt;Using File -&amp;gt; Export, export your model as whatever type you wish. Switch Toolbox, as of writing this guide, only handles DAE properly. It has an option for FBX as well, and as it receives updates regularly, FBX or other formats may become properly handled at any time.&lt;br /&gt;
It also has an option for importing via CSV (which is not a model type) that is explained in the optional step, below. CSV is only recommended if your exporter cannot export DAE or FBX for whatever reason.&lt;br /&gt;
&lt;br /&gt;
Switch Toolbox now handles DAE&#039;s from Blender just fine, so there is no longer any need to use Autodesk FBX Converter, as was originally described here.&lt;br /&gt;
&lt;br /&gt;
====Export the Model using CsvExportRewrite====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: In 3ds Max, use MAXScript -&amp;gt; Run Script... to run CsvExportRewrite.ms and save the model data as a CSV file.&amp;lt;/blockquote&amp;gt;Some people - the author included - have trouble with 3ds Max crashing when it tries to export models. For us, there is a MAXScript that exports the model as text, which Switch Toolbox can also use. In the toolbar use the MAXScript menu and select Run Script. Select the CsvExportRewrite script. A small box will pop up with a list of all the objects in your workspace. It has options to &amp;quot;Copy UVs&amp;quot; and &amp;quot;Explicit Normals&amp;quot; for each object. Copy UVs is disabled by default, and Explicit Normals is enabled by default. These settings should suffice, though if you end up with strange textures in game, try re-exporting with Copy UVs checked.&lt;br /&gt;
When you select export, 3ds Max will stop responding for a little bit as it exports, then it will respond again. When it responds, check the csv file it created. If it is empty, go through all of your objects, collapse or delete any modifiers that aren&#039;t the Skin modifier, Edit Normals modifier, or Editable Mesh, then select the Skin modifier for every object so that the modifiers background is dark grey (not blue), and then export again to a different file. It will fail again if you try to export to an empty file it has previously created, unless you&#039;ve restarted 3ds Max since it created that file.&lt;br /&gt;
&lt;br /&gt;
===Import the Model Using Switch Toolbox===&lt;br /&gt;
[[File:ModelReplacement_importOptions.png|thumb|The list of import options Switch Toolbox displays.]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Replace the original model in Switch Toolbox.&amp;lt;/blockquote&amp;gt;If you didn&#039;t leave Switch Toolbox open, reopen it now, and reopen the SBFRES you got the original model from. Right-click on the model that you want to replace, select Replace, and select the file you exported from your modeling program.&lt;br /&gt;
A dialog window of import options will appear. The picture to the right contains settings for most armors, but you should generally match the formats you copied down in the first step of this tutorial.&lt;br /&gt;
&lt;br /&gt;
Red box: Generally leave these unchecked. If your textures look all funky, try reimporting with Flip UVs. If you import and the model is not looking at you, but is instead face-down, reimport with Rotate -90 degrees checked. If you import and the model is face-up, use Rotate 90 degrees. If you modified the skeleton, use Import Bones. (It&#039;s possible that skeletons exported from Blender may not import correctly if you don&#039;t export as FBX.)&lt;br /&gt;
&lt;br /&gt;
Orange box: Keep Original Skin Count will be disabled by default in order to help avoid model stretching issues, but if your weights did not change then you can check this box to help solve some issues. Always check Map Original Materials. If you are importing from DAE or FBX, then you should check Use Original Attributes and Use Original Attribute Formats. If you checked those boxes and changed the names of the objects from the original model, pay special attention to the teal box instructions below. If you check those two boxes, then you can ignore the green and yellow box instructions below.&lt;br /&gt;
&lt;br /&gt;
Green box: Check all the boxes corresponding to the buffer types that you took note of in the first step of this process, &amp;quot;Obtaining a Rig.&amp;quot; If any object has one of those buffer types, check the box.&lt;br /&gt;
&lt;br /&gt;
Yellow box: Select formats from the dropdowns that correspond to the formats you took note of in the first step of this process, &amp;quot;Obtaining a Rig.&amp;quot; If the UVs format was Format_16_16_UNorm and the dropdown does not have that option, Format_16_16_SNorm is fine.&lt;br /&gt;
&lt;br /&gt;
Teal box: If you are importing from DAE or FBX, then the left side will have the objects you are importing, and the right side will have the objects you are replacing. This will let you know whether or not Map Original Materials from the orange box will actually do anything, and is one of the reasons why you renamed your objects to the same name as the originals. If you did not rename your objects to the same names as the originals in your modeling program, then you may rename them to the original object names here by selecting them on the left side and correcting their names in the text line above these two boxes. This will save you the trouble of having to set the attributes and formats manually (the green and yellow boxes). The CSV import option does not support Map Original Materials at the time of writing, though it may do so in the future.&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve set all your import options, switch back to the Model Settings tab and hit Save.&lt;br /&gt;
&lt;br /&gt;
===Verify the Model Looks Good and Save===&lt;br /&gt;
[[File:ModelReplacement_verifyStage.png|alt=Verify|thumb|Verify that the model looks good in the viewer (2) and that the right material (3) is assigned to each object (1)]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Check the model in the viewer for dropped weights, and check the material assignments. If it all looks good, save it.&amp;lt;/blockquote&amp;gt;Double check the model in the viewer to ensure that it has imported correctly. If it is face-down on its front or face-up on its back, reimport it. If pieces of the model are stretching to the &amp;quot;origin&amp;quot; (the center of the viewer space), then some vertices weren&#039;t properly weighted and you need to find them and re-rig them. If the model is wavy, where it should be straight, then you probably imported with 16 bit or 32 bit weights, and need to reimport with Blend Weights format Format_8_8_8_8_UNorm.&lt;br /&gt;
Also verify that the material assigned is the correct one. If you imported from a CSV file, these will almost certainly be wrong. This step is another reason we renamed the objects to the original names: the original names have the material name at the end, so there isn&#039;t confusion as to what object owns what material. A single material may be assigned to multiple objects, but any object may only have a single material.&lt;br /&gt;
&lt;br /&gt;
Lastly, verify that the vertex buffers list for each object contains all of the same entries as the original object did (you should still have the list from the beginning of this process). If any buffers are missing, reimport the model and check the boxes for those buffers. If they are still missing, your model format does not contain that information (OBJ) and you should use a different format. If there are buffers that the original object did not have, select them and click Remove, then click Yes when it asks if you&#039;re sure.&lt;br /&gt;
&lt;br /&gt;
Once all that is done, you&#039;re all set. Hit save. Your SBFRES now has your custom model and is ready to be loaded into the game!&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
====Does this work for TitleBG.pack models?====&lt;br /&gt;
Yes. There&#039;s no functional difference between resident actors (those in TitleBG.pack, denoted by their presence in Bootup.pack&#039;s ResidentActors.sbyml file) and normal actors, save that resident actors are always loaded in memory, so they can be displayed without loading delays. This also means that if you&#039;ve done something wrong, you&#039;ll notice the crashing at the title menu or first loading screen, instead of during gameplay.&lt;br /&gt;
&lt;br /&gt;
====Why does the lighting on my model look weird?====&lt;br /&gt;
If you obtained your model - that is, the modded one that you are adding to the game - by extracting it using Switch toolbox as a DAE, then Blender versions from before Sept 24 2022 will fail to read vertex normals on import, and instead generate new ones. This is almost always undesirable, and will result in weird, splotchy shadows on your model. To fix this, update Blender.&lt;br /&gt;
&lt;br /&gt;
If you really don&#039;t want to update Blender for whatever reason, use the latest AutoDesk FBX Converter (available [https://aps.autodesk.com/developer/overview/fbx-converter-archives here], yes the latest version is from 2013) to convert the DAE to FBX first.&lt;br /&gt;
&lt;br /&gt;
Not that it&#039;s not necessary to convert the rig model, because you delete it. You only need to convert the final model that you will be importing.&lt;br /&gt;
&lt;br /&gt;
Note that once the vertex normals are messed up, converting to FBX won&#039;t fix anything. You have to convert it before the first time you transfer the working model from Switch Toolbox to your modeling program.&lt;br /&gt;
&lt;br /&gt;
===Object Placement Issues===&lt;br /&gt;
&lt;br /&gt;
====My eyes are in the model&#039;s head, but they aren&#039;t in game!====&lt;br /&gt;
Splitting the eyes into two different objects may help to fix this. If not...&lt;br /&gt;
&lt;br /&gt;
Eyes are very strange. Link&#039;s original eyes are placed correctly, but exporting them will cause them to be placed incorrectly in any 3d modeling program, and reimporting unchanged eyes will cause them to appear in a different place. However, the game will load them as if they were in the correct place. It is generally not advised to move the eyes unless absolutely necessary, as there is no single way to make them work consistently.&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11904</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11904"/>
		<updated>2025-01-30T08:54:49Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Five Flags Flags */ Section title typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are listed in [[#Font Color]]. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
===== Font =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Font&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Hylian&lt;br /&gt;
|Stylized Hylian font (Unofficially known as Hylian Serif)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|Normal&lt;br /&gt;
|Standard text font&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Font Color =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Color (h)&lt;br /&gt;
!Color&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0xff0a1aff&lt;br /&gt;
|Red&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0x64ff00ff&lt;br /&gt;
|Green&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0x00ffffff&lt;br /&gt;
|Cyan&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0xffffff40&lt;br /&gt;
|Grey (partly transparent white)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0x007fffff&lt;br /&gt;
|Azure&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0xff4800ff&lt;br /&gt;
|Orange&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0x7f794aff&lt;br /&gt;
|Dull Gold&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|&lt;br /&gt;
|Reset to white or black, depending on background&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|Three Choices based on flags (See [[#Choices Based on Flags]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|Five Flags (See [[#Five Flags]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|One Choice (See [[#Choices]])&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceOne, there is no choice at 0x02. Instead, the default option is always 1 and is located at 0x02, and the cancel option is always 0xCD and is located at 0x03.&lt;br /&gt;
&lt;br /&gt;
===== Choices Based on Flags =====&lt;br /&gt;
{{expand section}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Unofficial Name&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|ParamSize&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Number of bytes in the parameter, starting after the ParamSize&lt;br /&gt;
|-&lt;br /&gt;
|VarType&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Type of the variable. Seems to use the same variable types as the Variable tag.{{check}} All flags are of the same type.&lt;br /&gt;
|-&lt;br /&gt;
|FlagOne&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|ChoiceOne&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|FlagTwo&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|ChoiceTwo&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|FlagThree&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|ChoiceThree&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Third choice&lt;br /&gt;
|-&lt;br /&gt;
|DefaultIndex&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Index of the choices that the cursor starts on&lt;br /&gt;
|-&lt;br /&gt;
|CancelIndex&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Index of the choice that is chosen if the player presses B while selecting an option&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Five Flags =====&lt;br /&gt;
{{expand section}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Unofficial Name&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|ParamSize&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Number of bytes in the parameter, starting after the ParamSize&lt;br /&gt;
|-&lt;br /&gt;
|FlagIndexOne&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|u16 that seems to correspond to some kind of index. There is always one number each of 0-4, for each flag {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagOne&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|FlagIndexTwo&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|u16 that seems to correspond to some kind of index. There is always one number each of 0-4, for each flag {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagTwo&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|FlagIndexThree&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|u16 that seems to correspond to some kind of index. There is always one number each of 0-4, for each flag {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagThree&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|FlagIndexFour&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|u16 that seems to correspond to some kind of index. There is always one number each of 0-4, for each flag {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagFour&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|FlagValueOne&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Unknown{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagValueTwo&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Unknown{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagValueThree&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Unknown{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagValueFour&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Unknown{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|UnknownArray&lt;br /&gt;
|?&lt;br /&gt;
|byte[]&lt;br /&gt;
|Unknown purpose. Length is the remainder of the ParamSize that has not already been taken up by previous values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
In BotW, the AppTag type is repurposed as a way to display the current value of a data flag. The Extra Data is the name of the data flag.&lt;br /&gt;
&lt;br /&gt;
It is currently unknown what differentiates the various types that retrieve from the same data flag file.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Variable Type&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|5&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|11&lt;br /&gt;
|String64 (defined in &amp;lt;code&amp;gt;string64_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|13&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|14&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|15&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|17&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|18&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|19&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|Sound (Extra data is 2 byte values of unknown purpose)&lt;br /&gt;
|}&lt;br /&gt;
It is currently unknown if there are other group 3 tags&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|Sound (Extra data is 2 byte values: 1 of unknown purpose, and 0xCD)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|2&lt;br /&gt;
|Animation (Extra data is a C style string denoting the name of an animation for the controlling actor to play)&lt;br /&gt;
|}&lt;br /&gt;
It is currently unknown if there are other group 4 tags&lt;br /&gt;
&lt;br /&gt;
==== Group 5 Tags ====&lt;br /&gt;
Group 5 is used a more general form of the Delay tag. Exact durations have not been tested.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Pause Duration&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|Short&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Long&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|Longer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11903</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11903"/>
		<updated>2025-01-30T08:54:23Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* EUI Tags */ Add flag choices and five flags&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are listed in [[#Font Color]]. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
===== Font =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Font&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Hylian&lt;br /&gt;
|Stylized Hylian font (Unofficially known as Hylian Serif)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|Normal&lt;br /&gt;
|Standard text font&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Font Color =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Color (h)&lt;br /&gt;
!Color&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0xff0a1aff&lt;br /&gt;
|Red&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0x64ff00ff&lt;br /&gt;
|Green&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0x00ffffff&lt;br /&gt;
|Cyan&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0xffffff40&lt;br /&gt;
|Grey (partly transparent white)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0x007fffff&lt;br /&gt;
|Azure&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0xff4800ff&lt;br /&gt;
|Orange&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0x7f794aff&lt;br /&gt;
|Dull Gold&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|&lt;br /&gt;
|Reset to white or black, depending on background&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|Three Choices based on flags (See [[#Choices Based on Flags]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|Five Flags (See [[#Five Flags]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|One Choice (See [[#Choices]])&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceOne, there is no choice at 0x02. Instead, the default option is always 1 and is located at 0x02, and the cancel option is always 0xCD and is located at 0x03.&lt;br /&gt;
&lt;br /&gt;
===== Choices Based on Flags =====&lt;br /&gt;
{{expand section}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Unofficial Name&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|ParamSize&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Number of bytes in the parameter, starting after the ParamSize&lt;br /&gt;
|-&lt;br /&gt;
|VarType&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Type of the variable. Seems to use the same variable types as the Variable tag.{{check}} All flags are of the same type.&lt;br /&gt;
|-&lt;br /&gt;
|FlagOne&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|ChoiceOne&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|FlagTwo&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|ChoiceTwo&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|FlagThree&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|ChoiceThree&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Third choice&lt;br /&gt;
|-&lt;br /&gt;
|DefaultIndex&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Index of the choices that the cursor starts on&lt;br /&gt;
|-&lt;br /&gt;
|CancelIndex&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Index of the choice that is chosen if the player presses B while selecting an option&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Five Flags Flags =====&lt;br /&gt;
{{expand section}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Unofficial Name&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|ParamSize&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Number of bytes in the parameter, starting after the ParamSize&lt;br /&gt;
|-&lt;br /&gt;
|FlagIndexOne&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|u16 that seems to correspond to some kind of index. There is always one number each of 0-4, for each flag {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagOne&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|FlagIndexTwo&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|u16 that seems to correspond to some kind of index. There is always one number each of 0-4, for each flag {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagTwo&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|FlagIndexThree&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|u16 that seems to correspond to some kind of index. There is always one number each of 0-4, for each flag {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagThree&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|FlagIndexFour&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|u16 that seems to correspond to some kind of index. There is always one number each of 0-4, for each flag {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagFour&lt;br /&gt;
|?&lt;br /&gt;
|C-String&lt;br /&gt;
|u16 number of bytes in string, UTF-16 representation of the string (letters equal to number of bytes / 2)&lt;br /&gt;
|-&lt;br /&gt;
|FlagValueOne&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Unknown{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagValueTwo&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Unknown{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagValueThree&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Unknown{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|FlagValueFour&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned short&lt;br /&gt;
|Unknown{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|UnknownArray&lt;br /&gt;
|?&lt;br /&gt;
|byte[]&lt;br /&gt;
|Unknown purpose. Length is the remainder of the ParamSize that has not already been taken up by previous values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
In BotW, the AppTag type is repurposed as a way to display the current value of a data flag. The Extra Data is the name of the data flag.&lt;br /&gt;
&lt;br /&gt;
It is currently unknown what differentiates the various types that retrieve from the same data flag file.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Variable Type&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|5&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|11&lt;br /&gt;
|String64 (defined in &amp;lt;code&amp;gt;string64_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|13&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|14&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|15&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|17&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|18&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|19&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|Sound (Extra data is 2 byte values of unknown purpose)&lt;br /&gt;
|}&lt;br /&gt;
It is currently unknown if there are other group 3 tags&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|Sound (Extra data is 2 byte values: 1 of unknown purpose, and 0xCD)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|2&lt;br /&gt;
|Animation (Extra data is a C style string denoting the name of an animation for the controlling actor to play)&lt;br /&gt;
|}&lt;br /&gt;
It is currently unknown if there are other group 4 tags&lt;br /&gt;
&lt;br /&gt;
==== Group 5 Tags ====&lt;br /&gt;
Group 5 is used a more general form of the Delay tag. Exact durations have not been tested.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Pause Duration&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|Short&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Long&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|Longer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11899</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11899"/>
		<updated>2025-01-17T04:41:58Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* FAQ */ Remove old question and add extra reason for mods not showing up&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains Cemu.exe. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go [[Help:Dumping_games|dump]] your game and come back. [[Help:Dumping_games|Help:Dumping_games]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. NOTE: DO NOT END THIS PATH WITH &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;, IT WILL NOT WORK. END THE PATH WITH &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;!&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Check it if you are using Cemu. Do not check it if you are not using Cemu.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|Emulator Executable (optional)&lt;br /&gt;
|The command to use to run open your emulator when using the Open Emulator button&lt;br /&gt;
|The path to your emulator executable&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===Why does it say it can&#039;t find files in my dumps?===&lt;br /&gt;
Your dump paths are probably set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
===Why don&#039;t my mods show up in my emulator after deploying?===&lt;br /&gt;
Make sure you&#039;re using the most up to date version. Go back up to [[Help:Tools/UKMM#Install|the installation section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where you deploy to.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why can&#039;t UKMM detect my dump paths for consoles/Yuzu/Ryujinx?===&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
===Why does UKMM say &amp;quot;no platform for update&amp;quot;?===&lt;br /&gt;
It can&#039;t detect what operating system you&#039;re using, in order to determine which version of the executable to download. Support for this feature is ongoing. You can just download the new version manually, from the link above in the [[#Prebuilt_program]] section.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11898</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11898"/>
		<updated>2025-01-17T04:37:07Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Deployment */ Rules.txt clarity&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains Cemu.exe. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go [[Help:Dumping_games|dump]] your game and come back. [[Help:Dumping_games|Help:Dumping_games]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. NOTE: DO NOT END THIS PATH WITH &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;, IT WILL NOT WORK. END THE PATH WITH &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;!&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Check it if you are using Cemu. Do not check it if you are not using Cemu.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|Emulator Executable (optional)&lt;br /&gt;
|The command to use to run open your emulator when using the Open Emulator button&lt;br /&gt;
|The path to your emulator executable&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===Why does it say it can&#039;t find files in my dumps?===&lt;br /&gt;
Your dump paths are probably set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
===Why don&#039;t my mods show up in my emulator after deploying?===&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where you deploy to.&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You can build the program on your Steam Deck using the instructions in the installation section, or use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why can&#039;t UKMM detect my dump paths for consoles/Yuzu/Ryujinx?===&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
===Why does UKMM say &amp;quot;no platform for update&amp;quot;?===&lt;br /&gt;
It can&#039;t detect what operating system you&#039;re using, in order to determine which version of the executable to download. Support for this feature is ongoing. You can just download the new version manually, from the link above in the [[#Prebuilt_program]] section.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11897</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11897"/>
		<updated>2025-01-03T07:40:19Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* FAQ */  No platform for update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains Cemu.exe. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go [[Help:Dumping_games|dump]] your game and come back. [[Help:Dumping_games|Help:Dumping_games]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. NOTE: DO NOT END THIS PATH WITH &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;, IT WILL NOT WORK. END THE PATH WITH &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;!&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|Emulator Executable (optional)&lt;br /&gt;
|The command to use to run open your emulator when using the Open Emulator button&lt;br /&gt;
|The path to your emulator executable&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===Why does it say it can&#039;t find files in my dumps?===&lt;br /&gt;
Your dump paths are probably set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
===Why don&#039;t my mods show up in my emulator after deploying?===&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where you deploy to.&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You can build the program on your Steam Deck using the instructions in the installation section, or use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why can&#039;t UKMM detect my dump paths for consoles/Yuzu/Ryujinx?===&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
===Why does UKMM say &amp;quot;no platform for update&amp;quot;?===&lt;br /&gt;
It can&#039;t detect what operating system you&#039;re using, in order to determine which version of the executable to download. Support for this feature is ongoing. You can just download the new version manually, from the link above in the [[#Prebuilt_program]] section.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11895</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11895"/>
		<updated>2025-01-01T22:33:10Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* System Tags */ Add punctuation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are listed in [[#Font Color]]. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
===== Font =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Font&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Hylian&lt;br /&gt;
|Stylized Hylian font (Unofficially known as Hylian Serif)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|Normal&lt;br /&gt;
|Standard text font&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Font Color =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Color (h)&lt;br /&gt;
!Color&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0xff0a1aff&lt;br /&gt;
|Red&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0x64ff00ff&lt;br /&gt;
|Green&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0x00ffffff&lt;br /&gt;
|Cyan&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0xffffff40&lt;br /&gt;
|Grey (partly transparent white)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0x007fffff&lt;br /&gt;
|Azure&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0xff4800ff&lt;br /&gt;
|Orange&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0x7f794aff&lt;br /&gt;
|Dull Gold&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|&lt;br /&gt;
|Reset to white or black, depending on background&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|One Choice (See [[#Choices]])&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceOne, there is no choice at 0x02. Instead, the default option is always 1 and is located at 0x02, and the cancel option is always 0xCD and is located at 0x03.&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
In BotW, the AppTag type is repurposed as a way to display the current value of a data flag. The Extra Data is the name of the data flag.&lt;br /&gt;
&lt;br /&gt;
It is currently unknown what differentiates the various types that retrieve from the same data flag file.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Variable Type&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|5&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|11&lt;br /&gt;
|String64 (defined in &amp;lt;code&amp;gt;string64_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|13&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|14&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|15&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|17&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|18&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|19&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|Sound (Extra data is 2 byte values of unknown purpose)&lt;br /&gt;
|}&lt;br /&gt;
It is currently unknown if there are other group 3 tags&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|Sound (Extra data is 2 byte values: 1 of unknown purpose, and 0xCD)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|2&lt;br /&gt;
|Animation (Extra data is a C style string denoting the name of an animation for the controlling actor to play)&lt;br /&gt;
|}&lt;br /&gt;
It is currently unknown if there are other group 4 tags&lt;br /&gt;
&lt;br /&gt;
==== Group 5 Tags ====&lt;br /&gt;
Group 5 is used a more general form of the Delay tag. Exact durations have not been tested.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Pause Duration&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|Short&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Long&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|Longer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11894</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11894"/>
		<updated>2025-01-01T22:32:44Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* System Tags */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are listed in [[#Font Color]] These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
===== Font =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Font&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Hylian&lt;br /&gt;
|Stylized Hylian font (Unofficially known as Hylian Serif)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|Normal&lt;br /&gt;
|Standard text font&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Font Color =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Color (h)&lt;br /&gt;
!Color&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0xff0a1aff&lt;br /&gt;
|Red&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0x64ff00ff&lt;br /&gt;
|Green&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0x00ffffff&lt;br /&gt;
|Cyan&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0xffffff40&lt;br /&gt;
|Grey (partly transparent white)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0x007fffff&lt;br /&gt;
|Azure&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0xff4800ff&lt;br /&gt;
|Orange&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0x7f794aff&lt;br /&gt;
|Dull Gold&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|&lt;br /&gt;
|Reset to white or black, depending on background&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|One Choice (See [[#Choices]])&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceOne, there is no choice at 0x02. Instead, the default option is always 1 and is located at 0x02, and the cancel option is always 0xCD and is located at 0x03.&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
In BotW, the AppTag type is repurposed as a way to display the current value of a data flag. The Extra Data is the name of the data flag.&lt;br /&gt;
&lt;br /&gt;
It is currently unknown what differentiates the various types that retrieve from the same data flag file.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Variable Type&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|5&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|11&lt;br /&gt;
|String64 (defined in &amp;lt;code&amp;gt;string64_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|13&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|14&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|15&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|17&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|18&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|19&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|Sound (Extra data is 2 byte values of unknown purpose)&lt;br /&gt;
|}&lt;br /&gt;
It is currently unknown if there are other group 3 tags&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|Sound (Extra data is 2 byte values: 1 of unknown purpose, and 0xCD)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|2&lt;br /&gt;
|Animation (Extra data is a C style string denoting the name of an animation for the controlling actor to play)&lt;br /&gt;
|}&lt;br /&gt;
It is currently unknown if there are other group 4 tags&lt;br /&gt;
&lt;br /&gt;
==== Group 5 Tags ====&lt;br /&gt;
Group 5 is used a more general form of the Delay tag. Exact durations have not been tested.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Pause Duration&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|Short&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Long&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|Longer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11893</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11893"/>
		<updated>2025-01-01T22:29:53Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Group 4 Tags */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are red, green, blue, gray, and orange in that order. 0xffff indicates a reset to the default white text color. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
===== Font =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Font&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Hylian&lt;br /&gt;
|Stylized Hylian font (Unofficially known as Hylian Serif)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|Normal&lt;br /&gt;
|Standard text font&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Font Color =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Color (h)&lt;br /&gt;
!Color&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0xff0a1aff&lt;br /&gt;
|Red&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0x64ff00ff&lt;br /&gt;
|Green&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0x00ffffff&lt;br /&gt;
|Cyan&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0xffffff40&lt;br /&gt;
|Grey (partly transparent white)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0x007fffff&lt;br /&gt;
|Azure&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0xff4800ff&lt;br /&gt;
|Orange&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0x7f794aff&lt;br /&gt;
|Dull Gold&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|&lt;br /&gt;
|Reset to white or black, depending on background&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|One Choice (See [[#Choices]])&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceOne, there is no choice at 0x02. Instead, the default option is always 1 and is located at 0x02, and the cancel option is always 0xCD and is located at 0x03.&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
In BotW, the AppTag type is repurposed as a way to display the current value of a data flag. The Extra Data is the name of the data flag.&lt;br /&gt;
&lt;br /&gt;
It is currently unknown what differentiates the various types that retrieve from the same data flag file.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Variable Type&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|5&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|11&lt;br /&gt;
|String64 (defined in &amp;lt;code&amp;gt;string64_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|13&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|14&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|15&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|17&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|18&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|19&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|Sound (Extra data is 2 byte values of unknown purpose)&lt;br /&gt;
|}&lt;br /&gt;
It is currently unknown if there are other group 3 tags&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|Sound (Extra data is 2 byte values: 1 of unknown purpose, and 0xCD)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|2&lt;br /&gt;
|Animation (Extra data is a C style string denoting the name of an animation for the controlling actor to play)&lt;br /&gt;
|}&lt;br /&gt;
It is currently unknown if there are other group 4 tags&lt;br /&gt;
&lt;br /&gt;
==== Group 5 Tags ====&lt;br /&gt;
Group 5 is used a more general form of the Delay tag. Exact durations have not been tested.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Pause Duration&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|Short&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Long&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|Longer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11892</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11892"/>
		<updated>2025-01-01T22:27:12Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Group 3 Tags */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are red, green, blue, gray, and orange in that order. 0xffff indicates a reset to the default white text color. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
===== Font =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Font&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Hylian&lt;br /&gt;
|Stylized Hylian font (Unofficially known as Hylian Serif)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|Normal&lt;br /&gt;
|Standard text font&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Font Color =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Color (h)&lt;br /&gt;
!Color&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0xff0a1aff&lt;br /&gt;
|Red&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0x64ff00ff&lt;br /&gt;
|Green&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0x00ffffff&lt;br /&gt;
|Cyan&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0xffffff40&lt;br /&gt;
|Grey (partly transparent white)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0x007fffff&lt;br /&gt;
|Azure&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0xff4800ff&lt;br /&gt;
|Orange&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0x7f794aff&lt;br /&gt;
|Dull Gold&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|&lt;br /&gt;
|Reset to white or black, depending on background&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|One Choice (See [[#Choices]])&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceOne, there is no choice at 0x02. Instead, the default option is always 1 and is located at 0x02, and the cancel option is always 0xCD and is located at 0x03.&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
In BotW, the AppTag type is repurposed as a way to display the current value of a data flag. The Extra Data is the name of the data flag.&lt;br /&gt;
&lt;br /&gt;
It is currently unknown what differentiates the various types that retrieve from the same data flag file.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Variable Type&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|5&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|11&lt;br /&gt;
|String64 (defined in &amp;lt;code&amp;gt;string64_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|13&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|14&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|15&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|17&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|18&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|19&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|Sound (Extra data is 2 byte values of unknown purpose)&lt;br /&gt;
|}&lt;br /&gt;
It is currently unknown if there are other group 3 tags&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 5 Tags ====&lt;br /&gt;
Group 5 is used a more general form of the Delay tag. Exact durations have not been tested.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Pause Duration&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|Short&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Long&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|Longer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11891</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11891"/>
		<updated>2025-01-01T22:20:58Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* System Tags */ Font and Color&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are red, green, blue, gray, and orange in that order. 0xffff indicates a reset to the default white text color. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
===== Font =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Font&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Hylian&lt;br /&gt;
|Stylized Hylian font (Unofficially known as Hylian Serif)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|Normal&lt;br /&gt;
|Standard text font&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Font Color =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Color (h)&lt;br /&gt;
!Color&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0xff0a1aff&lt;br /&gt;
|Red&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0x64ff00ff&lt;br /&gt;
|Green&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0x00ffffff&lt;br /&gt;
|Cyan&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0xffffff40&lt;br /&gt;
|Grey (partly transparent white)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0x007fffff&lt;br /&gt;
|Azure&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0xff4800ff&lt;br /&gt;
|Orange&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0x7f794aff&lt;br /&gt;
|Dull Gold&lt;br /&gt;
|-&lt;br /&gt;
|65535&lt;br /&gt;
|&lt;br /&gt;
|Reset to white or black, depending on background&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|One Choice (See [[#Choices]])&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceOne, there is no choice at 0x02. Instead, the default option is always 1 and is located at 0x02, and the cancel option is always 0xCD and is located at 0x03.&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
In BotW, the AppTag type is repurposed as a way to display the current value of a data flag. The Extra Data is the name of the data flag.&lt;br /&gt;
&lt;br /&gt;
It is currently unknown what differentiates the various types that retrieve from the same data flag file.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Variable Type&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|5&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|11&lt;br /&gt;
|String64 (defined in &amp;lt;code&amp;gt;string64_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|13&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|14&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|15&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|17&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|18&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|19&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 5 Tags ====&lt;br /&gt;
Group 5 is used a more general form of the Delay tag. Exact durations have not been tested.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Pause Duration&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|Short&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Long&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|Longer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11890</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11890"/>
		<updated>2025-01-01T22:04:28Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* EUI Tags */ Add ChoiceOne&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
| Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are red, green, blue, gray, and orange in that order. 0xffff indicates a reset to the default white text color. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|One Choice (See [[#Choices]])&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceOne, there is no choice at 0x02. Instead, the default option is always 1 and is located at 0x02, and the cancel option is always 0xCD and is located at 0x03.&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
In BotW, the AppTag type is repurposed as a way to display the current value of a data flag. The Extra Data is the name of the data flag.&lt;br /&gt;
&lt;br /&gt;
It is currently unknown what differentiates the various types that retrieve from the same data flag file.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Variable Type&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|5&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|11&lt;br /&gt;
|String64 (defined in &amp;lt;code&amp;gt;string64_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|13&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|14&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|15&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|17&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|18&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|19&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 5 Tags ====&lt;br /&gt;
Group 5 is used a more general form of the Delay tag. Exact durations have not been tested.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Pause Duration&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|Short&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Long&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|Longer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11889</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11889"/>
		<updated>2025-01-01T21:59:25Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* App Tags */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
| Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are red, green, blue, gray, and orange in that order. 0xffff indicates a reset to the default white text color. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
In BotW, the AppTag type is repurposed as a way to display the current value of a data flag. The Extra Data is the name of the data flag.&lt;br /&gt;
&lt;br /&gt;
It is currently unknown what differentiates the various types that retrieve from the same data flag file.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Variable Type&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|5&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|11&lt;br /&gt;
|String64 (defined in &amp;lt;code&amp;gt;string64_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|13&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|14&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|15&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|17&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|18&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|19&lt;br /&gt;
|Integer (defined in &amp;lt;code&amp;gt;s32_data_%d.bgdata&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 5 Tags ====&lt;br /&gt;
Group 5 is used a more general form of the Delay tag. Exact durations have not been tested.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Pause Duration&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|Short&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Long&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|Longer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11888</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11888"/>
		<updated>2025-01-01T21:57:48Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Group 5 */ Group name uniformity&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
| Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are red, green, blue, gray, and orange in that order. 0xffff indicates a reset to the default white text color. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 5 Tags ====&lt;br /&gt;
Group 5 is used a more general form of the Delay tag. Exact durations have not been tested.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Pause Duration&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|Short&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Long&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|Longer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11887</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11887"/>
		<updated>2025-01-01T21:40:33Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Group 5 */ Proofreading is a skill I need to master&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
| Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are red, green, blue, gray, and orange in that order. 0xffff indicates a reset to the default white text color. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 5 ====&lt;br /&gt;
Group 5 is used a more general form of the Delay tag. Exact durations have not been tested.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Pause Duration&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|Short&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Long&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|Longer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11886</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11886"/>
		<updated>2025-01-01T21:40:11Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Grammar Tags */ Group 5 fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
| Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are red, green, blue, gray, and orange in that order. 0xffff indicates a reset to the default white text color. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 5 ====&lt;br /&gt;
Group 5 used a more general form of the Delay tag. Exact durations have not been tested.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Pause Duration&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|Short&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Long&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|Longer&lt;br /&gt;
|}&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11885</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11885"/>
		<updated>2025-01-01T21:23:14Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Grammar Tags */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
| Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are red, green, blue, gray, and orange in that order. 0xffff indicates a reset to the default white text color. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
In BotW, the GrammarTag type is repurposed to be used a more general form of the Delay tag. Exact durations have not been tested.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Pause Duration&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|Short&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Long&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|Longer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11884</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11884"/>
		<updated>2025-01-01T21:14:21Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* EUI Tags */ Choices&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
| Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are red, green, blue, gray, and orange in that order. 0xffff indicates a reset to the default white text color. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices (See [[#Choices]])&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
===== Choices =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|First choice&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|Unsigned Short&lt;br /&gt;
|Second choice&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Default option (option highlighted when the choices are first shown)&lt;br /&gt;
|-&lt;br /&gt;
|0x05&lt;br /&gt;
|1&lt;br /&gt;
|Byte&lt;br /&gt;
|Cancel option (option chosen when the B button is pressed)&lt;br /&gt;
|}&lt;br /&gt;
Each choice type is a group of choices, whose text corresponds to the string conversion of the label indices in the current file. For example, if the label is &amp;lt;code&amp;gt;00 04&amp;lt;/code&amp;gt; then the displayed choice will be the text corresponding to the &amp;lt;code&amp;gt;&amp;quot;0004&amp;quot;&amp;lt;/code&amp;gt; key.&lt;br /&gt;
&lt;br /&gt;
For ChoiceThree there is an additional choice at 0x04, and the default and cancel options are at 0x06 and 0x07, respectively.&lt;br /&gt;
&lt;br /&gt;
For ChoiceFour there are additional choices at 0x04 and 0x06, and the default and cancel options are at 0x08 and 0x09, respectively.&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11883</id>
		<title>Msbt</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Msbt&amp;diff=11883"/>
		<updated>2025-01-01T21:00:10Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Tags */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Message Studio Binary Text&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; is a binary file format belonging to LibMessageStudio (LMS). These files store the game&#039;s text and can contain &amp;quot;tags&amp;quot; that define how said text is displayed/interacted with.&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File Layout ==&lt;br /&gt;
&amp;lt;code&amp;gt;MSBT&amp;lt;/code&amp;gt; files are composed of a file header followed by blocks (each with their own block header). All sections/blocks must be aligned to 0x10 (16) bytes. In BotW, the file layout is as follows:&lt;br /&gt;
* Header&lt;br /&gt;
* Labels Block&lt;br /&gt;
* Attributes Block&lt;br /&gt;
* Text Block&lt;br /&gt;
The list of possible blocks is as follows:&lt;br /&gt;
&lt;br /&gt;
* LBL1 (labels)&lt;br /&gt;
* TXT2 (text)&lt;br /&gt;
* ATR1 (attributes)&lt;br /&gt;
* TSY1 (style info)&lt;br /&gt;
* ATO1 (unknown)&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| char[8]&lt;br /&gt;
| msbt file signature (magic) &amp;lt;code&amp;gt;4D 73 67 53 74 64 42 6E&amp;lt;/code&amp;gt; or &amp;quot;MsgStdBn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Byte-Order Mark&lt;br /&gt;
|-&lt;br /&gt;
| 0x0a&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0c&lt;br /&gt;
| 1&lt;br /&gt;
| u8&lt;br /&gt;
| Encoding (0 = UTF8, 1 = UTF16, 2 = UTF32 - games generally only support one specific encoding) {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x0d&lt;br /&gt;
|1&lt;br /&gt;
|u8&lt;br /&gt;
|Version (3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0e&lt;br /&gt;
| 2&lt;br /&gt;
| u16&lt;br /&gt;
| Block Count {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Padding {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block Header ==&lt;br /&gt;
This header is shared across all block types. The block data follows directly after the header and is aligned to 0x10 (16) bytes. The block size does not include the size of the header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Block Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Labels Block ==&lt;br /&gt;
The labels block contains the label names for file&#039;s text. Its signature is &amp;lt;code&amp;gt;LBL1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a four-byte header specifying the number of label groups.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Group Count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Groups ===&lt;br /&gt;
Following the header is a table of label groups. Each entry in the table is eight bytes. The first four bytes specify the number of labels in the group and the second four specify the offset of the first label relative to the start of the section. The number of label groups in many games appears to be the smallest prime number larger than half the number of labels (with a max of 101 groups and a minimum of 2). In BotW, this may not always be the case.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Label Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Offset&lt;br /&gt;
|}&lt;br /&gt;
Messages are sorted into label groups by hashing the label name. A recreation of the hash function is as follows:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calc_hash(label):&lt;br /&gt;
    hash = 0&lt;br /&gt;
    for char in label:&lt;br /&gt;
        hash = hash * 0x492 + ord(char)&lt;br /&gt;
    return (hash &amp;amp; 0xFFFFFFFF) % num_label_groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Following the label groups is the array of labels. Each label consists of a u8 string length followed by a null-terminated string. At the end of the label is a u32 index specifying the index of the message that corresponds to the label in the text block.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1 &lt;br /&gt;
| u8&lt;br /&gt;
| String Length&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char[&#039;&#039;n&#039;&#039;]&lt;br /&gt;
| Label String&lt;br /&gt;
|-&lt;br /&gt;
| 0xnn&lt;br /&gt;
| 4 &lt;br /&gt;
| u32&lt;br /&gt;
| Message Text Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes Block ==&lt;br /&gt;
The attributes block stores additional, optional attributes that can be associated with messages. Its signature is &amp;lt;code&amp;gt;ATR1&amp;lt;/code&amp;gt;. The interpretation of attribute data is completely up to the game&#039;s discretion and attributes in BotW are not fully understood at this time. The attribute seem to indicate which actor should be attributed with the dialog (A good example is in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;NPC_GodVoice&amp;lt;/code&amp;gt; is referenced).&lt;br /&gt;
&lt;br /&gt;
Each attribute corresponds to the message of the same index in the text block {{check}}.&lt;br /&gt;
&lt;br /&gt;
The block begins with an eight-byte header that specifies the number of attributes and the size of a single attribute.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute Size&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of the attribute data. In many cases, this data is actually a string offset relative to the start of the section (as is the case in BotW).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Attribute String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Strings ===&lt;br /&gt;
Should the attribute data be a string offset, then the data is followed by an array of null-terminated strings encoded using the encoding specified in the file header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Text Block ==&lt;br /&gt;
The text block contains the text for messages. Its signature is &amp;lt;code&amp;gt;TXT2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The section begins with a small four-byte header specifying the number of messages in the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| Message Count&lt;br /&gt;
|}&lt;br /&gt;
Following the brief header is an array of u32 offsets to the text strings. Each offset is relative to the beginning of the section.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| u32&lt;br /&gt;
| String Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Message Strings ===&lt;br /&gt;
The strings are stored as an array of strings encoded using the encoding specified in the header. In BotW, this is means UTF16-LE on Switch and UTF16-BE on Wii U. Each string is read from its specified offset until the next string offset. The last string uses the section size specified in the block header to determine its end position.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| &#039;&#039;n&#039;&#039;&lt;br /&gt;
| char_type[]&lt;br /&gt;
| String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
{{expand section}}&lt;br /&gt;
Message strings can contain tags that alter how the message is displayed or processed. These tags are processed by &amp;lt;code&amp;gt;nn::ui2d::TagProcessorBase&amp;lt;/code&amp;gt; which in Nintendo EPD games is extended by&amp;lt;code&amp;gt;eui::TagProcessor&amp;lt;/code&amp;gt; which can then be further extended by the game to handle game-specific tags. The interpretation of tags is completely game-dependent.&lt;br /&gt;
&lt;br /&gt;
Tags are embedded directly inside of the text and begin with a brief tag header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset (h)&lt;br /&gt;
!Size&lt;br /&gt;
!Data Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x00&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Signature (&amp;lt;code&amp;gt;00 0e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|0x02&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Group&lt;br /&gt;
|-&lt;br /&gt;
|0x04&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Tag Type&lt;br /&gt;
|-&lt;br /&gt;
|0x06&lt;br /&gt;
|2&lt;br /&gt;
|u16&lt;br /&gt;
|Extra Data Size (this value is ignored for &amp;lt;code&amp;gt;00 0f&amp;lt;/code&amp;gt; tags which have no data)&lt;br /&gt;
|-&lt;br /&gt;
|0x08&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|Extra data (size is dependent on Extra Data Size, type is dependent on Group and Type)&lt;br /&gt;
|}&lt;br /&gt;
In Nintendo EPD games, tag group 0 tags are system tags, group 1 is &amp;lt;code&amp;gt;eui&amp;lt;/code&amp;gt; tags, group 2 is app (game) specific tags, and group 201 is grammar tags. The other groups are currently unknown. In BotW, group 4 appears to be for animations and group 5 appears to be for delays.&lt;br /&gt;
&lt;br /&gt;
For example, in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt; the following data appears:&lt;br /&gt;
&amp;lt;pre&amp;gt;   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |                   &lt;br /&gt;
---|-------------------------------------------------|------------------|&lt;br /&gt;
00 | 00 57 00 68 00 69 00 63 00 68 00 20 00 70 00 61 | .W.h.i.c.h. .p.a |&lt;br /&gt;
10 | 00 72 00 74 00 20 00 6F 00 66 00 20 00 74 00 68 | .r.t. .o.f. .t.h |&lt;br /&gt;
20 | 00 65 00 20 00 54 00 72 00 69 00 61 00 6C 00 20 | .e. .T.r.i.a.l.  |&lt;br /&gt;
30 | 00 77 00 6F 00 75 00 6C 00 64 00 20 00 79 00 6F | .w.o.u.l.d. .y.o |&lt;br /&gt;
40 | 00 75 00 0A 00 6C 00 69 00 6B 00 65 00 20 00 74 | .u...l.i.k.e. .t |&lt;br /&gt;
50 | 00 6F 00 20 00 63 00 68 00 61 00 6C 00 6C 00 65 | .o. .c.h.a.l.l.e |&lt;br /&gt;
60 | 00 6E 00 67 00 65 00 3F 00 0E 00 01 00 06 00 0A | .n.g.e.?........ |&lt;br /&gt;
70 | 00 02 00 03 00 04 00 05 02 03 00 00             | ............     |&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At byte &amp;lt;code&amp;gt;0x68&amp;lt;/code&amp;gt; is the tag header followed with tag group 1 and tag type 6. 0xa is the size of the extra data with the extra data being &amp;lt;code&amp;gt;[00 02 00 03 00 04 00 05 02 03]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Not all tags functions are currently known. &lt;br /&gt;
&lt;br /&gt;
==== System Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|Ruby (extra data is a u16 display span followed by the ruby text)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| Font (extra data is a u16 font type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
|Font Size (extra data is a u16 font size)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 3&lt;br /&gt;
|Font Color (extra data is a u16 color type)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 4&lt;br /&gt;
| Page Break (no extra data) &lt;br /&gt;
|}&lt;br /&gt;
The available colors in BotW are red, green, blue, gray, and orange in that order. 0xffff indicates a reset to the default white text color. These colors are generally either hardcoded in the game&#039;s executable or defined in a separate MSBP file if present. If defined in a MSBP file, the color type instead acts as an index into the colors in the MSBP file.&lt;br /&gt;
&lt;br /&gt;
==== EUI Tags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Group&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|Delay (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Text Speed?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
|No Text Scroll?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
|Auto Advance (extra data is a u32 frame count)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|4&lt;br /&gt;
|Two Choices (extra data is an array of u16 label indices for each choice followed by a u8 selected index and u8 cancel index)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|Three Choices&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|Four Choices&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|7&lt;br /&gt;
|Picture Font (Icon) (extra data is two u8s, the second being the type)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== App Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 3 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Group 4 Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
==== Grammar Tags ====&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== Compiling the Sections ==&lt;br /&gt;
The sections are held together by the indexes in the labels table. The indexes correspond to the attributes table and the texts table. The data can be compiled using the index.&lt;br /&gt;
&lt;br /&gt;
By default the indexes in the labels table are not in order, but the text table is (and possibly the attributes table). Below is the labels table in &amp;lt;code&amp;gt;100enemy.msbt&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!String Count&lt;br /&gt;
!Offset&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 188&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 188&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 199&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 208&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 217&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 226&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 235&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 235&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 246&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 257&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 268&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 279&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 290&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 301&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
And the texts table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more..&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Cancel &lt;br /&gt;
|}&lt;br /&gt;
Using the indexes to match the labels to the attributes and texts tables, the following table can be compiled.&lt;br /&gt;
&lt;br /&gt;
The empty labels are not fully understood.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Label&lt;br /&gt;
!Index&lt;br /&gt;
!Attribute&lt;br /&gt;
!Text&lt;br /&gt;
|-&lt;br /&gt;
| talk17&lt;br /&gt;
| 0&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk18&lt;br /&gt;
| 1&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk19&lt;br /&gt;
| 2&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| Which part of the Trial would you like to challenge?&lt;br /&gt;
|-&lt;br /&gt;
| talk20&lt;br /&gt;
| 3&lt;br /&gt;
| NPC_GodVoice&lt;br /&gt;
| You cannot participate in the Trial when the Master Sword is out of energy.&lt;br /&gt;
|-&lt;br /&gt;
| talk13&lt;br /&gt;
| 4&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| That sword you have reunited with... the Master Sword...it has yet to realize its true splendor. The trial that will awaken its true power... If you wish to rise to the challenge, place the Master Sword in its pedestal.&lt;br /&gt;
|-&lt;br /&gt;
| talk14&lt;br /&gt;
| 5&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| The Master Sword you wield is now more powerful than before. If you desire still more power and wish to retry the blade&#039;s test... once again place the Master Sword in its pedestal&lt;br /&gt;
|-&lt;br /&gt;
| talk15&lt;br /&gt;
| 6&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. It would be reckless to rely only on your blade when facing Ganon. Prepare for the worst, and consider freeing the Divine Beasts before confronting your fate. Her smile... The princess&#039;s sweet smile... How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| talk16&lt;br /&gt;
| 7&lt;br /&gt;
| TwnObj_Village_Korok_DekuTree_A_01&lt;br /&gt;
| Now your body, mind, and soul are ready to wield the Master Sword at its full potential. But do not let your guard down. Just as before, if you use your sword to excess, it will run out of energy and become unusable until it recovers. That blade is more than a tool. It is your partner across time, your ally from 100 years past... Wield it with care. Her smile... The princess&#039;s sweet smile...How I would love to see it once more...&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| 8&lt;br /&gt;
|&lt;br /&gt;
| Beginning Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| 9&lt;br /&gt;
|&lt;br /&gt;
| Middle Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| Final Trials&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| 11&lt;br /&gt;
|&lt;br /&gt;
| Cancel&lt;br /&gt;
|}&lt;br /&gt;
The attribute table is still not fully understood. In this example, there are 8 attribute entries in the table, but they correctly map to the 8 blocks of dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:File extensions]]&lt;br /&gt;
[[Category:File extensions (MSBT)]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{tool table|category=Tools (MSBT)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Replacing_models&amp;diff=11878</id>
		<title>Help:Replacing models</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Replacing_models&amp;diff=11878"/>
		<updated>2024-12-21T04:12:58Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* General */ FBX converter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Model replacement is the process of changing the shape of an entity (weapon, character, etc) to a custom shape, either created by you or by someone else. Examples of model replacements include the [https://gamebanana.com/skins/163434 Zelda] and [https://gamebanana.com/skins/163132 Linkle] replacement mods.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes you either have a model already, or will be editing one of the in-game models. It also assumes you will be replacing an in-game model, not making a new one. Pictures dealing with modeling programs are taken in 3ds Max, but similar options should be available in your program of choice.&lt;br /&gt;
&lt;br /&gt;
==Required Tools==&lt;br /&gt;
Model replacement in Breath of the Wild requires a set of tools. These tools will vary somewhat, based upon your personal preference, but the tools below are currently the most effective for properly modding the game.&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/KillzXGaming/Switch-Toolbox/releases Switch Toolbox] (Yes, even if you are using WiiU or Cemu)&lt;br /&gt;
*A 3D modeling program of your choice (common choices are 3ds Max and Blender)&lt;br /&gt;
*(optional) If you are using 3ds Max, the [https://github.com/Aaaboy97/BotW-Tools/tree/master/CSV%20Exporting CSV export] script&lt;br /&gt;
*(optional) If you are using 3ds Max, the [https://www.vg-resource.com/thread-29836.html BFRES importer] MaxScript may be helpful. (expand the &amp;quot;Wii U &amp;amp; Nintendo Switch - BFRES importer (originally by ItsEasyActually)&amp;quot; to find it)&lt;br /&gt;
*(optional) [https://github.com/Shadsterwolf/BotWUnpacker/releases BotWUnpacker]&lt;br /&gt;
&lt;br /&gt;
==Tutorial==&lt;br /&gt;
&lt;br /&gt;
===Obtaining a Rig===&lt;br /&gt;
[[File:ModelReplacement_obtainRig.png|alt=Obtaining a rig|thumb|The red box shows what to click to extract a model.]]&lt;br /&gt;
[[File:ModelReplacement VertexBuffers.png|thumb|Select the object (left) and read the vertex buffers (right)]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Export a model from the SBFRES you want to use, using Switch Toolbox. Take note of the skin count and the vertex buffers and formats.&amp;lt;/blockquote&amp;gt;A &amp;quot;rig&amp;quot; or &amp;quot;skeleton&amp;quot; is a set of &amp;quot;bones&amp;quot; that animations use. Every model is made up of several pieces: objects (which tells the game how to make the model in 3D), materials (which tell the game what the model should look like), and the rig (which tells the game how the model moves during animations). If you were to consider a door, the objects would be the rectangle for the main door and sphere of the knob, the materials would be the wood grain and brown coloring of the door and silver reflective surface of the knob, and the rig would be what tells the game that the knob rotates and the door swings inward.&lt;br /&gt;
In order to obtain a rig, you should find the SBFRES archive for the model you wish to use a rig from. Most models are contained in the game files in the content\Model folder. Once you&#039;ve chosen your SBFRES, copy it to a safe place away from the game files, so you don&#039;t accidentally modify any of the original game&#039;s files.&lt;br /&gt;
&lt;br /&gt;
Open Switch Toolbox, select File -&amp;gt; Open from the toolbar, and select your SBFRES. On the left side, expand the only available option, and then expand Models. Right-click on the model you need and select Export. If there are multiple options, pick as many as you need. For example, if you are replacing an entire armor set, you would export all three models, but if you were only replacing one piece of the armor, you would export just that piece. Export it as a DAE file. Switch Toolbox will ask if you want to export textures. It&#039;s not needed, but it doesn&#039;t hurt.&lt;br /&gt;
&lt;br /&gt;
Next, expand the model(s) you are exporting, expand the Objects folder, and select each object in turn. On the right side of Switch Toolbox, you&#039;ll see a collapsed section labeled Vertex Buffer. Expand it. In this section, you will see several important things: the skin count, the vertex buffers, and the buffer formats. It&#039;s not important to know what all of these things mean if you don&#039;t wish, but take note of what they are for every object that you&#039;ll be replacing. Screenshots or a text file work well for saving this info. It will be important later.&lt;br /&gt;
&lt;br /&gt;
Note: if you wish to export all the models in an SBFRES quickly, right-click on the Models folder instead and select Export All.&lt;br /&gt;
&lt;br /&gt;
===Import the Original to Your Workspace===&lt;br /&gt;
[[File:ModelReplacement_importModel.png|alt=Import the Original Model|thumb|Click on 1 to expand the menu, then click on 2 (or highlight 2 and click on 3) to import. Blender&#039;s layout for this step is almost identical.]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Import the DAE into a shared workspace with your model, so that the object list has your objects, the original objects, and the original skeleton.&amp;lt;/blockquote&amp;gt;Open your 3D modeling program of choice, and bring your replacement model into the workspace. Then, go to File -&amp;gt; Import, and import the DAE model you extracted from the SBFRES. If you exported multiple models, only import the model you are currently working with. For example, if you exported an entire armor, you should only import the legs (or whatever part you are working with). Once you have finished the &amp;quot;Export Your Rigged Model&amp;quot; step, return here to repeat the process for other models.&lt;br /&gt;
You may see errors when you import with 3ds Max - this is normal, you can ignore them. Blender suppresses these errors, so you won&#039;t see them.&lt;br /&gt;
Combine the original model&#039;s objects, roughly along the lines of how your objects are. For example, if the original model has separate fingers, hands, and arms, and your model has separate hands and arms, combine the fingers with the hands. Or if your model is only a single object, combine all the original model&#039;s objects into a single object. In 3ds Max, you can do this with Command Panel -&amp;gt; Modify -&amp;gt; Edit Geometry -&amp;gt; Attach, and selecting the object to attach the selected object to. In Blender, you can do this by selecting multiple objects with Ctrl+click in Object mode, then right-clicking and selecting Join.&lt;br /&gt;
&lt;br /&gt;
In your object list, you will now see the original model&#039;s objects along with your objects. You will also see the original model&#039;s skeleton, which is important to have and you should generally not touch it.&lt;br /&gt;
&lt;br /&gt;
===Align Your Model With the Original===&lt;br /&gt;
[[File:ModelReplacement_alignModel.png|alt=Align Your Model|thumb|Select your model (1), select the mesh (2), select the type of thing to modify (3), and select how to modify it (4).]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Get your objects to match up with the original ones, as close as possible. Anything delicate is important: feet, hands/fingers, waists, necklines, handles of weapons, etc.&amp;lt;/blockquote&amp;gt;In all likelihood, your model will differ greatly from the original you just imported. Using the Move, Rotate, and Scale tools, make sure your model lines up with the original&#039;s - the closer the better.&lt;br /&gt;
There are also plenty of tools in 3ds Max&#039;s Edit Poly/Mesh modes, or Blender&#039;s Sculpt mode for helping move the model around. In 3ds Max, you can right click on the Edit Mesh/Poly to convert between them. In Blender, one of Sculpt mode&#039;s tools is the Pose tool, which is quite good for moving limbs into place if you&#039;re modifying an armor.&lt;br /&gt;
&lt;br /&gt;
Rename your objects to something close to the original&#039;s, so that you can easily figure out which of your objects corresponds to which original object. This will help both during this step and later, during the &amp;quot;Replace the Original Model with Yours&amp;quot; step. For example, if you have an object for hair, it&#039;s encouraged to name it &amp;lt;code&amp;gt;Hair_###__Mt_Hair_###&amp;lt;/code&amp;gt;, where ### is the number of the armor you might be working with, and Mt_Hair_### is the name of the material you want to use with it. Including the name of the material in the object is helpful so that when you need to reassign materials in Switch Toolbox (which you may have to do often, depending on how much trouble you have) you will be able to tell, straight away, which object needs which material.&lt;br /&gt;
&lt;br /&gt;
Note: If you need help with this step, there are many great tutorials on YouTube.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Apply the Rig from the Original to Your Model===&lt;br /&gt;
[[File:ModelReplacement_copyRig.png|alt=Copy the Rig|thumb|Select the original object (1), right click on the Skin modifier and copy it (2), select your replacement object (3), and right click in the modifier area and paste the Skin modifier there (4).]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Apply the rig from the original object(s) to your object(s). Set maximum limit for bones to affect vertices to the object&#039;s skin count.&amp;lt;/blockquote&amp;gt;For 3ds Max: Select the original object&#039;s Skin modifier in the modifier list, then copy it. Select your object, then paste the rig onto it. If all has gone well, you&#039;re done with this step. 3ds Max uses one or more of a series of algorithms to map the rig of one object onto the rig of another object automatically, and it&#039;s generally pretty good about it.&lt;br /&gt;
For Blender:&lt;br /&gt;
* Click and drag the object on top of the original object&#039;s Armature (the one with the orange upside-down triangle next to it), while holding shift and alt. This will assign the object to that armature, instead. Then, select the object in Object mode, go to the Modifiers tab (which looks like a diagonal wrench, in the bottom right area), and in the box that says Armature at the top, click on the box next to Object, and select the armature of the original model. If there is no box that says Armature at the top, click on Add Modifier and select Armature. There is now a box that says Armature at the top.&lt;br /&gt;
* Select your object in Object mode. In the bottom right, click on the upside-down green triangle. If there is anything in the Vertex Groups tab, delete it all with the - button. Then, Ctrl+click the original object that most closely matches its location. Go into Weight Paint mode, click on the Weights button in the top left, and select Transfer Weights. In the bottom left, expand the new small tab there, if it is not already. For Vertex Mapping, select Nearest Face Interpolated. For Source Layers Selection, select By Name. For Destination Layers Matching, select All Layers.&lt;br /&gt;
&lt;br /&gt;
After applying the rig onto an object, set the limit for the number of bones to affect each vertex to 4. In 3ds Max, you can do this by scrolling the modifier rollout on the right side down to the bottom, expanding Advanced Parameters, and setting the number in the Bone Affect Limit box. In Blender, you can do it with the Limit Total option, found right under the Transfer Weights option described earlier. Other programs will have different ways of setting this limit.&lt;br /&gt;
&lt;br /&gt;
You also want your weights to be normalized. In 3ds Max, the weights are normalized by default. In Blender, in Weight Paint mode, you need to click on the screwdriver-and-wrench icon in the middle of the right side, expand Options, and select Auto Normalize.&lt;br /&gt;
&lt;br /&gt;
If you get the model into the game and the animations deform the model in strange ways, you&#039;ll need to come back and manually adjust the rigging, which is a very time-consuming process, documented in a number of excellent tutorials on YouTube.&lt;br /&gt;
&lt;br /&gt;
===Delete the Original Model&#039;s Objects===&lt;br /&gt;
[[File:ModelReplacement_deleteObjects.png|alt=Delete Original Objects|thumb|The workspace has been cleared of the painted object, leaving only the custom, unpainted one and the skeleton.]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Delete the original model&#039;s objects and your model&#039;s skeleton (if any), leaving just your objects and the original skeleton. Rename your objects.&amp;lt;/blockquote&amp;gt;Delete all the objects from your workspace that you don&#039;t want to be imported to the game. This includes any secondary objects not part of your final model, your model&#039;s skeleton (but not the original model&#039;s skeleton), and the original model&#039;s objects.&lt;br /&gt;
It&#039;s also a good idea to rename the your objects to names that describe what they are for. In Blender, renaming the upside-down orange triangle doesn&#039;t do it, you have to expand that and rename the upside-down green triangle. Though this isn&#039;t strictly necessary to get the replacement model to work, it can really help smooth things out later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Export the Model from Your Modeling Program===&lt;br /&gt;
[[File:ModelReplacement_exportModel.png|alt=Export Model|thumb|212x212px|Select the File menu (1), then click on export (2), or hover over it and click on Export (3).]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Fairly simple, export your model. DAE is probably best.&amp;lt;/blockquote&amp;gt;Using File -&amp;gt; Export, export your model as whatever type you wish. Switch Toolbox, as of writing this guide, only handles DAE properly. It has an option for FBX as well, and as it receives updates regularly, FBX or other formats may become properly handled at any time.&lt;br /&gt;
It also has an option for importing via CSV (which is not a model type) that is explained in the optional step, below. CSV is only recommended if your exporter cannot export DAE or FBX for whatever reason.&lt;br /&gt;
&lt;br /&gt;
Switch Toolbox now handles DAE&#039;s from Blender just fine, so there is no longer any need to use Autodesk FBX Converter, as was originally described here.&lt;br /&gt;
&lt;br /&gt;
====Export the Model using CsvExportRewrite====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: In 3ds Max, use MAXScript -&amp;gt; Run Script... to run CsvExportRewrite.ms and save the model data as a CSV file.&amp;lt;/blockquote&amp;gt;Some people - the author included - have trouble with 3ds Max crashing when it tries to export models. For us, there is a MAXScript that exports the model as text, which Switch Toolbox can also use. In the toolbar use the MAXScript menu and select Run Script. Select the CsvExportRewrite script. A small box will pop up with a list of all the objects in your workspace. It has options to &amp;quot;Copy UVs&amp;quot; and &amp;quot;Explicit Normals&amp;quot; for each object. Copy UVs is disabled by default, and Explicit Normals is enabled by default. These settings should suffice, though if you end up with strange textures in game, try re-exporting with Copy UVs checked.&lt;br /&gt;
When you select export, 3ds Max will stop responding for a little bit as it exports, then it will respond again. When it responds, check the csv file it created. If it is empty, go through all of your objects, collapse or delete any modifiers that aren&#039;t the Skin modifier, Edit Normals modifier, or Editable Mesh, then select the Skin modifier for every object so that the modifiers background is dark grey (not blue), and then export again to a different file. It will fail again if you try to export to an empty file it has previously created, unless you&#039;ve restarted 3ds Max since it created that file.&lt;br /&gt;
&lt;br /&gt;
===Import the Model Using Switch Toolbox===&lt;br /&gt;
[[File:ModelReplacement_importOptions.png|thumb|The list of import options Switch Toolbox displays.]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Replace the original model in Switch Toolbox.&amp;lt;/blockquote&amp;gt;If you didn&#039;t leave Switch Toolbox open, reopen it now, and reopen the SBFRES you got the original model from. Right-click on the model that you want to replace, select Replace, and select the file you exported from your modeling program.&lt;br /&gt;
A dialog window of import options will appear. The picture to the right contains settings for most armors, but you should generally match the formats you copied down in the first step of this tutorial.&lt;br /&gt;
&lt;br /&gt;
Red box: Generally leave these unchecked. If your textures look all funky, try reimporting with Flip UVs. If you import and the model is not looking at you, but is instead face-down, reimport with Rotate -90 degrees checked. If you import and the model is face-up, use Rotate 90 degrees. If you modified the skeleton, use Import Bones. (It&#039;s possible that skeletons exported from Blender may not import correctly if you don&#039;t export as FBX.)&lt;br /&gt;
&lt;br /&gt;
Orange box: Keep Original Skin Count will be disabled by default in order to help avoid model stretching issues, but if your weights did not change then you can check this box to help solve some issues. Always check Map Original Materials. If you are importing from DAE or FBX, then you should check Use Original Attributes and Use Original Attribute Formats. If you checked those boxes and changed the names of the objects from the original model, pay special attention to the teal box instructions below. If you check those two boxes, then you can ignore the green and yellow box instructions below.&lt;br /&gt;
&lt;br /&gt;
Green box: Check all the boxes corresponding to the buffer types that you took note of in the first step of this process, &amp;quot;Obtaining a Rig.&amp;quot; If any object has one of those buffer types, check the box.&lt;br /&gt;
&lt;br /&gt;
Yellow box: Select formats from the dropdowns that correspond to the formats you took note of in the first step of this process, &amp;quot;Obtaining a Rig.&amp;quot; If the UVs format was Format_16_16_UNorm and the dropdown does not have that option, Format_16_16_SNorm is fine.&lt;br /&gt;
&lt;br /&gt;
Teal box: If you are importing from DAE or FBX, then the left side will have the objects you are importing, and the right side will have the objects you are replacing. This will let you know whether or not Map Original Materials from the orange box will actually do anything, and is one of the reasons why you renamed your objects to the same name as the originals. If you did not rename your objects to the same names as the originals in your modeling program, then you may rename them to the original object names here by selecting them on the left side and correcting their names in the text line above these two boxes. This will save you the trouble of having to set the attributes and formats manually (the green and yellow boxes). The CSV import option does not support Map Original Materials at the time of writing, though it may do so in the future.&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve set all your import options, switch back to the Model Settings tab and hit Save.&lt;br /&gt;
&lt;br /&gt;
===Verify the Model Looks Good and Save===&lt;br /&gt;
[[File:ModelReplacement_verifyStage.png|alt=Verify|thumb|Verify that the model looks good in the viewer (2) and that the right material (3) is assigned to each object (1)]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Check the model in the viewer for dropped weights, and check the material assignments. If it all looks good, save it.&amp;lt;/blockquote&amp;gt;Double check the model in the viewer to ensure that it has imported correctly. If it is face-down on its front or face-up on its back, reimport it. If pieces of the model are stretching to the &amp;quot;origin&amp;quot; (the center of the viewer space), then some vertices weren&#039;t properly weighted and you need to find them and re-rig them. If the model is wavy, where it should be straight, then you probably imported with 16 bit or 32 bit weights, and need to reimport with Blend Weights format Format_8_8_8_8_UNorm.&lt;br /&gt;
Also verify that the material assigned is the correct one. If you imported from a CSV file, these will almost certainly be wrong. This step is another reason we renamed the objects to the original names: the original names have the material name at the end, so there isn&#039;t confusion as to what object owns what material. A single material may be assigned to multiple objects, but any object may only have a single material.&lt;br /&gt;
&lt;br /&gt;
Lastly, verify that the vertex buffers list for each object contains all of the same entries as the original object did (you should still have the list from the beginning of this process). If any buffers are missing, reimport the model and check the boxes for those buffers. If they are still missing, your model format does not contain that information (OBJ) and you should use a different format. If there are buffers that the original object did not have, select them and click Remove, then click Yes when it asks if you&#039;re sure.&lt;br /&gt;
&lt;br /&gt;
Once all that is done, you&#039;re all set. Hit save. Your SBFRES now has your custom model and is ready to be loaded into the game!&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
====Does this work for TitleBG.pack models?====&lt;br /&gt;
Yes. There&#039;s no functional difference between resident actors (those in TitleBG.pack, denoted by their presence in Bootup.pack&#039;s ResidentActors.sbyml file) and normal actors, save that resident actors are always loaded in memory, so they can be displayed without loading delays. This also means that if you&#039;ve done something wrong, you&#039;ll notice the crashing at the title menu or first loading screen, instead of during gameplay.&lt;br /&gt;
&lt;br /&gt;
====Why does the lighting on my model look weird?====&lt;br /&gt;
If you obtained your model - that is, the modded one that you are adding to the game - by extracting it using Switch toolbox as a DAE, then Blender and 3dsMax will both fail to read vertex normals on import, and instead generate new ones. This is almost always undesirable, and will result in weird, splotchy shadows on your model. To fix this, use the latest AutoDesk FBX Converter (available [https://aps.autodesk.com/developer/overview/fbx-converter-archives here], yes the latest version is from 2013) to convert the DAE to FBX first.&lt;br /&gt;
&lt;br /&gt;
Not that it&#039;s not necessary to convert the rig model, because you delete it. You only need to convert the final model that you will be importing.&lt;br /&gt;
&lt;br /&gt;
Note that once the vertex normals are messed up, converting to FBX won&#039;t fix anything. You have to convert it before the first time you transfer the working model from Switch Toolbox to your modeling program.&lt;br /&gt;
&lt;br /&gt;
===Object Placement Issues===&lt;br /&gt;
&lt;br /&gt;
====My eyes are in the model&#039;s head, but they aren&#039;t in game!====&lt;br /&gt;
Splitting the eyes into two different objects may help to fix this. If not...&lt;br /&gt;
&lt;br /&gt;
Eyes are very strange. Link&#039;s original eyes are placed correctly, but exporting them will cause them to be placed incorrectly in any 3d modeling program, and reimporting unchanged eyes will cause them to appear in a different place. However, the game will load them as if they were in the correct place. It is generally not advised to move the eyes unless absolutely necessary, as there is no single way to make them work consistently.&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Replacing_textures&amp;diff=11877</id>
		<title>Help:Replacing textures</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Replacing_textures&amp;diff=11877"/>
		<updated>2024-12-17T22:15:09Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Replacing The Textures */ Better wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When replacing textures, the process is fairly similar on both Wii U/Cemu and Switch. The main difference is the presence of Tex1 and Tex2 which are combined as a single Tex file on the switch.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* [[Help:Tools/Switch Toolbox|Switch Toolbox]]&lt;br /&gt;
&lt;br /&gt;
== Replacing The Textures ==&lt;br /&gt;
&lt;br /&gt;
# Open Switch Toolbox and find the texture you&#039;re looking for. Use [https://github.com/MrCheeze/botw-tools/blob/master/botw_names.json IDs List] to find the bfres name.&lt;br /&gt;
# Drag the Tex1 (or Tex if Switch) into Switch Toolbox. These can mostly be found in &amp;lt;code&amp;gt;content/Model&amp;lt;/code&amp;gt;, though some are in &amp;lt;code&amp;gt;content/Pack/TitleBG.pack//Model&amp;lt;/code&amp;gt;. If Wii U, make sure the Tex2 is in the same directory as the Tex1 (so that Switch Toolbox can load/save its contents properly)&lt;br /&gt;
# Click the + icon next to the file, and then the one next to the textures folder.&lt;br /&gt;
# Find the texture you&#039;re looking to replace and right-click, replace. Please note when replacing textures sometimes sRGB won&#039;t be automatically selected. If it&#039;s an albedo (_Alb), then it will glow in-game without sRGB.&lt;br /&gt;
# Save the file and say Yes to yaz0-compression if it asks. If you&#039;re on Wii U, it will ask where to save the Tex2: save it in the same spot the Tex2 would belong for that model (probably in the same place as the Tex1) and yaz0-compress it as well.&lt;br /&gt;
# If the file size increased it&#039;s recommended that you [[Help:Tools/BCML| install with BCML]] to handle metadata files.&lt;br /&gt;
&lt;br /&gt;
Congratulations! You replaced the texture! If you&#039;re on CEMU, create a graphics pack and try it out, otherwise follow the normal steps for mods on Switch / Wii U to see it in action.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Patchwork/color-splotchy textures ===&lt;br /&gt;
# Make sure your texture formats match the originals that you&#039;re replacing. With the texture selected, the format is listed on the right side. It&#039;ll be something like &amp;lt;code&amp;gt;T_BC1_SRGB&amp;lt;/code&amp;gt;&lt;br /&gt;
# Make sure your mipmaps were generated correctly. If toolbox throws an error when you try to use the Mip Level selector above the texture preview, or it claims there are not X mip levels (where the size of the longer side of your texture is 2^X, for example 256 is 2^8 so a 256x256 texture should have 8 mip levels) then the mipmaps were not generated correctly. If you imported a PNG, delete it from the bfres, save, close toolbox, open toolbox, and try reimporting it again. If you imported a DDS, then it likely didn&#039;t have any mip levels stored in it, and you would need to export the file from your texture editor with mipmaps baked in.&lt;br /&gt;
&lt;br /&gt;
=== Red texture ===&lt;br /&gt;
The game cannot find the texture it expects with the name it expects. Make sure your texture has the same name as the texture you replaced. If it is the same name, see Patchwork/color-splotchy textures.&lt;br /&gt;
&lt;br /&gt;
=== Game crashing ===&lt;br /&gt;
The game cannot gracefully handle too many resources loaded at once, so too many large textures will cause the game to be unable to allocate memory for a resource, return a null pointer, and crash. Only replace textures with new textures of the same size or smaller unless the loss of detail is unacceptable.&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11875</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11875"/>
		<updated>2024-12-08T06:35:08Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Game Dump */ Clarify DLC folder location&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains Cemu.exe. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know. NOTE: DO NOT END THIS PATH WITH &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;, IT WILL NOT WORK. END THE PATH WITH &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;!&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|Emulator Executable (optional)&lt;br /&gt;
|The command to use to run open your emulator when using the Open Emulator button&lt;br /&gt;
|The path to your emulator executable&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===Why does it say it can&#039;t find files in my dumps?===&lt;br /&gt;
Your dump paths are probably set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
===Why don&#039;t my mods show up in my emulator after deploying?===&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where you deploy to.&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You can build the program on your Steam Deck using the instructions in the installation section, or use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why can&#039;t UKMM detect my dump paths for consoles/Yuzu/Ryujinx?===&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11874</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11874"/>
		<updated>2024-12-06T20:00:21Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Deployment */ Emulator Executable&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains Cemu.exe. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|Emulator Executable (optional)&lt;br /&gt;
|The command to use to run open your emulator when using the Open Emulator button&lt;br /&gt;
|The path to your emulator executable&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===Why does it say it can&#039;t find files in my dumps?===&lt;br /&gt;
Your dump paths are probably set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
===Why don&#039;t my mods show up in my emulator after deploying?===&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where you deploy to.&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You can build the program on your Steam Deck using the instructions in the installation section, or use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why can&#039;t UKMM detect my dump paths for consoles/Yuzu/Ryujinx?===&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11873</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11873"/>
		<updated>2024-12-01T23:37:10Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* FAQ */ Why can&amp;#039;t UKMM always detect dump paths?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains Cemu.exe. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===Why does it say it can&#039;t find files in my dumps?===&lt;br /&gt;
Your dump paths are probably set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
===Why don&#039;t my mods show up in my emulator after deploying?===&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where you deploy to.&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You can build the program on your Steam Deck using the instructions in the installation section, or use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why can&#039;t UKMM detect my dump paths for consoles/Yuzu/Ryujinx?===&lt;br /&gt;
When you dump your game files to your PC, they go wherever you put them. There&#039;s no single location for it, so UKMM can&#039;t find it unless it scours the entirety of your computer (which would take forever and still probably not work).&lt;br /&gt;
&lt;br /&gt;
Yuzu and Ryujinx don&#039;t use loose files to play the game, like Cemu does. They use XCI, NSP, or whatever other format, and UKMM can&#039;t read those, because there is no library for it. So UKMM could scan your Yuzu/Ryujinx settings for where your game/update/dlc archives are, but it wouldn&#039;t be able to do anything with them.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11872</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11872"/>
		<updated>2024-12-01T22:26:33Z</updated>

		<summary type="html">&lt;p&gt;Ginger: Update links and directions to new official releases page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== Prebuilt program ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Building from source ===&lt;br /&gt;
If for some reason the prebuilt binaries don&#039;t work for you, or you just want to build it for your own personal reasons, here are the exhaustive directions for doing so&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this on Linux and macOS by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter. You can do this on Windows by using the setup exe located [https://www.rust-lang.org/tools/install here]&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, on Linux by running the sh for your system, and on Windows by installing the msi for your system, all available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake.&lt;br /&gt;
# Download the source code (either zip or tar.gz) from the latest release on [https://github.com/GingerAvalanche/ukmm/releases the releases page]&lt;br /&gt;
# Extract the source code somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window&lt;br /&gt;
# - On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5). On Windows, shift-click in empty space inside the folder and select Open PowerShell window here.&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are three methods of setup, depending on whether you are coming from BCML or not, and if not, if you are using Cemu and have set it up already&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Not importing from BCML, using Cemu===&lt;br /&gt;
If you&#039;re using Cemu and you&#039;ve previously seen the 1.5.0 version number in the bottom right of the BotW main menu, just click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039; inside the Wii U Config section, and select the folder that contains Cemu.exe. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If neither of the two previous sections applied to you, then you&#039;ll need to set UKMM up manually.&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===Why does it say it can&#039;t find files in my dumps?===&lt;br /&gt;
Your dump paths are probably set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
===Why don&#039;t my mods show up in my emulator after deploying?===&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where you deploy to.&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You can build the program on your Steam Deck using the instructions in the installation section, or use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11871</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11871"/>
		<updated>2024-11-30T02:24:11Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* FAQ */ Couple questions about errors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== On Windows and Linux ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Linux and receive an error when trying to run it, perform a system upgrade and try again. If you can&#039;t perform a system upgrade, you&#039;re using a static distro of Linux like steamOS and need to use the instructions for Steam Deck&lt;br /&gt;
&lt;br /&gt;
=== On Steam Deck and macOS ===&lt;br /&gt;
Due to reasons outside the developers&#039; control, the Linux For Steam Deck and macOS versions currently cannot be built by them. They must be built on the system that it going to be using them. The following directions detail how to do this&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter.&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, or on Linux by running the sh for your system, both available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake&lt;br /&gt;
# Download [https://github.com/GingerAvalanche/ukmm/archive/242eeaa2d570258bf7a9f49a4bdbbe9ce3b69a99.zip this version of ukmm] (There is a more up-to-date version, but it contains things you don&#039;t want, because functionality was removed in order to implement it a different way, later)&lt;br /&gt;
# Extract that zip somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window.&lt;br /&gt;
# On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5)&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are two methods of setup, depending on whether you are coming from BCML or are just starting out&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If you&#039;ve never used mods before, or are installing mods for the first time on a new computer, or wiped BCML, or whatever other reason, you will need to set your settings manually&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
If you&#039;re using Cemu and you installed your game/update/DLC with it, click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039;, and select the folder that contains Cemu.exe. You&#039;re done.&lt;br /&gt;
&lt;br /&gt;
Otherwise, consult the following table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
* In rare cases, installing a mod from a 7z file causes any custom text it adds to not get added. The cause of this is unknown. It can be worked around by extracting the 7z and installing the rules.txt file directly.&lt;br /&gt;
* In rare cases, installing a mod that does not edit the language you have set in your settings causes your entire game to change languages. The cause of this is unknown. It can be worked around by extracting the mod and deleting the language packs (located in &amp;lt;code&amp;gt;content/Pack&amp;lt;/code&amp;gt; for WiiU or &amp;lt;code&amp;gt;romfs/Pack&amp;lt;/code&amp;gt; for Switch) you are not going to use.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===Why does it say it can&#039;t find files in my dumps?===&lt;br /&gt;
Your dump paths are probably set wrong. Go back up to [[Help:Tools/UKMM#Game Dump|the game dump section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re absolutely sure your game dumps are set right, check to make sure your dumps haven&#039;t been corrupted somehow. If the file UKMM claims is missing, really is missing, then you may have to dump your game again.&lt;br /&gt;
&lt;br /&gt;
===Why don&#039;t my mods show up in my emulator after deploying?===&lt;br /&gt;
Make sure your deploy folder is set correctly. Go back up to [[Help:Tools/UKMM#Deployment|the deployment section]] and make sure you&#039;ve followed the directions correctly.&lt;br /&gt;
&lt;br /&gt;
If your mods still don&#039;t show up in your emulator, make sure that the location they&#039;re being deployed to isn&#039;t managed by OneDrive. It will delete them because it sucks. Consider uninstalling OneDrive, but at the very least, you&#039;ll need to tell it not to manage where you deploy to.&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You can build the program on your Steam Deck using the instructions in the installation section, or use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11869</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11869"/>
		<updated>2024-11-21T04:45:34Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Why use UKMM? */ It installs BNPs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It installs BNPs just like BCML does&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== On Windows and Linux ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Linux and receive an error when trying to run it, perform a system upgrade and try again. If you can&#039;t perform a system upgrade, you&#039;re using a static distro of Linux like steamOS and need to use the instructions for Steam Deck&lt;br /&gt;
&lt;br /&gt;
=== On Steam Deck and macOS ===&lt;br /&gt;
Due to reasons outside the developers&#039; control, the Linux For Steam Deck and macOS versions currently cannot be built by them. They must be built on the system that it going to be using them. The following directions detail how to do this&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter.&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, or on Linux by running the sh for your system, both available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake&lt;br /&gt;
# Download [https://github.com/GingerAvalanche/ukmm/archive/242eeaa2d570258bf7a9f49a4bdbbe9ce3b69a99.zip this version of ukmm] (There is a more up-to-date version, but it contains things you don&#039;t want, because functionality was removed in order to implement it a different way, later)&lt;br /&gt;
# Extract that zip somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window.&lt;br /&gt;
# On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5)&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are two methods of setup, depending on whether you are coming from BCML or are just starting out&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If you&#039;ve never used mods before, or are installing mods for the first time on a new computer, or wiped BCML, or whatever other reason, you will need to set your settings manually&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
If you&#039;re using Cemu and you installed your game/update/DLC with it, click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039;, and select the folder that contains Cemu.exe. You&#039;re done.&lt;br /&gt;
&lt;br /&gt;
Otherwise, consult the following table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
* In rare cases, installing a mod from a 7z file causes any custom text it adds to not get added. The cause of this is unknown. It can be worked around by extracting the 7z and installing the rules.txt file directly.&lt;br /&gt;
* In rare cases, installing a mod that does not edit the language you have set in your settings causes your entire game to change languages. The cause of this is unknown. It can be worked around by extracting the mod and deleting the language packs (located in &amp;lt;code&amp;gt;content/Pack&amp;lt;/code&amp;gt; for WiiU or &amp;lt;code&amp;gt;romfs/Pack&amp;lt;/code&amp;gt; for Switch) you are not going to use.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You can build the program on your Steam Deck using the instructions in the installation section, or use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11868</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11868"/>
		<updated>2024-11-19T19:41:56Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* UKMM won&amp;#039;t run on Linux! */ Update possibilities&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== On Windows and Linux ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Linux and receive an error when trying to run it, perform a system upgrade and try again. If you can&#039;t perform a system upgrade, you&#039;re using a static distro of Linux like steamOS and need to use the instructions for Steam Deck&lt;br /&gt;
&lt;br /&gt;
=== On Steam Deck and macOS ===&lt;br /&gt;
Due to reasons outside the developers&#039; control, the Linux For Steam Deck and macOS versions currently cannot be built by them. They must be built on the system that it going to be using them. The following directions detail how to do this&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter.&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, or on Linux by running the sh for your system, both available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake&lt;br /&gt;
# Download [https://github.com/GingerAvalanche/ukmm/archive/242eeaa2d570258bf7a9f49a4bdbbe9ce3b69a99.zip this version of ukmm] (There is a more up-to-date version, but it contains things you don&#039;t want, because functionality was removed in order to implement it a different way, later)&lt;br /&gt;
# Extract that zip somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window.&lt;br /&gt;
# On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5)&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are two methods of setup, depending on whether you are coming from BCML or are just starting out&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If you&#039;ve never used mods before, or are installing mods for the first time on a new computer, or wiped BCML, or whatever other reason, you will need to set your settings manually&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
If you&#039;re using Cemu and you installed your game/update/DLC with it, click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039;, and select the folder that contains Cemu.exe. You&#039;re done.&lt;br /&gt;
&lt;br /&gt;
Otherwise, consult the following table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
* In rare cases, installing a mod from a 7z file causes any custom text it adds to not get added. The cause of this is unknown. It can be worked around by extracting the 7z and installing the rules.txt file directly.&lt;br /&gt;
* In rare cases, installing a mod that does not edit the language you have set in your settings causes your entire game to change languages. The cause of this is unknown. It can be worked around by extracting the mod and deleting the language packs (located in &amp;lt;code&amp;gt;content/Pack&amp;lt;/code&amp;gt; for WiiU or &amp;lt;code&amp;gt;romfs/Pack&amp;lt;/code&amp;gt; for Switch) you are not going to use.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You can build the program on your Steam Deck using the instructions in the installation section, or use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11867</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11867"/>
		<updated>2024-11-19T19:34:54Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Deployment */ Cemu deployment simplification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== On Windows and Linux ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Linux and receive an error when trying to run it, perform a system upgrade and try again. If you can&#039;t perform a system upgrade, you&#039;re using a static distro of Linux like steamOS and need to use the instructions for Steam Deck&lt;br /&gt;
&lt;br /&gt;
=== On Steam Deck and macOS ===&lt;br /&gt;
Due to reasons outside the developers&#039; control, the Linux For Steam Deck and macOS versions currently cannot be built by them. They must be built on the system that it going to be using them. The following directions detail how to do this&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter.&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, or on Linux by running the sh for your system, both available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake&lt;br /&gt;
# Download [https://github.com/GingerAvalanche/ukmm/archive/242eeaa2d570258bf7a9f49a4bdbbe9ce3b69a99.zip this version of ukmm] (There is a more up-to-date version, but it contains things you don&#039;t want, because functionality was removed in order to implement it a different way, later)&lt;br /&gt;
# Extract that zip somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window.&lt;br /&gt;
# On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5)&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are two methods of setup, depending on whether you are coming from BCML or are just starting out&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If you&#039;ve never used mods before, or are installing mods for the first time on a new computer, or wiped BCML, or whatever other reason, you will need to set your settings manually&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
If you&#039;re using Cemu and you installed your game/update/DLC with it, click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039;, and select the folder that contains Cemu.exe. You&#039;re done.&lt;br /&gt;
&lt;br /&gt;
Otherwise, consult the following table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: Click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
* In rare cases, installing a mod from a 7z file causes any custom text it adds to not get added. The cause of this is unknown. It can be worked around by extracting the 7z and installing the rules.txt file directly.&lt;br /&gt;
* In rare cases, installing a mod that does not edit the language you have set in your settings causes your entire game to change languages. The cause of this is unknown. It can be worked around by extracting the mod and deleting the language packs (located in &amp;lt;code&amp;gt;content/Pack&amp;lt;/code&amp;gt; for WiiU or &amp;lt;code&amp;gt;romfs/Pack&amp;lt;/code&amp;gt; for Switch) you are not going to use.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You could theoretically build the program on your Steam Deck and it&#039;d use your native glibc, but most people will want to either use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11866</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11866"/>
		<updated>2024-11-12T21:53:07Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* On Steam Deck and macOS */ Add to Path&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== On Windows and Linux ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Linux and receive an error when trying to run it, perform a system upgrade and try again. If you can&#039;t perform a system upgrade, you&#039;re using a static distro of Linux like steamOS and need to use the instructions for Steam Deck&lt;br /&gt;
&lt;br /&gt;
=== On Steam Deck and macOS ===&lt;br /&gt;
Due to reasons outside the developers&#039; control, the Linux For Steam Deck and macOS versions currently cannot be built by them. They must be built on the system that it going to be using them. The following directions detail how to do this&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter.&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, or on Linux by running the sh for your system, both available from [https://cmake.org/download/ here]. On macOS, you may also need to run the terminal command &amp;lt;code&amp;gt;sudo &amp;quot;/Applications/CMake.app/Contents/bin/cmake-gui&amp;quot; --install&amp;lt;/code&amp;gt; to allow Rust to use CMake&lt;br /&gt;
# Download [https://github.com/GingerAvalanche/ukmm/archive/242eeaa2d570258bf7a9f49a4bdbbe9ce3b69a99.zip this version of ukmm] (There is a more up-to-date version, but it contains things you don&#039;t want, because functionality was removed in order to implement it a different way, later)&lt;br /&gt;
# Extract that zip somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window.&lt;br /&gt;
# On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5)&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are two methods of setup, depending on whether you are coming from BCML or are just starting out&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If you&#039;ve never used mods before, or are installing mods for the first time on a new computer, or wiped BCML, or whatever other reason, you will need to set your settings manually&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
If you&#039;re using Cemu and you installed your game/update/DLC with it, click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039;, and select the folder that contains Cemu.exe. You&#039;re done.&lt;br /&gt;
&lt;br /&gt;
Otherwise, consult the following table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: If you&#039;re using Cemu 2.0-v91 or newer and didn&#039;t install your game/update/DLC with it, click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Otherwise, open the folder with the Cemu.exe in it. In both cases, go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
* In rare cases, installing a mod from a 7z file causes any custom text it adds to not get added. The cause of this is unknown. It can be worked around by extracting the 7z and installing the rules.txt file directly.&lt;br /&gt;
* In rare cases, installing a mod that does not edit the language you have set in your settings causes your entire game to change languages. The cause of this is unknown. It can be worked around by extracting the mod and deleting the language packs (located in &amp;lt;code&amp;gt;content/Pack&amp;lt;/code&amp;gt; for WiiU or &amp;lt;code&amp;gt;romfs/Pack&amp;lt;/code&amp;gt; for Switch) you are not going to use.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You could theoretically build the program on your Steam Deck and it&#039;d use your native glibc, but most people will want to either use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11865</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11865"/>
		<updated>2024-11-12T21:46:47Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* On Steam Deck and macOS */ Update source code link to version that builds on non-Windows computers. Might help...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== On Windows and Linux ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Linux and receive an error when trying to run it, perform a system upgrade and try again. If you can&#039;t perform a system upgrade, you&#039;re using a static distro of Linux like steamOS and need to use the instructions for Steam Deck&lt;br /&gt;
&lt;br /&gt;
=== On Steam Deck and macOS ===&lt;br /&gt;
Due to reasons outside the developers&#039; control, the Linux For Steam Deck and macOS versions currently cannot be built by them. They must be built on the system that it going to be using them. The following directions detail how to do this&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter.&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, or on Linux by running the sh for your system, both available from [https://cmake.org/download/ here].&lt;br /&gt;
# Download [https://github.com/GingerAvalanche/ukmm/archive/242eeaa2d570258bf7a9f49a4bdbbe9ce3b69a99.zip this version of ukmm] (There is a more up-to-date version, but it contains things you don&#039;t want, because functionality was removed in order to implement it a different way, later)&lt;br /&gt;
# Extract that zip somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window.&lt;br /&gt;
# On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5)&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are two methods of setup, depending on whether you are coming from BCML or are just starting out&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If you&#039;ve never used mods before, or are installing mods for the first time on a new computer, or wiped BCML, or whatever other reason, you will need to set your settings manually&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
If you&#039;re using Cemu and you installed your game/update/DLC with it, click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039;, and select the folder that contains Cemu.exe. You&#039;re done.&lt;br /&gt;
&lt;br /&gt;
Otherwise, consult the following table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: If you&#039;re using Cemu 2.0-v91 or newer and didn&#039;t install your game/update/DLC with it, click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Otherwise, open the folder with the Cemu.exe in it. In both cases, go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
* In rare cases, installing a mod from a 7z file causes any custom text it adds to not get added. The cause of this is unknown. It can be worked around by extracting the 7z and installing the rules.txt file directly.&lt;br /&gt;
* In rare cases, installing a mod that does not edit the language you have set in your settings causes your entire game to change languages. The cause of this is unknown. It can be worked around by extracting the mod and deleting the language packs (located in &amp;lt;code&amp;gt;content/Pack&amp;lt;/code&amp;gt; for WiiU or &amp;lt;code&amp;gt;romfs/Pack&amp;lt;/code&amp;gt; for Switch) you are not going to use.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You could theoretically build the program on your Steam Deck and it&#039;d use your native glibc, but most people will want to either use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11864</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11864"/>
		<updated>2024-11-12T20:05:04Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* On Steam Deck and macOS */ Install CMake&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== On Windows and Linux ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Linux and receive an error when trying to run it, perform a system upgrade and try again. If you can&#039;t perform a system upgrade, you&#039;re using a static distro of Linux like steamOS and need to use the instructions for Steam Deck&lt;br /&gt;
&lt;br /&gt;
=== On Steam Deck and macOS ===&lt;br /&gt;
Due to reasons outside the developers&#039; control, the Linux For Steam Deck and macOS versions currently cannot be built by them. They must be built on the system that it going to be using them. The following directions detail how to do this&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter.&lt;br /&gt;
# Install CMake: you can do this on macOS by installing the dmg for your system, or on Linux by running the sh for your system, both available from [https://cmake.org/download/ here].&lt;br /&gt;
# Download [https://github.com/GingerAvalanche/ukmm/archive/720eebd89c7e5f3d651e5f76db9dcac20cf9d282.zip this version of ukmm] (There is a more up-to-date version, but it contains things you don&#039;t want, because functionality was removed in order to implement it a different way, later)&lt;br /&gt;
# Extract that zip somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window.&lt;br /&gt;
# On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 5)&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are two methods of setup, depending on whether you are coming from BCML or are just starting out&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If you&#039;ve never used mods before, or are installing mods for the first time on a new computer, or wiped BCML, or whatever other reason, you will need to set your settings manually&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
If you&#039;re using Cemu and you installed your game/update/DLC with it, click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039;, and select the folder that contains Cemu.exe. You&#039;re done.&lt;br /&gt;
&lt;br /&gt;
Otherwise, consult the following table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: If you&#039;re using Cemu 2.0-v91 or newer and didn&#039;t install your game/update/DLC with it, click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Otherwise, open the folder with the Cemu.exe in it. In both cases, go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
* In rare cases, installing a mod from a 7z file causes any custom text it adds to not get added. The cause of this is unknown. It can be worked around by extracting the 7z and installing the rules.txt file directly.&lt;br /&gt;
* In rare cases, installing a mod that does not edit the language you have set in your settings causes your entire game to change languages. The cause of this is unknown. It can be worked around by extracting the mod and deleting the language packs (located in &amp;lt;code&amp;gt;content/Pack&amp;lt;/code&amp;gt; for WiiU or &amp;lt;code&amp;gt;romfs/Pack&amp;lt;/code&amp;gt; for Switch) you are not going to use.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You could theoretically build the program on your Steam Deck and it&#039;d use your native glibc, but most people will want to either use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11863</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11863"/>
		<updated>2024-11-12T18:32:13Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Installation */ Further break down installation instruction groups&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
=== On Windows and Linux ===&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Linux and receive an error when trying to run it, perform a system upgrade and try again. If you can&#039;t perform a system upgrade, you&#039;re using a static distro of Linux like steamOS and need to use the instructions for Steam Deck&lt;br /&gt;
&lt;br /&gt;
=== On Steam Deck and macOS ===&lt;br /&gt;
Due to reasons outside the developers&#039; control, the Linux For Steam Deck and macOS versions currently cannot be built by them. They must be built on the system that it going to be using them. The following directions detail how to do this&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter.&lt;br /&gt;
# Download [https://github.com/GingerAvalanche/ukmm/archive/720eebd89c7e5f3d651e5f76db9dcac20cf9d282.zip this version of ukmm] (There is a more up-to-date version, but it contains things you don&#039;t want, because functionality was removed in order to implement it a different way, later)&lt;br /&gt;
# Extract that zip somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window.&lt;br /&gt;
# On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar, and then do #5). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 4)&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are two methods of setup, depending on whether you are coming from BCML or are just starting out&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If you&#039;ve never used mods before, or are installing mods for the first time on a new computer, or wiped BCML, or whatever other reason, you will need to set your settings manually&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
If you&#039;re using Cemu and you installed your game/update/DLC with it, click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039;, and select the folder that contains Cemu.exe. You&#039;re done.&lt;br /&gt;
&lt;br /&gt;
Otherwise, consult the following table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: If you&#039;re using Cemu 2.0-v91 or newer and didn&#039;t install your game/update/DLC with it, click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Otherwise, open the folder with the Cemu.exe in it. In both cases, go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
* In rare cases, installing a mod from a 7z file causes any custom text it adds to not get added. The cause of this is unknown. It can be worked around by extracting the 7z and installing the rules.txt file directly.&lt;br /&gt;
* In rare cases, installing a mod that does not edit the language you have set in your settings causes your entire game to change languages. The cause of this is unknown. It can be worked around by extracting the mod and deleting the language packs (located in &amp;lt;code&amp;gt;content/Pack&amp;lt;/code&amp;gt; for WiiU or &amp;lt;code&amp;gt;romfs/Pack&amp;lt;/code&amp;gt; for Switch) you are not going to use.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You could theoretically build the program on your Steam Deck and it&#039;d use your native glibc, but most people will want to either use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11862</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11862"/>
		<updated>2024-11-12T18:25:54Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Installation on Steam Deck and macOS */ Removed &amp;quot;on macOS&amp;quot; because I added SD instructions and forgot it was there&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Installation on Steam Deck and macOS ===&lt;br /&gt;
Due to reasons outside the developers&#039; control, the Linux For Steam Deck and macOS versions currently cannot be built by them. They must be built on the system that it going to be using them. The following directions detail how to do this&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter.&lt;br /&gt;
# Download [https://github.com/GingerAvalanche/ukmm/archive/720eebd89c7e5f3d651e5f76db9dcac20cf9d282.zip this version of ukmm] (There is a more up-to-date version, but it contains things you don&#039;t want, because functionality was removed in order to implement it a different way, later)&lt;br /&gt;
# Extract that zip somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window.&lt;br /&gt;
# On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar, and then do #5). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 4)&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are two methods of setup, depending on whether you are coming from BCML or are just starting out&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If you&#039;ve never used mods before, or are installing mods for the first time on a new computer, or wiped BCML, or whatever other reason, you will need to set your settings manually&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
If you&#039;re using Cemu and you installed your game/update/DLC with it, click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039;, and select the folder that contains Cemu.exe. You&#039;re done.&lt;br /&gt;
&lt;br /&gt;
Otherwise, consult the following table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: If you&#039;re using Cemu 2.0-v91 or newer and didn&#039;t install your game/update/DLC with it, click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Otherwise, open the folder with the Cemu.exe in it. In both cases, go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
* In rare cases, installing a mod from a 7z file causes any custom text it adds to not get added. The cause of this is unknown. It can be worked around by extracting the 7z and installing the rules.txt file directly.&lt;br /&gt;
* In rare cases, installing a mod that does not edit the language you have set in your settings causes your entire game to change languages. The cause of this is unknown. It can be worked around by extracting the mod and deleting the language packs (located in &amp;lt;code&amp;gt;content/Pack&amp;lt;/code&amp;gt; for WiiU or &amp;lt;code&amp;gt;romfs/Pack&amp;lt;/code&amp;gt; for Switch) you are not going to use.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You could theoretically build the program on your Steam Deck and it&#039;d use your native glibc, but most people will want to either use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11861</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11861"/>
		<updated>2024-11-12T18:24:49Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Installation */ Building on Steam Deck and macOS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
=== Installation on Steam Deck and macOS ===&lt;br /&gt;
Due to reasons outside the developers&#039; control, the Linux For Steam Deck and macOS versions currently cannot be built by them. They must be built on the system that it going to be using them. The following directions detail how to do this on macOS&lt;br /&gt;
&lt;br /&gt;
# Install Rust: you can do this by opening a terminal and running the command &amp;lt;code&amp;gt;curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh&amp;lt;/code&amp;gt; - what this does is download the &amp;lt;code&amp;gt;rustup&amp;lt;/code&amp;gt; tool for managing and building Rust applications. It will ask you to enter a number, 1-3. You want to type 1 and then hit enter.&lt;br /&gt;
# Download [https://github.com/GingerAvalanche/ukmm/archive/720eebd89c7e5f3d651e5f76db9dcac20cf9d282.zip this version of ukmm] (There is a more up-to-date version, but it contains things you don&#039;t want, because functionality was removed in order to implement it a different way, later)&lt;br /&gt;
# Extract that zip somewhere. It doesn&#039;t matter where. It could be on your desktop, if you want&lt;br /&gt;
# Go into the folder. You know you&#039;re in the folder when you see things like &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;book&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crates&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, etc in your finder window.&lt;br /&gt;
# On macOS, control-click the folder name in the path bar, and select Open in Terminal (If the path bar isn&#039;t visible, select View -&amp;gt; Show Path Bar, and then do #5). On Steam Deck, open Konsole and then use the &amp;lt;code&amp;gt;cd [path]&amp;lt;/code&amp;gt; command (replace &amp;lt;code&amp;gt;[path]&amp;lt;/code&amp;gt; with whatever is in the path/address bar in step 4)&lt;br /&gt;
# Enter the command &amp;lt;code&amp;gt;cargo build --release&amp;lt;/code&amp;gt; - wait for it to finish. This might take a while&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Go into the &amp;lt;code&amp;gt;release&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Run the file called &amp;lt;code&amp;gt;ukmm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are two methods of setup, depending on whether you are coming from BCML or are just starting out&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If you&#039;ve never used mods before, or are installing mods for the first time on a new computer, or wiped BCML, or whatever other reason, you will need to set your settings manually&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
If you&#039;re using Cemu and you installed your game/update/DLC with it, click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039;, and select the folder that contains Cemu.exe. You&#039;re done.&lt;br /&gt;
&lt;br /&gt;
Otherwise, consult the following table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: If you&#039;re using Cemu 2.0-v91 or newer and didn&#039;t install your game/update/DLC with it, click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Otherwise, open the folder with the Cemu.exe in it. In both cases, go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
* In rare cases, installing a mod from a 7z file causes any custom text it adds to not get added. The cause of this is unknown. It can be worked around by extracting the 7z and installing the rules.txt file directly.&lt;br /&gt;
* In rare cases, installing a mod that does not edit the language you have set in your settings causes your entire game to change languages. The cause of this is unknown. It can be worked around by extracting the mod and deleting the language packs (located in &amp;lt;code&amp;gt;content/Pack&amp;lt;/code&amp;gt; for WiiU or &amp;lt;code&amp;gt;romfs/Pack&amp;lt;/code&amp;gt; for Switch) you are not going to use.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You could theoretically build the program on your Steam Deck and it&#039;d use your native glibc, but most people will want to either use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11860</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11860"/>
		<updated>2024-11-12T18:11:04Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Known Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are two methods of setup, depending on whether you are coming from BCML or are just starting out&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If you&#039;ve never used mods before, or are installing mods for the first time on a new computer, or wiped BCML, or whatever other reason, you will need to set your settings manually&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
If you&#039;re using Cemu and you installed your game/update/DLC with it, click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039;, and select the folder that contains Cemu.exe. You&#039;re done.&lt;br /&gt;
&lt;br /&gt;
Otherwise, consult the following table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: If you&#039;re using Cemu 2.0-v91 or newer and didn&#039;t install your game/update/DLC with it, click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Otherwise, open the folder with the Cemu.exe in it. In both cases, go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
* In rare cases, installing a mod from a 7z file causes any custom text it adds to not get added. The cause of this is unknown. It can be worked around by extracting the 7z and installing the rules.txt file directly.&lt;br /&gt;
* In rare cases, installing a mod that does not edit the language you have set in your settings causes your entire game to change languages. The cause of this is unknown. It can be worked around by extracting the mod and deleting the language packs (located in &amp;lt;code&amp;gt;content/Pack&amp;lt;/code&amp;gt; for WiiU or &amp;lt;code&amp;gt;romfs/Pack&amp;lt;/code&amp;gt; for Switch) you are not going to use.&lt;br /&gt;
&lt;br /&gt;
If you can provide in-depth support to the developers on how to cause any of these issues, please [https://discord.gg/vPzgy5S contact Ginger on the discord]. This would go a long way toward fixing them.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You could theoretically build the program on your Steam Deck and it&#039;d use your native glibc, but most people will want to either use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Replacing_models&amp;diff=11859</id>
		<title>Help:Replacing models</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Replacing_models&amp;diff=11859"/>
		<updated>2024-11-11T18:00:02Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Apply the Rig from the Original to Your Model */ Adding the armature modifier&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Model replacement is the process of changing the shape of an entity (weapon, character, etc) to a custom shape, either created by you or by someone else. Examples of model replacements include the [https://gamebanana.com/skins/163434 Zelda] and [https://gamebanana.com/skins/163132 Linkle] replacement mods.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes you either have a model already, or will be editing one of the in-game models. It also assumes you will be replacing an in-game model, not making a new one. Pictures dealing with modeling programs are taken in 3ds Max, but similar options should be available in your program of choice.&lt;br /&gt;
&lt;br /&gt;
==Required Tools==&lt;br /&gt;
Model replacement in Breath of the Wild requires a set of tools. These tools will vary somewhat, based upon your personal preference, but the tools below are currently the most effective for properly modding the game.&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/KillzXGaming/Switch-Toolbox/releases Switch Toolbox] (Yes, even if you are using WiiU or Cemu)&lt;br /&gt;
*A 3D modeling program of your choice (common choices are 3ds Max and Blender)&lt;br /&gt;
*(optional) If you are using 3ds Max, the [https://github.com/Aaaboy97/BotW-Tools/tree/master/CSV%20Exporting CSV export] script&lt;br /&gt;
*(optional) If you are using 3ds Max, the [https://www.vg-resource.com/thread-29836.html BFRES importer] MaxScript may be helpful. (expand the &amp;quot;Wii U &amp;amp; Nintendo Switch - BFRES importer (originally by ItsEasyActually)&amp;quot; to find it)&lt;br /&gt;
*(optional) [https://github.com/Shadsterwolf/BotWUnpacker/releases BotWUnpacker]&lt;br /&gt;
&lt;br /&gt;
==Tutorial==&lt;br /&gt;
&lt;br /&gt;
===Obtaining a Rig===&lt;br /&gt;
[[File:ModelReplacement_obtainRig.png|alt=Obtaining a rig|thumb|The red box shows what to click to extract a model.]]&lt;br /&gt;
[[File:ModelReplacement VertexBuffers.png|thumb|Select the object (left) and read the vertex buffers (right)]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Export a model from the SBFRES you want to use, using Switch Toolbox. Take note of the skin count and the vertex buffers and formats.&amp;lt;/blockquote&amp;gt;A &amp;quot;rig&amp;quot; or &amp;quot;skeleton&amp;quot; is a set of &amp;quot;bones&amp;quot; that animations use. Every model is made up of several pieces: objects (which tells the game how to make the model in 3D), materials (which tell the game what the model should look like), and the rig (which tells the game how the model moves during animations). If you were to consider a door, the objects would be the rectangle for the main door and sphere of the knob, the materials would be the wood grain and brown coloring of the door and silver reflective surface of the knob, and the rig would be what tells the game that the knob rotates and the door swings inward.&lt;br /&gt;
In order to obtain a rig, you should find the SBFRES archive for the model you wish to use a rig from. Most models are contained in the game files in the content\Model folder. Once you&#039;ve chosen your SBFRES, copy it to a safe place away from the game files, so you don&#039;t accidentally modify any of the original game&#039;s files.&lt;br /&gt;
&lt;br /&gt;
Open Switch Toolbox, select File -&amp;gt; Open from the toolbar, and select your SBFRES. On the left side, expand the only available option, and then expand Models. Right-click on the model you need and select Export. If there are multiple options, pick as many as you need. For example, if you are replacing an entire armor set, you would export all three models, but if you were only replacing one piece of the armor, you would export just that piece. Export it as a DAE file. Switch Toolbox will ask if you want to export textures. It&#039;s not needed, but it doesn&#039;t hurt.&lt;br /&gt;
&lt;br /&gt;
Next, expand the model(s) you are exporting, expand the Objects folder, and select each object in turn. On the right side of Switch Toolbox, you&#039;ll see a collapsed section labeled Vertex Buffer. Expand it. In this section, you will see several important things: the skin count, the vertex buffers, and the buffer formats. It&#039;s not important to know what all of these things mean if you don&#039;t wish, but take note of what they are for every object that you&#039;ll be replacing. Screenshots or a text file work well for saving this info. It will be important later.&lt;br /&gt;
&lt;br /&gt;
Note: if you wish to export all the models in an SBFRES quickly, right-click on the Models folder instead and select Export All.&lt;br /&gt;
&lt;br /&gt;
===Import the Original to Your Workspace===&lt;br /&gt;
[[File:ModelReplacement_importModel.png|alt=Import the Original Model|thumb|Click on 1 to expand the menu, then click on 2 (or highlight 2 and click on 3) to import. Blender&#039;s layout for this step is almost identical.]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Import the DAE into a shared workspace with your model, so that the object list has your objects, the original objects, and the original skeleton.&amp;lt;/blockquote&amp;gt;Open your 3D modeling program of choice, and bring your replacement model into the workspace. Then, go to File -&amp;gt; Import, and import the DAE model you extracted from the SBFRES. If you exported multiple models, only import the model you are currently working with. For example, if you exported an entire armor, you should only import the legs (or whatever part you are working with). Once you have finished the &amp;quot;Export Your Rigged Model&amp;quot; step, return here to repeat the process for other models.&lt;br /&gt;
You may see errors when you import with 3ds Max - this is normal, you can ignore them. Blender suppresses these errors, so you won&#039;t see them.&lt;br /&gt;
Combine the original model&#039;s objects, roughly along the lines of how your objects are. For example, if the original model has separate fingers, hands, and arms, and your model has separate hands and arms, combine the fingers with the hands. Or if your model is only a single object, combine all the original model&#039;s objects into a single object. In 3ds Max, you can do this with Command Panel -&amp;gt; Modify -&amp;gt; Edit Geometry -&amp;gt; Attach, and selecting the object to attach the selected object to. In Blender, you can do this by selecting multiple objects with Ctrl+click in Object mode, then right-clicking and selecting Join.&lt;br /&gt;
&lt;br /&gt;
In your object list, you will now see the original model&#039;s objects along with your objects. You will also see the original model&#039;s skeleton, which is important to have and you should generally not touch it.&lt;br /&gt;
&lt;br /&gt;
===Align Your Model With the Original===&lt;br /&gt;
[[File:ModelReplacement_alignModel.png|alt=Align Your Model|thumb|Select your model (1), select the mesh (2), select the type of thing to modify (3), and select how to modify it (4).]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Get your objects to match up with the original ones, as close as possible. Anything delicate is important: feet, hands/fingers, waists, necklines, handles of weapons, etc.&amp;lt;/blockquote&amp;gt;In all likelihood, your model will differ greatly from the original you just imported. Using the Move, Rotate, and Scale tools, make sure your model lines up with the original&#039;s - the closer the better.&lt;br /&gt;
There are also plenty of tools in 3ds Max&#039;s Edit Poly/Mesh modes, or Blender&#039;s Sculpt mode for helping move the model around. In 3ds Max, you can right click on the Edit Mesh/Poly to convert between them. In Blender, one of Sculpt mode&#039;s tools is the Pose tool, which is quite good for moving limbs into place if you&#039;re modifying an armor.&lt;br /&gt;
&lt;br /&gt;
Rename your objects to something close to the original&#039;s, so that you can easily figure out which of your objects corresponds to which original object. This will help both during this step and later, during the &amp;quot;Replace the Original Model with Yours&amp;quot; step. For example, if you have an object for hair, it&#039;s encouraged to name it &amp;lt;code&amp;gt;Hair_###__Mt_Hair_###&amp;lt;/code&amp;gt;, where ### is the number of the armor you might be working with, and Mt_Hair_### is the name of the material you want to use with it. Including the name of the material in the object is helpful so that when you need to reassign materials in Switch Toolbox (which you may have to do often, depending on how much trouble you have) you will be able to tell, straight away, which object needs which material.&lt;br /&gt;
&lt;br /&gt;
Note: If you need help with this step, there are many great tutorials on YouTube.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Apply the Rig from the Original to Your Model===&lt;br /&gt;
[[File:ModelReplacement_copyRig.png|alt=Copy the Rig|thumb|Select the original object (1), right click on the Skin modifier and copy it (2), select your replacement object (3), and right click in the modifier area and paste the Skin modifier there (4).]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Apply the rig from the original object(s) to your object(s). Set maximum limit for bones to affect vertices to the object&#039;s skin count.&amp;lt;/blockquote&amp;gt;For 3ds Max: Select the original object&#039;s Skin modifier in the modifier list, then copy it. Select your object, then paste the rig onto it. If all has gone well, you&#039;re done with this step. 3ds Max uses one or more of a series of algorithms to map the rig of one object onto the rig of another object automatically, and it&#039;s generally pretty good about it.&lt;br /&gt;
For Blender:&lt;br /&gt;
* Click and drag the object on top of the original object&#039;s Armature (the one with the orange upside-down triangle next to it), while holding shift and alt. This will assign the object to that armature, instead. Then, select the object in Object mode, go to the Modifiers tab (which looks like a diagonal wrench, in the bottom right area), and in the box that says Armature at the top, click on the box next to Object, and select the armature of the original model. If there is no box that says Armature at the top, click on Add Modifier and select Armature. There is now a box that says Armature at the top.&lt;br /&gt;
* Select your object in Object mode. In the bottom right, click on the upside-down green triangle. If there is anything in the Vertex Groups tab, delete it all with the - button. Then, Ctrl+click the original object that most closely matches its location. Go into Weight Paint mode, click on the Weights button in the top left, and select Transfer Weights. In the bottom left, expand the new small tab there, if it is not already. For Vertex Mapping, select Nearest Face Interpolated. For Source Layers Selection, select By Name. For Destination Layers Matching, select All Layers.&lt;br /&gt;
&lt;br /&gt;
After applying the rig onto an object, set the limit for the number of bones to affect each vertex to 4. In 3ds Max, you can do this by scrolling the modifier rollout on the right side down to the bottom, expanding Advanced Parameters, and setting the number in the Bone Affect Limit box. In Blender, you can do it with the Limit Total option, found right under the Transfer Weights option described earlier. Other programs will have different ways of setting this limit.&lt;br /&gt;
&lt;br /&gt;
You also want your weights to be normalized. In 3ds Max, the weights are normalized by default. In Blender, in Weight Paint mode, you need to click on the screwdriver-and-wrench icon in the middle of the right side, expand Options, and select Auto Normalize.&lt;br /&gt;
&lt;br /&gt;
If you get the model into the game and the animations deform the model in strange ways, you&#039;ll need to come back and manually adjust the rigging, which is a very time-consuming process, documented in a number of excellent tutorials on YouTube.&lt;br /&gt;
&lt;br /&gt;
===Delete the Original Model&#039;s Objects===&lt;br /&gt;
[[File:ModelReplacement_deleteObjects.png|alt=Delete Original Objects|thumb|The workspace has been cleared of the painted object, leaving only the custom, unpainted one and the skeleton.]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Delete the original model&#039;s objects and your model&#039;s skeleton (if any), leaving just your objects and the original skeleton. Rename your objects.&amp;lt;/blockquote&amp;gt;Delete all the objects from your workspace that you don&#039;t want to be imported to the game. This includes any secondary objects not part of your final model, your model&#039;s skeleton (but not the original model&#039;s skeleton), and the original model&#039;s objects.&lt;br /&gt;
It&#039;s also a good idea to rename the your objects to names that describe what they are for. In Blender, renaming the upside-down orange triangle doesn&#039;t do it, you have to expand that and rename the upside-down green triangle. Though this isn&#039;t strictly necessary to get the replacement model to work, it can really help smooth things out later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Export the Model from Your Modeling Program===&lt;br /&gt;
[[File:ModelReplacement_exportModel.png|alt=Export Model|thumb|212x212px|Select the File menu (1), then click on export (2), or hover over it and click on Export (3).]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Fairly simple, export your model. DAE is probably best.&amp;lt;/blockquote&amp;gt;Using File -&amp;gt; Export, export your model as whatever type you wish. Switch Toolbox, as of writing this guide, only handles DAE properly. It has an option for FBX as well, and as it receives updates regularly, FBX or other formats may become properly handled at any time.&lt;br /&gt;
It also has an option for importing via CSV (which is not a model type) that is explained in the optional step, below. CSV is only recommended if your exporter cannot export DAE or FBX for whatever reason.&lt;br /&gt;
&lt;br /&gt;
Switch Toolbox now handles DAE&#039;s from Blender just fine, so there is no longer any need to use Autodesk FBX Converter, as was originally described here.&lt;br /&gt;
&lt;br /&gt;
====Export the Model using CsvExportRewrite====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: In 3ds Max, use MAXScript -&amp;gt; Run Script... to run CsvExportRewrite.ms and save the model data as a CSV file.&amp;lt;/blockquote&amp;gt;Some people - the author included - have trouble with 3ds Max crashing when it tries to export models. For us, there is a MAXScript that exports the model as text, which Switch Toolbox can also use. In the toolbar use the MAXScript menu and select Run Script. Select the CsvExportRewrite script. A small box will pop up with a list of all the objects in your workspace. It has options to &amp;quot;Copy UVs&amp;quot; and &amp;quot;Explicit Normals&amp;quot; for each object. Copy UVs is disabled by default, and Explicit Normals is enabled by default. These settings should suffice, though if you end up with strange textures in game, try re-exporting with Copy UVs checked.&lt;br /&gt;
When you select export, 3ds Max will stop responding for a little bit as it exports, then it will respond again. When it responds, check the csv file it created. If it is empty, go through all of your objects, collapse or delete any modifiers that aren&#039;t the Skin modifier, Edit Normals modifier, or Editable Mesh, then select the Skin modifier for every object so that the modifiers background is dark grey (not blue), and then export again to a different file. It will fail again if you try to export to an empty file it has previously created, unless you&#039;ve restarted 3ds Max since it created that file.&lt;br /&gt;
&lt;br /&gt;
===Import the Model Using Switch Toolbox===&lt;br /&gt;
[[File:ModelReplacement_importOptions.png|thumb|The list of import options Switch Toolbox displays.]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Replace the original model in Switch Toolbox.&amp;lt;/blockquote&amp;gt;If you didn&#039;t leave Switch Toolbox open, reopen it now, and reopen the SBFRES you got the original model from. Right-click on the model that you want to replace, select Replace, and select the file you exported from your modeling program.&lt;br /&gt;
A dialog window of import options will appear. The picture to the right contains settings for most armors, but you should generally match the formats you copied down in the first step of this tutorial.&lt;br /&gt;
&lt;br /&gt;
Red box: Generally leave these unchecked. If your textures look all funky, try reimporting with Flip UVs. If you import and the model is not looking at you, but is instead face-down, reimport with Rotate -90 degrees checked. If you import and the model is face-up, use Rotate 90 degrees. If you modified the skeleton, use Import Bones. (It&#039;s possible that skeletons exported from Blender may not import correctly if you don&#039;t export as FBX.)&lt;br /&gt;
&lt;br /&gt;
Orange box: Keep Original Skin Count will be disabled by default in order to help avoid model stretching issues, but if your weights did not change then you can check this box to help solve some issues. Always check Map Original Materials. If you are importing from DAE or FBX, then you should check Use Original Attributes and Use Original Attribute Formats. If you checked those boxes and changed the names of the objects from the original model, pay special attention to the teal box instructions below. If you check those two boxes, then you can ignore the green and yellow box instructions below.&lt;br /&gt;
&lt;br /&gt;
Green box: Check all the boxes corresponding to the buffer types that you took note of in the first step of this process, &amp;quot;Obtaining a Rig.&amp;quot; If any object has one of those buffer types, check the box.&lt;br /&gt;
&lt;br /&gt;
Yellow box: Select formats from the dropdowns that correspond to the formats you took note of in the first step of this process, &amp;quot;Obtaining a Rig.&amp;quot; If the UVs format was Format_16_16_UNorm and the dropdown does not have that option, Format_16_16_SNorm is fine.&lt;br /&gt;
&lt;br /&gt;
Teal box: If you are importing from DAE or FBX, then the left side will have the objects you are importing, and the right side will have the objects you are replacing. This will let you know whether or not Map Original Materials from the orange box will actually do anything, and is one of the reasons why you renamed your objects to the same name as the originals. If you did not rename your objects to the same names as the originals in your modeling program, then you may rename them to the original object names here by selecting them on the left side and correcting their names in the text line above these two boxes. This will save you the trouble of having to set the attributes and formats manually (the green and yellow boxes). The CSV import option does not support Map Original Materials at the time of writing, though it may do so in the future.&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve set all your import options, switch back to the Model Settings tab and hit Save.&lt;br /&gt;
&lt;br /&gt;
===Verify the Model Looks Good and Save===&lt;br /&gt;
[[File:ModelReplacement_verifyStage.png|alt=Verify|thumb|Verify that the model looks good in the viewer (2) and that the right material (3) is assigned to each object (1)]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Summary: Check the model in the viewer for dropped weights, and check the material assignments. If it all looks good, save it.&amp;lt;/blockquote&amp;gt;Double check the model in the viewer to ensure that it has imported correctly. If it is face-down on its front or face-up on its back, reimport it. If pieces of the model are stretching to the &amp;quot;origin&amp;quot; (the center of the viewer space), then some vertices weren&#039;t properly weighted and you need to find them and re-rig them. If the model is wavy, where it should be straight, then you probably imported with 16 bit or 32 bit weights, and need to reimport with Blend Weights format Format_8_8_8_8_UNorm.&lt;br /&gt;
Also verify that the material assigned is the correct one. If you imported from a CSV file, these will almost certainly be wrong. This step is another reason we renamed the objects to the original names: the original names have the material name at the end, so there isn&#039;t confusion as to what object owns what material. A single material may be assigned to multiple objects, but any object may only have a single material.&lt;br /&gt;
&lt;br /&gt;
Lastly, verify that the vertex buffers list for each object contains all of the same entries as the original object did (you should still have the list from the beginning of this process). If any buffers are missing, reimport the model and check the boxes for those buffers. If they are still missing, your model format does not contain that information (OBJ) and you should use a different format. If there are buffers that the original object did not have, select them and click Remove, then click Yes when it asks if you&#039;re sure.&lt;br /&gt;
&lt;br /&gt;
Once all that is done, you&#039;re all set. Hit save. Your SBFRES now has your custom model and is ready to be loaded into the game!&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
====Does this work for TitleBG.pack models?====&lt;br /&gt;
Yes. There&#039;s no functional difference between resident actors (those in TitleBG.pack, denoted by their presence in Bootup.pack&#039;s ResidentActors.sbyml file) and normal actors, save that resident actors are always loaded in memory, so they can be displayed without loading delays. This also means that if you&#039;ve done something wrong, you&#039;ll notice the crashing at the title menu or first loading screen, instead of during gameplay.&lt;br /&gt;
&lt;br /&gt;
===Object Placement Issues===&lt;br /&gt;
&lt;br /&gt;
====My eyes are in the model&#039;s head, but they aren&#039;t in game!====&lt;br /&gt;
Splitting the eyes into two different objects may help to fix this. If not...&lt;br /&gt;
&lt;br /&gt;
Eyes are very strange. Link&#039;s original eyes are placed correctly, but exporting them will cause them to be placed incorrectly in any 3d modeling program, and reimporting unchanged eyes will cause them to appear in a different place. However, the game will load them as if they were in the correct place. It is generally not advised to move the eyes unless absolutely necessary, as there is no single way to make them work consistently.&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11858</id>
		<title>Help:Tools/UKMM</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Tools/UKMM&amp;diff=11858"/>
		<updated>2024-11-08T04:05:38Z</updated>

		<summary type="html">&lt;p&gt;Ginger: Tool Infobox license acronym letter order&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tool infobox&lt;br /&gt;
| name = UKMM&lt;br /&gt;
| authors = Nicene Nerd, Ginger&lt;br /&gt;
| source = https://github.com/GingerAvalanche/ukmm&lt;br /&gt;
| license = GPLv3+&lt;br /&gt;
| written_in = Rust&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
UKMM (&#039;&#039;&#039;UK&#039;&#039;&#039;ing &#039;&#039;&#039;M&#039;&#039;&#039;od &#039;&#039;&#039;M&#039;&#039;&#039;anager) is an updated mod manager for BotW. It is used to install and uninstall mods, and solves many mod conflicts. It was created to solve bugs that fundamentally couldn&#039;t be solved by BCML, due either to limitations in the Python programming language or early design choices in BCML.&lt;br /&gt;
&lt;br /&gt;
==BCML or UKMM?==&lt;br /&gt;
BCML was designed to generate RSTB entries, and grew over the years to become something much larger and more clunky than was originally intended. UKMM was built from the ground up, by the same devs who wrote BCML, to be a complete mod manager for all forms of BotW, so it performs much better.&lt;br /&gt;
&lt;br /&gt;
Which one should you use? Except for a few very rare exceptions, you should always use UKMM.&lt;br /&gt;
&lt;br /&gt;
===Why use UKMM?===&lt;br /&gt;
# It&#039;s easier to install&lt;br /&gt;
# It gives you more control over where your mods are deployed and how they&#039;re deployed there&lt;br /&gt;
# It doesn&#039;t force a remerge every single time you change anything. You can install 30 mods with UKMM and choose to only merge one time, at the very end, if you want. BCML would go through a long, full remerge process every single time, increasing the amount of time you spent not playing&lt;br /&gt;
# It doesn&#039;t need to fully remerge every single file when you install something. BCML could never manage to merge only the files required by changed mods without breaking something. UKMM can do it just fine, so installing small mods doesn&#039;t take 2 minutes if you have a large mod installed&lt;br /&gt;
# It merges any given file faster than BCML can merge the same file&lt;br /&gt;
# It merges more file types, meaning mods are more compatible than before&lt;br /&gt;
# It fixes several things about animation and AI merging, increasing compatibility between mods that edit those things.&lt;br /&gt;
# It generates proper RSTB entries for all assets, resulting in no crashes or panic blood moons related to file size (Some panic blood moons may remain if you use certain mods that increase the system load by a large amount, but even these mods will be more stable with UKMM)&lt;br /&gt;
# It supports dumps as WUA files if you&#039;re using Cemu&lt;br /&gt;
# It is a lot more strict with the files it accepts than BCML is, which means that you are far less likely to see an infinite loading screen or crash. Instead, you&#039;ll see an error in UKMM which will (almost always) tell you exactly what is wrong&lt;br /&gt;
&lt;br /&gt;
===When should I not use UKMM?===&lt;br /&gt;
# You&#039;re using Dark Army Resurrection&lt;br /&gt;
# You&#039;re using the online multiplayer mod&lt;br /&gt;
In all other cases, use UKMM&lt;br /&gt;
&lt;br /&gt;
===But I found a bunch of tutorials for BCML!===&lt;br /&gt;
That&#039;s because BCML &#039;&#039;needed&#039;&#039; them, because it was difficult to set up.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Unlike BCML, installing UKMM is simple&lt;br /&gt;
# Download the executable archive for your system from [https://github.com/GingerAvalanche/ukmm/releases the current UKMM releases page]&lt;br /&gt;
# Extract the executable from the archive to just about anywhere on your computer&lt;br /&gt;
# Run the executable&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
There are two methods of setup, depending on whether you are coming from BCML or are just starting out&lt;br /&gt;
&lt;br /&gt;
===Importing from BCML===&lt;br /&gt;
If you previously used BCML and it worked for you, congratulations! Your job is easy. Go to the Settings tab, click &#039;&#039;&#039;Migrate from BCML&#039;&#039;&#039;. Wait for it to finish. There you go! All done!&lt;br /&gt;
&lt;br /&gt;
===Manual Setup===&lt;br /&gt;
If you&#039;ve never used mods before, or are installing mods for the first time on a new computer, or wiped BCML, or whatever other reason, you will need to set your settings manually&lt;br /&gt;
&lt;br /&gt;
====General====&lt;br /&gt;
You should have a [[Help:Dumping_games|dump]] of your game on your computer. If you do not, go dump your game and come back.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Current Mode&lt;br /&gt;
|Determines which layout of the folders and files UKMM will use&lt;br /&gt;
|Wii U console or Cemu? Use Wii U. In all other cases, use Switch.&lt;br /&gt;
|-&lt;br /&gt;
|Storage Folder&lt;br /&gt;
|Where UKMM stores mod data, including mods, profiles, merged data, pending deployment data, etc.&lt;br /&gt;
|Leave it as the default unless you know what you&#039;re doing.&lt;br /&gt;
|-&lt;br /&gt;
|Use System 7z&lt;br /&gt;
|Uses the version of 7zip installed to your computer, if one is present. Recommended, because the actual 7zip program is faster than UKMM&#039;s internal 7zip code.&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Show Changelog&lt;br /&gt;
|Show a summary of recent changes after UKMM updates&lt;br /&gt;
|Checked&lt;br /&gt;
|-&lt;br /&gt;
|Language&lt;br /&gt;
|Which language pack UKMM merges mod text into&lt;br /&gt;
|Whatever language you have set in your game/emulator. Make sure it is both the same language (the lower-case letters) and region (the upper-case letters).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Game Dump====&lt;br /&gt;
If you&#039;re using Cemu and you installed your game/update/DLC with it, click &#039;&#039;&#039;Import Cemu Settings&#039;&#039;&#039;, and select the folder that contains Cemu.exe. You&#039;re done.&lt;br /&gt;
&lt;br /&gt;
Otherwise, consult the following table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Game Dump (Only WiiU)&lt;br /&gt;
|How your game files are stored, as an unpacked collection of loose files or as a WUA&lt;br /&gt;
|Self-explanatory&lt;br /&gt;
|-&lt;br /&gt;
|Base Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Base Game dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your game dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|Update Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your Update dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; inside your update dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|DLC Folder (Switch or WiiU Unpacked)&lt;br /&gt;
|Where you store your DLC dump.&lt;br /&gt;
|The folder named &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;, inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder in your DLC dump. Should look like &amp;lt;code&amp;gt;C:/some/path/content/0010&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;C:/some/path&amp;lt;/code&amp;gt; is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|WUA Path (Only WiiU WUA)&lt;br /&gt;
|Where you store your game WUA.&lt;br /&gt;
|The path to your BotW WUA file. This is something only you know.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If using Cemu, the three unpacked path folders can be found by right-clicking on the game in the game list and selecting the appropriate option. For Base and Update, use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder. For DLC, use the &amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt; folder inside the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====Deployment====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Setting&lt;br /&gt;
!Description&lt;br /&gt;
!What you should set it to&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Method&lt;br /&gt;
|How UKMM deploys the mods after they&#039;ve been merged&lt;br /&gt;
|Are you on a console? Select Copy. Are you on an emulator? Select Symlink. Do you know what Hard Links mean already? Select that if you think they&#039;re superior to Symlinks.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy Layout&lt;br /&gt;
|Whether or not UKMM includes a personalized folder when it merges mods out&lt;br /&gt;
|Using with Atmosphere on a Switch or with the Atmosphere mod location for Switch emulators? Without Name. Otherwise, use With Name.&lt;br /&gt;
|-&lt;br /&gt;
|Auto Deploy&lt;br /&gt;
|Whether UKMM will deploy mods automatically when you click Apply to merge them&lt;br /&gt;
|Is your Output Folder set to a detachable drive like an SD card? Unchecked. Otherwise, checked.&lt;br /&gt;
|-&lt;br /&gt;
|Deploy rules.txt (Only WiiU)&lt;br /&gt;
|Deploys a manifest file which allows Cemu to detect the UKMM files&lt;br /&gt;
|Using with Cemu? Checked. Otherwise, unchecked.&lt;br /&gt;
|-&lt;br /&gt;
|Output Folder&lt;br /&gt;
|Where to deploy the merged mod files to, for you to use&lt;br /&gt;
|See the following list&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
When you find the correct folder to use as your output folder, click in the address bar to highlight the path. Ctrl-C to copy the path. Ctrl-V to paste the path in the Output Folder.&lt;br /&gt;
&lt;br /&gt;
Output folder locations:&lt;br /&gt;
* SD cards for WiiU: &amp;lt;code&amp;gt;X:\sdcafiine\00050000101C9?00&amp;lt;/code&amp;gt; (where X is the SD card drive letter, and ? is 4 for the US version, 5 for the EU version, 3 otherwise)&lt;br /&gt;
* SD cards for Switch: &amp;lt;code&amp;gt;X:\atmosphere\contents&amp;lt;/code&amp;gt; (where X is the SD card drive letter). Do not put a title ID, UKMM adds title IDs in Switch mode&lt;br /&gt;
* Cemu: If you&#039;re using Cemu 2.0-v91 or newer and didn&#039;t install your game/update/DLC with it, click &#039;&#039;&#039;File -&amp;gt; Open Cemu folder&#039;&#039;&#039;. Otherwise, open the folder with the Cemu.exe in it. In both cases, go into the folder called &amp;lt;code&amp;gt;graphicPacks&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
* RyujiNX: Right-click on BotW in the game list -&amp;gt; Open Mod directory. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder. Use this folder.&lt;br /&gt;
* Yuzu (and derivatives): Right click on BotW in the game list -&amp;gt; Open Mod Data Location. In the folder that opens, go up one folder, to the &amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;. Use this folder.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
[[File:Ukmm-1.png|thumb|right|UKMM 0.15.0&#039;s UI]]&lt;br /&gt;
All tabs can be moved around and docked in one of the 4 quarters of the program, which can be resized.&lt;br /&gt;
* &#039;&#039;&#039;File&#039;&#039;&#039;: Contains the first method for installing mods. Also a way to exit the program.&lt;br /&gt;
* &#039;&#039;&#039;Tools&#039;&#039;&#039;: Contains various options related to the mod files: perform a full remerge, cancel pending changes, or open various folders set in the Settings tab.&lt;br /&gt;
* &#039;&#039;&#039;Window&#039;&#039;&#039;: Contains check boxes for every tab. If you close a tab, this is where you can reopen it.&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Contains the About window and a link to the UKMM documentation, which contains in-depth information about just about everything involved with UKMM.&lt;br /&gt;
* &#039;&#039;&#039;Mods tab&#039;&#039;&#039;: Contains all of your installed mods. Columns can be clicked to change sort type and direction. Boxes can be (un)checked to (de)activate mods.&lt;br /&gt;
* &#039;&#039;&#039;Package tab&#039;&#039;&#039;: Allows you to package a loose file mod as a UKMM zip. NOTE: UKMM zip layout is subject to change on minor version updates, so please be wary of distributing UKMM zips, as they may become uninstallable in future versions. (We believe we&#039;re done changing the layout, but there may be unforeseen issues in the future)&lt;br /&gt;
* &#039;&#039;&#039;Settings tab&#039;&#039;&#039;: See the above section for explanations of everything in here.&lt;br /&gt;
* &#039;&#039;&#039;Info tab&#039;&#039;&#039;: Contains mod description info. Also contains a button for re-selecting options without reinstalling, for mods that include options.&lt;br /&gt;
* &#039;&#039;&#039;Install tab&#039;&#039;&#039;: You can either select a mod in the file picker, or use the button to select a mod directly via the classic dialog.&lt;br /&gt;
* &#039;&#039;&#039;Log tab&#039;&#039;&#039;: Provides in-depth info about everything that happens when UKMM does anything related to mod files. Also contains information about any errors, if they happen.&lt;br /&gt;
* &#039;&#039;&#039;Deploy tab&#039;&#039;&#039;: Contains information about the deploy method and folder, and a button to deploy merged mods to the output folder. NOTE: Button only appears if Auto Deploy is turned off.&lt;br /&gt;
* &#039;&#039;&#039;Pending Changes&#039;&#039;&#039;: Review file changes if you&#039;d like, use the Apply button to merge. NOTE: You don&#039;t have to merge every time you change anything. Change whatever you want to change, then Apply once.&lt;br /&gt;
&lt;br /&gt;
==No, really, how do I use it?==&lt;br /&gt;
[[File:Ukmm-2.png|300px]] [[File:Ukmm-3.png|300px]] [[File:Ukmm-6.png|300px]] [[File:Ukmm-4.png|300px]] [[File:Ukmm-5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
* Certain mods distributed as BNPs are incompatible with UKMM, due to how they were made. A fix is currently being worked on.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===What&#039;s the difference between merge/Apply and Deploy?===&lt;br /&gt;
&amp;quot;Apply&amp;quot; and &amp;quot;merge&amp;quot; (or, &amp;quot;applying the merge&amp;quot;) both mean to take the mods you have installed and combine them into one single mod. &amp;quot;Deploy&amp;quot; means to take the combined files and put them in the output folder.&lt;br /&gt;
&lt;br /&gt;
UKMM splits these two concepts for multiple reasons. Maybe you want to merge a new set of mods and make sure there are no merge errors before you overwrite your deployed files. Maybe you have your output folder set to your SD card and want to merge while you look for your SD card, then plug it in to deploy. There are many reasons you might want these two operations separated.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want the operations separated, turn the Auto Deploy setting on, and it will always deploy right after merging (similar to what BCML did)&lt;br /&gt;
&lt;br /&gt;
===UKMM won&#039;t run on Linux!===&lt;br /&gt;
glibc recently updated, which caused a whole big headache since we can&#039;t build against older versions. If you&#039;re on a system where you can upgrade, then perform a full system upgrade. (You probably want to do that periodically anyway) UKMM should work just fine after that.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on Steam Deck, you&#039;re kinda outta luck, since steamOS uses a static distro of Arch Linux, so it can&#039;t upgrade. You could theoretically build the program on your Steam Deck and it&#039;d use your native glibc, but most people will want to either use Wine to run the Windows version, or use a different computer.&lt;br /&gt;
&lt;br /&gt;
===Do I really need a game dump?===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
===Do I REAAAAAALLY need a game dump???===&lt;br /&gt;
Still yes.&lt;br /&gt;
&lt;br /&gt;
===Why do I need a game dump?===&lt;br /&gt;
BotW stores almost all of its files inside archives. Any given file you can look at using your file explorer will most likely contain dozens of files or more, each of which can contain hundreds of parameters inside it.&lt;br /&gt;
&lt;br /&gt;
In order to properly merge mods, UKMM (and BCML before it) needs to know what the mod actually changes. So it has to compare the mod with the vanilla files in order to determine what is different, so that it can merge only those differences.&lt;br /&gt;
&lt;br /&gt;
It also only stores those differences - and a mod you download from the internet may or may not be &#039;&#039;only&#039;&#039; a list of differences. UKMM needs the dump in order to recreate the actual mod files from those differences, once the mod changes have been merged.&lt;br /&gt;
&lt;br /&gt;
There is no functional way around this. Every single mod manager does this on &#039;&#039;some&#039;&#039; level. Cyberpunk 2077 mods must be merged with game files. No Man&#039;s Sky mods must be merged into game files. Even Bethesda plugins contain only changes, which their games merge directly. Any games in the Unreal Engine do this with pak files, as well. There are only 2 reasons BotW is harder than any of these other games: it doesn&#039;t have an internal mechanism for merging, and it is normally on a console so there is no specific location on your computer where the tool can expect to find it.&lt;br /&gt;
&lt;br /&gt;
===Where is my game dump?===&lt;br /&gt;
I don&#039;t know. Nobody other than you knows. The guide gives possible locations where it can be found, but at the end of the day, you&#039;re the one who put it on your computer, so you&#039;re the one who knows where it is.&lt;br /&gt;
&lt;br /&gt;
===But I really don&#039;t know where my game dump is!===&lt;br /&gt;
Shouldn&#039;t be that hard to find, considering you chose exactly where, on your computer, it went when you dumped it. The only &#039;&#039;real&#039;&#039; reason for you not to know where the dump is, is if you pirated it. And piracy is not supported, so good luck!&lt;br /&gt;
&lt;br /&gt;
===Why aren&#039;t all BNPs compatible?===&lt;br /&gt;
Some BNPs were made for BCML by directly editing log files, or by adding files to a game dump before generating the BNPs. Neither of these things were ever supported for BCML, and only worked by accident. Work is in progress to fix this in UKMM, but until then, certain BNPs cannot be installed with UKMM. If the mod has a regular graphic pack or loose file version, install that instead. Otherwise, bug the mod author about making their mods correctly.&lt;br /&gt;
&lt;br /&gt;
===Why is UKMM so hard to use?===&lt;br /&gt;
We&#039;ve received this feedback quite a bit, but nobody has ever been able to explain exactly &#039;&#039;what&#039;&#039; is hard to use about it, so we&#039;ve never had any idea what to fix. If you have concrete suggestions about how to make it easier to use, please tell us [https://discord.gg/vPzgy5S on the discord].&lt;br /&gt;
&lt;br /&gt;
===UKMM&#039;s UI sucks! It makes me want to kill my mother!===&lt;br /&gt;
Believe it or not, yes, this is &#039;&#039;actual&#039;&#039; feedback we&#039;ve received.&lt;br /&gt;
&lt;br /&gt;
BCML&#039;s UI was based on React, a JavaScript UI framework designed for websites. UKMM&#039;s UI is based on egui, a functional UI framework designed for utilitarian programs. UKMM will likely never look as flashy as BCML did. Instead, it will look much like most other mod managers and computer programs do. We&#039;re sorry, but we take no responsibility for any harm that comes to any mothers.&lt;br /&gt;
&lt;br /&gt;
===Why did you write this program in Rust? Rust is the product of Lovecraftian madmen!===&lt;br /&gt;
Yes, this was also actual feedback.&lt;br /&gt;
&lt;br /&gt;
Rust is a fairly fast and easy-to-use language that is based heavily on C++, which a lot of the code libraries we needed to use were written in, so we could access the C++ code easily. C# was another choice, but it would have been more difficult to use existing code libraries.&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Help:Using_mods&amp;diff=11857</id>
		<title>Help:Using mods</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Help:Using_mods&amp;diff=11857"/>
		<updated>2024-11-08T00:17:08Z</updated>

		<summary type="html">&lt;p&gt;Ginger: /* Installing mods using UKMM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome, players! This article will walk you through setting up BotW to play with mods. There are three different platforms you can play on:&lt;br /&gt;
&lt;br /&gt;
* Wii U console&lt;br /&gt;
* Cemu, the Wii U emulator, on your computer&lt;br /&gt;
* Switch console&lt;br /&gt;
&lt;br /&gt;
Almost all Wii U mods should work on both the console and Cemu, but most Switch mods aren&#039;t cross-compatible. In addition, many mods are only compatible with version 1.5.0 of BotW.&lt;br /&gt;
&lt;br /&gt;
Note that any mods which edit any of the same files as each other will probably be incompatible and cause issues. Sometimes, mods that edit different files can also be unexpectedly incompatible. If you are using multiple mods and you find glitches, please figure out which mod / combination of mods is causing the issue before reporting it to the mod creator(s).&lt;br /&gt;
&lt;br /&gt;
== Wii U Console ==&lt;br /&gt;
&lt;br /&gt;
=== Setting up homebrew ===&lt;br /&gt;
Follow [https://wiiu.hacks.guide/#/archive/tiramisu/sd-preparation this guide] to set up your Wii U console to use homebrew software.&lt;br /&gt;
&lt;br /&gt;
Note: SDcafiine on Aroma is broken, it will cause performance issues and unexpected crashes. Please follow the following instructions for Tiramisu, and use the link above for more informations about installing Tiramisu.&lt;br /&gt;
&lt;br /&gt;
=== Setting up WUPS SDCafiine ===&lt;br /&gt;
SDCafiine is a Wii U homebrew program that will load modded game files from your SD card. The classic version has a history of serious stability problems, as the program eventually unloads from memory, and game files begin to revert to their un-modded state. An alternative version designed for the Wii U Plugin System (WUPS) is &#039;&#039;much&#039;&#039; more stable and does not usually unload, so it is recommended.&lt;br /&gt;
&lt;br /&gt;
# Download the latest nightly release of the Wii U Plugin Loader from [https://github.com/Maschell/WiiUPluginLoader/releases here].&lt;br /&gt;
# Extract the contents of the .zip into the root of your SD card.&lt;br /&gt;
# Download the latest WUPS nightly of SDCafiine from [https://github.com/Maschell/SDCafiine/releases/tag/SDCafiine-WUPS-v1.4-nightly-67aa461 here].&lt;br /&gt;
# Extract the contents of the .zip into the root of your SD card.&lt;br /&gt;
# Create a new folder in the root of your SD Card, named &amp;lt;code&amp;gt;sdcafiine&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Within that folder, create a new folder with the name of your game&#039;s Title ID. On Wii U, the JP version of BotW uses &amp;lt;code&amp;gt;00050000101C9300&amp;lt;/code&amp;gt;, the US version uses &amp;lt;code&amp;gt;00050000101C9400&amp;lt;/code&amp;gt;, and the EU version uses &amp;lt;code&amp;gt;00050000101C9500&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Within that folder, you can create any number of folders named after the mods you want to use. When you boot the game, a menu will appear allowing you to select one to use.&lt;br /&gt;
# Inside each of those folders, create a folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;. Your mod files will go in here. (Mods will often include a &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder already to make things clear. If using BCML, this is where you will put the contents of the exported BCML pack.)&lt;br /&gt;
&lt;br /&gt;
To use mods:&lt;br /&gt;
# Run the Wii U Plugin Loader option from the Homebrew Launcher&lt;br /&gt;
# Tick the SDCafiine plugin on and press &#039;&#039;&#039;+&#039;&#039;&#039; to Apply Patches.&lt;br /&gt;
# Back at the Wii U menu, launch BOTW.&lt;br /&gt;
# If you have only one mod, it will load automatically. If there are multiple mods, you will be prompted to select one to use.&lt;br /&gt;
&lt;br /&gt;
== Cemu Emulator ==&lt;br /&gt;
&lt;br /&gt;
=== Download Cemu Emulator ===&lt;br /&gt;
You can find the latest version of Cemu Emulator on the [http://cemu.info/ Official Cemu Website]&lt;br /&gt;
&lt;br /&gt;
=== Setting up homebrew ===&lt;br /&gt;
Follow [https://wiiu.hacks.guide/ this guide] to set up your Wii U console to use homebrew software, in order to allow you to dump the game files from your console to your PC.&lt;br /&gt;
&lt;br /&gt;
=== Dumping the game files ===&lt;br /&gt;
To play BotW on Cemu, you&#039;ll need to [[Help:Dumping games|dump the game files]] from the console to your computer.&lt;br /&gt;
&lt;br /&gt;
=== Adding your game path ===&lt;br /&gt;
Once you&#039;re in Cemu, head to &amp;lt;code&amp;gt;Options &amp;gt; General Settings&amp;lt;/code&amp;gt; at the top bar, a new window will open. At the bottom of it you will see an &amp;lt;code&amp;gt;Add&amp;lt;/code&amp;gt; button, click on it to add your game path.&lt;br /&gt;
This should look something like &amp;lt;code&amp;gt;D:/Games/Wii U&amp;lt;/code&amp;gt; (put your games from the Dumpling folder here), and Cemu will automatically get all your games, updates and DLCs from there.&lt;br /&gt;
&lt;br /&gt;
Note: On older versions (before Cemu 2.1), you have to install the update and DLC.&lt;br /&gt;
To do so, navigate to &amp;lt;code&amp;gt;File &amp;gt; install game title, update or DLC&amp;lt;/code&amp;gt; at the top bar, it will open the explorer. Head to &amp;lt;code&amp;gt;Dumpling/Updates/The Legend of Zelda: Breath of the Wild/meta&amp;lt;/code&amp;gt; and select the meta.xml file. Follow the same processus for the DLC that should be at &amp;lt;code&amp;gt;Dumpling/DLCs/The Legend of Zelda: Breath of the Wild/meta&amp;lt;/code&amp;gt;.&lt;br /&gt;
If this has been done correctly, you should now see that Breath of the Wild is on version 1.5.0 and DLC on version 3.0 at the bottom right of the title screen in game.&lt;br /&gt;
&lt;br /&gt;
=== Setting up and Maximizing Performance ===&lt;br /&gt;
Now that you have Cemu and your games files, it is recommended you use [https://cemu.cfw.guide Emiyl&#039;s Cemu Setup Guide] to maximize performance on your hardware before installing mods.&lt;br /&gt;
&lt;br /&gt;
=== Installing mods using BCML ===&lt;br /&gt;
[[Help:Tools/UKMM#BCML_or_UKMM?|Don&#039;t]]&lt;br /&gt;
&lt;br /&gt;
=== Installing mods using UKMM ===&lt;br /&gt;
Mods that are packaged as a graphic pack or as a BNP can be installed using [[Help:Tools/UKMM|UKMM]], a mod loading tool. In addition to being simpler than manually extracting and enabling the mod, UKMM is designed to resolve certain kinds of conflicts between different mods. Mods that modify many types of content, including the [[RSTB]], the same [[SARC]] files, or [[Message archives]], among many others, will not function properly together unless the changes are merged. UKMM does this automatically. To install mods with UKMM:&lt;br /&gt;
&lt;br /&gt;
# Install UKMM using the instructions [[Help:Tools/UKMM#Installation|here]].&lt;br /&gt;
# Open UKMM.&lt;br /&gt;
# Set up UKMM using the instructions [[Help:Tools/UKMM#Setup|here]].&lt;br /&gt;
# Use the Install tab to install mods. (See [[Help:Tools/UKMM#No,_really,_how_do_I_use_it?|here]] if this is confusing)&lt;br /&gt;
&lt;br /&gt;
For more information on using UKMM, see the [https://nicenenerd.github.io/UKMM/ UKMM docs].&lt;br /&gt;
&lt;br /&gt;
UKMM should automatically enable installed mods in Cemu, but check to make sure by opening the Cemu graphic pack menu and making sure the &amp;quot;UKMM&amp;quot; graphic pack under &amp;lt;code&amp;gt;The Legend of Zelda: Breath of the Wild/Mods/UKMM&amp;lt;/code&amp;gt; is enabled.&lt;br /&gt;
&lt;br /&gt;
=== Installing mods with the graphic pack menu ===&lt;br /&gt;
Cemu uses &amp;quot;graphic packs&amp;quot; to install mods without overwriting any of the base files, allowing you to easily install or uninstall mods without leaving any trace. &lt;br /&gt;
&lt;br /&gt;
Graphic packs are installed by placing the unzipped folder in &amp;lt;code&amp;gt;Cemu/graphicPacks/&amp;lt;/code&amp;gt;. Note that most newer mods will come packaged as a graphic pack, or have a graphic pack option. &lt;br /&gt;
&lt;br /&gt;
To check that the mod is a graphic pack, open the mod folder within &amp;lt;code&amp;gt;Cemu/graphicPacks/&amp;lt;/code&amp;gt;. A graphic pack will have a file called &amp;lt;code&amp;gt;rules.txt&amp;lt;/code&amp;gt; next to the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;aoc&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If a mod is not packaged as a graphic pack you will have to package it yourself, otherwise skip to the end of this section. This method works for versions of Cemu 1.15.1+&lt;br /&gt;
&lt;br /&gt;
# Create a new folder inside &amp;lt;code&amp;gt;Cemu/graphicPacks/&amp;lt;/code&amp;gt; named after the mod you want to use.&lt;br /&gt;
# Inside that folder, create a folder named &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;. Your mod files will go in here. (Mods will often include a &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder already to make things clear.)&lt;br /&gt;
# Create a file named &amp;lt;code&amp;gt;rules.txt&amp;lt;/code&amp;gt; next to the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; folder (if the downloaded mod doesn&#039;t already include one). Use this example as a template:&lt;br /&gt;
&lt;br /&gt;
 [Definition]&lt;br /&gt;
 titleIds = 00050000101C9300,00050000101C9400,00050000101C9500&lt;br /&gt;
 name = &amp;lt;Mod Name&amp;gt;&lt;br /&gt;
 path = &amp;quot;The Legend of Zelda: Breath of the Wild/Mods/&amp;lt;Mod Name&amp;gt;&amp;quot;&lt;br /&gt;
 description = &amp;lt;Mod description here&amp;gt;&lt;br /&gt;
 version = 3&lt;br /&gt;
 fsPriority = 100&lt;br /&gt;
&amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; must be set to 3 to work correctly. &amp;lt;code&amp;gt;fsPriority&amp;lt;/code&amp;gt; determines the order in which mods are prioritized - higher numbers prioritize that mod&#039;s files over other mods. Mods without an &amp;lt;code&amp;gt;fsPriority&amp;lt;/code&amp;gt; entry specified will default to 100.&lt;br /&gt;
&lt;br /&gt;
Once a mod has been added, simply enable it from Cemu&#039;s graphic pack menu to use it. You can find this menu in &amp;lt;code&amp;gt;Options &amp;gt; Graphic Packs&amp;lt;/code&amp;gt; or by right-clicking a game and selecting &amp;lt;code&amp;gt;Edit Graphic Packs&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that most mods should not be enabled or disabled while the game is running.&lt;br /&gt;
&lt;br /&gt;
== Switch ==&lt;br /&gt;
&lt;br /&gt;
=== Setting up homebrew ===&lt;br /&gt;
Follow [https://switch.hacks.guide this guide] to set up your Switch console to use homebrew software.&lt;br /&gt;
&lt;br /&gt;
This tutorial uses Atmosphère Custom Firmware (CFW). It is strongly recommended &#039;&#039;&#039;not&#039;&#039;&#039; to use other CFWs as they tend to be outdated, unsafe and/or use stolen code from Atmosphère. &lt;br /&gt;
{{warning|text=Running homebrew on your console may lead to it getting banned from Nintendo&#039;s online services (including eShop and game updates). Enabling Airplane Mode will not help, as telemetry reports are saved and sent to Nintendo the next time you connect to the internet.&lt;br /&gt;
&lt;br /&gt;
However, this risk is very minimal as long as you are sensible and only use a safe, sane CFW (Atmosphère) and mods on offline games (don&#039;t install NSPs or pirate games!) as Atmosphère does not leave any trace on the system and disables some system telemetry.&lt;br /&gt;
&lt;br /&gt;
If you are paranoid, turn on Airplane Mode &#039;&#039;before running homebrew for the first time&#039;&#039;, then make a full system backup, and always stay offline until you restore that clean backup.}}&lt;br /&gt;
&lt;br /&gt;
=== Disabling telemetry reports ===&lt;br /&gt;
The Switch version of &#039;&#039;Breath of the Wild&#039;&#039; sends many [[telemetry]] reports so when you are using mods that modify gameplay in a detectable way or add new content in any way, it is strongly recommended to disable telemetry reports because they are used by Zelda developers to understand how people play BotW and also to help them fix bugs.&lt;br /&gt;
&lt;br /&gt;
Mods that modify actors are especially dangerous as they might cause the game to use the ActorSystem emergency heap and trigger many memory-related play reports.&lt;br /&gt;
&lt;br /&gt;
To disable problematic telemetry reports:&lt;br /&gt;
&lt;br /&gt;
* For 1.5.0, download this [https://static.zeldamods.org/patch_switch150_no_telemetry.ips patch], put it in &amp;lt;code&amp;gt;/atmosphere/exefs_patches/botw_no_telemetry/&amp;lt;/code&amp;gt; (create new folders if required) and rename the file to &amp;lt;code&amp;gt;16A91992BBA71201E98756F3BC8F5D2F.ips&amp;lt;/code&amp;gt;. This patch works for the Switch 1.5.0 [[executable]] only (build ID: 16A91992BBA71201E98756F3BC8F5D2F).&lt;br /&gt;
&lt;br /&gt;
* For 1.6.0, download this [https://static.zeldamods.org/patch_switch160_no_telemetry.ips patch], put it at &amp;lt;code&amp;gt;/atmosphere/exefs_patches/botw_no_telemetry/&amp;lt;/code&amp;gt; (create new folders if required) and rename the file to &amp;lt;code&amp;gt;8E9978D50BDD20B4C8395A106C27FFDE.ips&amp;lt;/code&amp;gt;. This patch works for the Switch 1.6.0 [[executable]] only (build ID: 8E9978D50BDD20B4C8395A106C27FFDE).&lt;br /&gt;
&lt;br /&gt;
=== Installing mods ===&lt;br /&gt;
&lt;br /&gt;
# In the root of your MicroSD card, there should be a folder named &amp;lt;code&amp;gt;atmosphere&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Within that folder, there should be a folder named &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt;. Inside that, create a folder with the name of your game&#039;s Title ID. For BotW on Switch, the Title ID is &amp;lt;code&amp;gt;01007EF00011E000&amp;lt;/code&amp;gt;. (In versions of Atmosphere prior to v0.10.0, the &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; folder was instead called &amp;lt;code&amp;gt;titles&amp;lt;/code&amp;gt;.)&lt;br /&gt;
# Inside that, make a folder called &amp;lt;code&amp;gt;romfs&amp;lt;/code&amp;gt;. Your mod files will go in here. (Mods will often include all or part of this folder structure already, to make things easy.)&lt;br /&gt;
&lt;br /&gt;
To use the mod, simply boot the console into CFW, then boot the game, and the mod will be active.&lt;br /&gt;
&lt;br /&gt;
Note that mods are not permanently installed on the console. To remove all installed mods, simply delete &amp;lt;code&amp;gt;/atmosphere/contents/01007EF00011E000&amp;lt;/code&amp;gt;.&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Ginger</name></author>
	</entry>
</feed>