Skip to main content

BCML Logo

BCML: BOTW Cross-Platform Mod Loader

A mod merging and managing tool for The Legend of Zelda: Breath of the Wild

BCML Banner

Purpose

Why a mod loader for BOTW? Installing a mod is usually easy enough once you have a homebrewed console or an emulator. Is there a need for a special tool?

Yes. As soon as you start trying to install multiple mods, you will find complications. The BOTW game ROM is fundamentally structured for performance and storage use on a family console, without any support for modification. As such, files like the resource size table or TitleBG.pack will almost inevitably begin to clash once you have more than a mod or two. Symptoms can include mods simply taking no effect, odd bugs, actors that don't load, hanging on the load screen, or complete crashing. BCML exists to resolve this problem. It identifies, isolates, and merges the changes made by each mod into a single modpack that just works.

Prerequisites

  • Windows 10+ (7-8 might work but are not officially supported) or basically any modern Linux distribution
  • A legal, unpacked game dump of The Legend of Zelda: Breath of the Wild for Switch (version 1.6.0) or Wii U (version 1.5.0)
  • The latest x64 Visual C++ redistributable
  • Cemu (optional)

Setup

There are two main ways to install BCML.

PyPI

Install Python 3.7 - 3.10 (64 bit version), making sure to add it to your PATH, and then run pip install bcml.

Note for Linux users: Because of the ways different distros handle Python packaging, it often works better to install BCML in some contained environment. There are a few options for this. The easiest would be to use pipx. You can install pipx through pip, and then run pipx install bcml. In some cases you might need to also run pipx inject bcml pywebview[qt].

Note for Linux white screen bug: Try setting the environmental variable: QTWEBENGINE_DISABLE_SANDBOX=1.

Another option for Linux users is using a virtual environment ("venv"). To do so, you can run something like this:

python -m venv bcml_env
source bcml_env/bin/activate # will activate the venv
pip install bcml

Full Linux Example with CEMU

sudo pacman -S python39 Adjust for you distribution, arch defaults to a newer python

python3.9 -m venv /.local/bcml_env
source ~/.local/bcml_env/bin/activate
python3.9 -m pip install bcml
~/.local/bcml_env/bin/bcml

to launch BCML in the future

source ~/.local/bcml_env/bin/activate; ~/.local/bcml_env/bin/bcml

  • In BCML, check 'without cemu' and set export path to '~/.local/share/cemu/graphicPacks/BreathOfTheWild_BCML'
  • install your mods
  • execute curl https://pastebin.com/raw/igCLK2tz -o ~/.local/share/cemu/graphicPacks/BreathOfTheWild_BCML/rules.txt
  • If your mods still don't load, verify that ~/.local/share/cemu/graphicPacks/BreathOfTheWild_BCML/rules.txt exist and try 'disable links for master mod' in BCML settings

Building from Source

Building from source requires, in addition to the general prerequisites:

  • Python 3.7 - 3.10 64 bit

  • Rust 1.60+ (nightly)

  • Node.js v14+

  • mkdocs and mkdocs-material

    Run pip install mkdocs mkdocs-material in venv if not using bootstrap.sh

Steps to build from source:

  1. Create and activate a Python virtual environment (venv)

    1. Open terminal to repo root folder
    2. python -m venv venv
    3. Activate the venv (usually venv/bin/activate on Linux or venv\Scripts\activate.ps1 on Windows)
  2. Install Python requirements

    1. Open terminal to repo root folder
    2. Run pip install -r requirements.txt
    3. Also install Maturin: pip install maturin
  3. Build Rust extension module

    1. Open terminal to repo root folder
    2. Run maturin develop (or maturin develop --release for performance)
  4. Prepare the webpack bundle

    1. Open terminal to bcml/assets
    2. Run npm install
    3. Run npm run build (or npm run test to watch while editing)
  5. Build the docs

    1. Open terminal to repo root folder
    2. Run mkdocs build
  6. Create an installable wheel with maturin build or run without installing with python -m bcml

Note that on Linux, you can simply run bootstrap.sh to perform these steps automatically unless you would like more control.

Usage and Troubleshooting

For information on how to use BCML, see the Help dialog in-app or read the documentation on the repo. For issues and troubleshooting, please check the official Troubleshooting page.

Contributing

BOTW is an immensely complex game, and there are a number of new mergers that could be written. If you find an aspect of the game that can be complicated by mod conflicts, but BCML doesn't yet handle it, feel free to try writing a merger for it and submitting a PR.

