Help:Setting up tools

From ZeldaMods (Breath of the Wild)
Revision as of 18:16, 15 October 2018 by imported>Leoetlino
Jump to navigation Jump to search

Breath of the Wild uses a very flexible, custom game engine. Many aspects of the game are not hardcoded and are instead configured by a large amount of files. Since BotW uses a lot of Nintendo's own file formats, you'll need special tools to be able to edit them.

Common file formats

The most common formats that one would want to be able to decode and also modify are:

Tools

In general, there are several tools you can use for a given file format. This guide will only mention the recommended tools; a more complete list of utils can be found in the article for each file format.

Some are unfortunately Windows-only, but many — especially the newer ones — are cross platform and work on Windows, macOS and Linux (with Linux even being the best supported platform for some tools).

Common requirements

Many of the tools for these formats require Python 3.6+ (64 bit version) to be installed.

On Linux, Python 3 is almost surely already installed. Just make sure you have a recent enough version (3.6+). Ubuntu 16.04 and Debian stretch are too old; the latest Ubuntu LTS (18.04) and rolling distros such as Arch and Debian sid have 3.6+ in their repos.

On Windows, follow the below instructions for installing Python:

  1. Uninstall any existing Python version to avoid conflicts.
  2. Download the Python 3.7 installer (latest version as of September 2018).
  3. Run the installer: do a system-wide install and tick the "add Python to environment variables / PATH" option.
  4. Verify that py -3 --version works and gives the correct version (3.6 or higher). [help]

AAMP

Tool Cross-platform Setup Known issues
aamptool Yes

Download the tool from GitHub (note: builds are only provided for Windows).

  • Non-root parameter lists: Parameter lists are not handled correctly at this moment, which causes files (baiprogs for instance) that rely on nested lists to have a strange structure in their XML representation.
  • Parameter names with leading numbers: Nintendo sometimes starts parameter structure names with numbers. aamptool converts structures into XML tags; however leading numbers in tag names are explicitly disallowed by the XML specification. As a result files with such nodes cannot be converted back from XML into AAMP correctly. aamptool will either crash or fail to convert the affected parameter nodes.
  • Incomplete parameter type support: Esoteric parameter types such as curves and buffers are not supported. This is problematic because a conversion into XML will only keep one byte of the original data, leading to data loss when converting back to AAMP.
aamp Yes

Install the aamp package. [CLI help]

  • Incomplete parameter type support: Esoteric parameter types (buffers) are not fully supported: currently the tool can display files that use buffers correctly but cannot convert them back to AAMP.
Wild Bits Yes
  1. Ensure you have a 64 bit version of Python 3.7+ before continuing. Windows users must also install the latest x64 Visual C++ redistributable. You will not be able to install or launch Wild Bits otherwise. See Help:Setting_up_tools.
  2. (Optional) For best results on Windows, install cefpython3. [CLI help]
  3. Install the wildbits package. [CLI help]

On some system configurations, launching with wildbits doesn't work and you must use python -m wildbits instead.

Switch Toolbox No
  • Simply download the latest compiled release from GitHub, unzip, and launch the exe. Note that the latest release has an old date, but it is current, as it automatically rebuilds with each commit.

BFRES

BFEVFL

Follow the instructions at Help:Tools/EventEditor.

BYML

Tool Cross-platform Setup Known issues
byml-v2 Yes

Install the byml package. [CLI help]

None

ninten-file-tool Yes
  1. Install the Java runtime environment (JRE).
  2. Download the latest release from GitHub.
  • Wii U only: Only works with big endian files and unable to handle Switch (little endian) documents.
  • Incomplete support for newer node types: Newer node types (0xd4, 0xd5, 0xd6, 0xff) are not supported. In practice, this is not an issue for Breath of the Wild as these are not known to be used in the game.
Byaml Editor Yes
Wild Bits Yes
  1. Ensure you have a 64 bit version of Python 3.7+ before continuing. Windows users must also install the latest x64 Visual C++ redistributable. You will not be able to install or launch Wild Bits otherwise. See Help:Setting_up_tools.
  2. (Optional) For best results on Windows, install cefpython3. [CLI help]
  3. Install the wildbits package. [CLI help]

On some system configurations, launching with wildbits doesn't work and you must use python -m wildbits instead.

Switch Toolbox No
  • Simply download the latest compiled release from GitHub, unzip, and launch the exe. Note that the latest release has an old date, but it is current, as it automatically rebuilds with each commit.

RSTB

Tool Cross-platform Setup Known issues
rstb Yes

Install the rstb package.[CLI help]

  • Size calculation for complex resources: rstb is currently unable to calculate file sizes for complex resource classes (see Resource system for more information). The CLI will suggest deleting entries if it detects that this is the case.
Wild Bits Yes
  1. Ensure you have a 64 bit version of Python 3.7+ before continuing. Windows users must also install the latest x64 Visual C++ redistributable. You will not be able to install or launch Wild Bits otherwise. See Help:Setting_up_tools.
  2. (Optional) For best results on Windows, install cefpython3. [CLI help]
  3. Install the wildbits package. [CLI help]

On some system configurations, launching with wildbits doesn't work and you must use python -m wildbits instead.

Switch Toolbox No
  • Simply download the latest compiled release from GitHub, unzip, and launch the exe. Note that the latest release has an old date, but it is current, as it automatically rebuilds with each commit.

SARC

Tool Cross-platform Setup Known issues
SARC Tool Yes
  1. Install the sarclib package. [CLI help]
  2. Install the libyaz0 package. [CLI help]
  3. Download the latest release from GitHub
  • Unnecessary padding for BotW: SARC Tool may add unnecessary padding when archives are repacked, meaning generated archives may end up larger than the original even if no file size has increased inside the SARC. The game will fail to load it unless you fix the Resource system.
sarc Yes

Install the sarc package. [CLI help]

None

BotW Unpacker Yes

Download the latest release from GitHub.

  • Wii U only: This tool can only handle big endian archives. Switch SARCs will not work as they use little endian.
Wild Bits Yes
  1. Ensure you have a 64 bit version of Python 3.7+ before continuing. Windows users must also install the latest x64 Visual C++ redistributable. You will not be able to install or launch Wild Bits otherwise. See Help:Setting_up_tools.
  2. (Optional) For best results on Windows, install cefpython3. [CLI help]
  3. Install the wildbits package. [CLI help]

On some system configurations, launching with wildbits doesn't work and you must use python -m wildbits instead.

Switch Toolbox No
  • Simply download the latest compiled release from GitHub, unzip, and launch the exe. Note that the latest release has an old date, but it is current, as it automatically rebuilds with each commit.

We strongly advise against using other tools because they do not handle file alignment properly.

Map units

Map units can be edited directly by modifying the map unit BYMLs or with a graphical tool such as Ice-Spear.

For the first method, refer to #BYML.

For the second method, follow the instructions in the official repo for Ice-Spear builds.

Reverse engineering

To reverse engineer the game executable, it is strongly recommended to have a copy of IDA Pro 7.0+ because the main executable is fairly large and IDA is as of September 2018 the only serious option for analysing such binaries. It is also the only tool with a usable decompiler for AArch64 (Switch).

To get a copy of an IDC for Switch 1.5.0, ping leoetlino.