Welcome, modders! This page is intended to be a collection of useful information for anybody who wants to create mods. If you want to simply use other people's mods, see Help:Playing with mods.
Getting set up
To make mods, you'll need to start by dumping the unedited game files from your copy of BotW.
Files, Tools and Tutorials
Since BotW uses a lot of Nintendo's own file formats, you'll need tools to be able to edit them. To use leoetlino's tools, you need to install the latest version of Python (64 bit version), and tick the "Add to PATH" / "Add to environment variables" box in the installer. Then, to install the tool, run
pip install TOOL_NAME in the command line.
If you're not sure which tool to use on a file, search for its extension on this wiki to find what file format that extension is used for.
Many files in the game are compressed with Yaz0 compression. Compressed files generally have the letter
s prefixed to their file extension. To decompress and recompress these files, use wszst (install with
pip install wszst-yaz0).
wszst decompress INPUT_FILE.sbactorpack OUTPUT_FILE.bactorpack
wszst compress INPUT_FILE.bfres OUTPUT_FILE.sbfres
SARC archives contain collections of other files and folders, like .zip folders. Unpack, edit and re-pack them with leoetlino's
sarc tool. This tool automatically decompresses Yaz0-encoded archives, and re-compresses them when you repack if the extension starts with an
sarc extract INPUT_FILE.pack
sarc create [-b] INPUT_FOLDER OUTPUT_FILE.sbactorpack(Use
-bfor Wii U only).
BYML files contain game parameters. Convert them to an editable format (and back) with leoetlino's
byml tool. This tool automatically decompresses Yaz0-encoded files, and re-compresses them if the extension starts with an
byml_to_yml INPUT_FILE.byml OUTPUT_FILE.yml
yml_to_byml [-b] INPUT_FILE.yml OUTPUT_FILE.sbyml(Use
-bfor Wii U only).
aamp_to_yml INPUT_FILE.bxml OUTPUT_FILE.yml
yml_to_aamp INPUT_FILE.yml OUTPUT_FILE.bgparamlist
.sbfresfiles contain models.
.Tex1.sbfresfiles contain textures (Wii U).
.Tex2.sbfresfiles contain mipmaps for textures (Wii U). Since we can't edit these on Wii U yet, they need to be disabled.
.Tex.sbfresfiles contain both textures and mipmaps (Switch). Unlike on Wii U, mipmaps don't cause any problems here.
The RSTB file
The file ResourceSizeTable.product.rsizetable (referred to as the RSTB file) contains a list of size limits for almost every file in the game (calculated from the non-Yaz0-compressed file sizes). If you edit a file to make its filesize bigger, you'll need to edit this file to prevent errors. For details, see Help:Editing the RSTB.
File names and caching
The game assumes that any 2 files with the exact same filename also have the exact same contents. If you don't follow this rule when editing files, the game might load the wrong version of the file, leading to errors.