Python and JSX code for BCML is subject to formatting standards. Python should be formatted with Black. JSX should be formatted with Prettier, using the following settings:

{
    "prettier.arrowParens": "avoid",
    "prettier.jsxBracketSameLine": true,
    "prettier.printWidth": 88,
    "prettier.tabWidth": 4,
    "prettier.trailingComma": "none"
}

License

This software is licensed under the terms of the GNU General Public License, version 3 or later. The source is publicly available on GitHub.

This software includes the 7-Zip console application 7z.exe and the library 7z.dll, which are licensed under the GNU Lesser General Public License. The source code for this application is available for free at https://www.7-zip.org/download.html.

This software includes part of a modified copy of the pywebview Python package, copyright 2020 Roman Sirokov under the BSD-3-Clause License. The source code for the original library is available for free at https://github.com/r0x0r/pywebview.

Release files for bcml 3.10.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for bcml 3.10.8
File
bcml-3.10.8-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl PyPy 3.7 PyPy 3.7 7.3 Linux glibc 2.17+ x86-64 Details
bcml-3.10.8-cp311-none-win_amd64.whl CPython 3.11 none Windows x86-64 Details
bcml-3.10.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
bcml-3.10.8-cp310-none-win_amd64.whl CPython 3.10 none Windows x86-64 Details
bcml-3.10.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
bcml-3.10.8-cp39-none-win_amd64.whl CPython 3.9 none Windows x86-64 Details
bcml-3.10.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
bcml-3.10.8-cp38-none-win_amd64.whl CPython 3.8 none Windows x86-64 Details
bcml-3.10.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
bcml-3.10.8-cp37-none-win_amd64.whl CPython 3.7 none Windows x86-64 Details
bcml-3.10.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64 Details

Total release size: 207.1 MB

Release files / bcml-3.10.8-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bcml-3.10.8-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 18.8 MB
Tags Linux glibc 2.17+ x86-64 PyPy 3.7 PyPy 3.7 7.3
SHA-256 checksum
How to use checksums
89f7bbe8e41266b2cb2ada2f5915d242e3c04b21fa879f78ad94c504710412ec
BLAKE2b-256 checksum
How to use checksums
063a05f8d3c5f2be335fac1b45f60702fb02c0e22bfa452c7b1d0ce5ff2efa74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.12.20

Release files / bcml-3.10.8-cp311-none-win_amd64.whl

Download URL bcml-3.10.8-cp311-none-win_amd64.whl
Size 18.8 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
852602f205c150df2b4ea83eda6b3679af5fcc6af71eb23ed30677082ba0beed
BLAKE2b-256 checksum
How to use checksums
80c25f5ff0c2080bd8d92413e2cca039d1f4b4af6e7525dac3c3aa3a43d6a6d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.14.12

Release files / bcml-3.10.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bcml-3.10.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 18.8 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
fef942f32f484f101c1de98dac83d9b50e9269b365bc68fc2de4fba76282bfc3
BLAKE2b-256 checksum
How to use checksums
269ec4b48efd8959272a775c794e35a84f966db0234352779b47a12ebb129b00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.12.20

Release files / bcml-3.10.8-cp310-none-win_amd64.whl

Download URL bcml-3.10.8-cp310-none-win_amd64.whl
Size 18.8 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
402b983a2355428c961b8121b3ceba3d8ea005574dfd740351ddf581a638ad13
BLAKE2b-256 checksum
How to use checksums
d27e25f8588249b7ea581da7aba2410b72677817eff45abbaca8175326395cd6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.14.12

Release files / bcml-3.10.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bcml-3.10.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 18.8 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
1bdc84f727cbd5b1faa495ab30318882889de5ab1363bb84c017c492c4a7daf3
BLAKE2b-256 checksum
How to use checksums
0eaaebdc1c3bba9d9de989803cf5391f3d4f1b40bd992b924db7a394efea4b62
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.12.20

Release files / bcml-3.10.8-cp39-none-win_amd64.whl

Download URL bcml-3.10.8-cp39-none-win_amd64.whl
Size 18.8 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
a200cca31ddf5155dfa8deee5628f9a9dc36b3ebde01ad4982efea3d8fbf099f
BLAKE2b-256 checksum
How to use checksums
f846ec4c2f8a0ff1b0932b59851adfdea520f6a10eefdf8f35a264a5e6797718
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.14.12

Release files / bcml-3.10.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bcml-3.10.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 18.8 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
1ac5f61fa2a7070c5600dbcd661f8edee5726eb22895287fd92d1a25c219fb96
BLAKE2b-256 checksum
How to use checksums
7b38e046784deb60343bb078a0be52d2ea2fee943b86a674ebc655b8d90fe28f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.12.20

Release files / bcml-3.10.8-cp38-none-win_amd64.whl

Download URL bcml-3.10.8-cp38-none-win_amd64.whl
Size 18.8 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
7a18e4c4d49bd5afe67cc1e52fbe5cc840faa6da6d3ec2ccaf8f066cf844214c
BLAKE2b-256 checksum
How to use checksums
66f972a8c1244f86a2a48d8d767f09f49f4e10264e3086971ac898b9f2b19906
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.14.12

Release files / bcml-3.10.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bcml-3.10.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 18.8 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
bed905a1327b3985f3b8dc810ca16d15623a12f106680b9055f8a1ce45d91f44
BLAKE2b-256 checksum
How to use checksums
bd1ca5a7d867ffe230cfdfdaa96be747d1218cfa621db0a8553354c8f0a1458f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.12.20

Release files / bcml-3.10.8-cp37-none-win_amd64.whl

Download URL bcml-3.10.8-cp37-none-win_amd64.whl
Size 18.8 MB
Tags CPython 3.7 Windows x86-64
SHA-256 checksum
How to use checksums
05d6e9a1bacf73a8d77ecc8afd074254b911d9e0e590503e25b3c26f7a3a3066
BLAKE2b-256 checksum
How to use checksums
4a63b0aa11f41a396445d5be3986b68999572a93112aa8f68682caf12a80a48d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.14.12

Release files / bcml-3.10.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bcml-3.10.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 18.8 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
bed849250ebab0edfe0482f0530f46f1f7a05235202582beacde648c1753dd04
BLAKE2b-256 checksum
How to use checksums
239ba2efb6f2b577888dded9b32359ea0ab3d0600ee2e43145ec5629e5dd5f74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.12.20

Release history Release notifications | RSS feed

This release

3.10.8 This release

11 release files

3.10.5

3 release files

3.9.24

4 release files

3.9.23

9 release files

3.9.22

9 release files

3.9.21

9 release files

3.9.20

9 release files

3.9.19

9 release files

3.9.8

10 release files

3.9.5

9 release files

3.9.4

9 release files

3.9.3

9 release files

3.9.1

9 release files

3.8.6

2 release files

3.8.5

2 release files

3.8.4

2 release files

3.8.1

2 release files

3.8.0

2 release files

3.7.2

2 release files

3.7.1

2 release files

3.7.0

2 release files

3.6.3

2 release files

3.6.2

2 release files

3.6.1

2 release files

3.6.0

2 release files

3.5.0

2 release files

3.4.9

2 release files

3.4.8

2 release files

3.4.7

2 release files

3.4.6

2 release files

3.4.5

2 release files

3.4.4

2 release files

3.4.3

2 release files

3.4.2

2 release files

3.4.1

2 release files

3.4.0

2 release files

3.3.4

2 release files

3.3.3

2 release files

3.3.2

2 release files

3.3.1

2 release files

3.3.0

2 release files

3.2.3

2 release files

3.2.2

2 release files

3.2.1

2 release files

3.1.2

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.9

2 release files

3.0.8

2 release files

3.0.7

2 release files

3.0.6

2 release files

3.0.5

2 release files

3.0.4

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.8.0

2 release files

2.7.7

2 release files

2.7.6

2 release files

2.7.5

2 release files

2.7.4

3 release files

2.7.3

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.2

2 release files

2.6.1

2 release files

2.6.0

2 release files

2.5.3

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.9

2 release files

2.4.8

2 release files

2.4.7

2 release files

2.4.6

2 release files

2.4.4

2 release files

2.4.3

2 release files

2.4.2

3 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.4

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.9

2 release files

2.2.8

2 release files

2.2.7

2 release files

2.2.6

2 release files

2.2.5

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0

4 release files

1.22

2 release files

1.21

2 release files

1.14

3 release files

1.12

2 release files

1.11

2 release files

1.2

2 release files

1.1

2 release files

1.0

2 release files

0.999

2 release files

0.998

2 release files

0.995

3 release files

0.993

2 release files

0.992

2 release files

0.985

2 release files

0.981

2 release files

0.99

2 release files

0.98

2 release files

0.95

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page