Skip to main content

A mod manager for The Legend of Zelda: Breath of the Wild

Project description

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.9 (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.9 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.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

bcml-3.10.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

bcml-3.10.0-cp311-none-win_amd64.whl (18.8 MB view details)

Uploaded CPython 3.11Windows x86-64

bcml-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

bcml-3.10.0-cp310-none-win_amd64.whl (18.8 MB view details)

Uploaded CPython 3.10Windows x86-64

bcml-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

bcml-3.10.0-cp39-none-win_amd64.whl (18.8 MB view details)

Uploaded CPython 3.9Windows x86-64

bcml-3.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

bcml-3.10.0-cp38-none-win_amd64.whl (18.8 MB view details)

Uploaded CPython 3.8Windows x86-64

bcml-3.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

bcml-3.10.0-cp37-none-win_amd64.whl (18.8 MB view details)

Uploaded CPython 3.7Windows x86-64

bcml-3.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file bcml-3.10.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.10.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3bd6b47c43b9b918743f5454f3cfef3f4e4bd53b084a1f4b66504171e060fd4d
MD5 2def3af516c3029e7bacf5e8bb77935c
BLAKE2b-256 c5e5de8c2355687dc962e7eec679810cd862decd965a183e44e88c846891bc28

See more details on using hashes here.

File details

Details for the file bcml-3.10.0-cp311-none-win_amd64.whl.

File metadata

  • Download URL: bcml-3.10.0-cp311-none-win_amd64.whl
  • Upload date:
  • Size: 18.8 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.14.7

File hashes

Hashes for bcml-3.10.0-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 16adf9257acc3a665743067c50a99735a352f41c27e5ec28ba1012ff5d9bcba7
MD5 24a47cb6833743da5ecb98fa8a9764af
BLAKE2b-256 0c71f0d1e8d51037b3bb0f6799dd5cbb2ccf7663615352caadd6552557cb0a79

See more details on using hashes here.

File details

Details for the file bcml-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5d52aa9a775eb67c59e2afbdddfbf2cd7f7f013543edc60765d814ceed3d08a5
MD5 4ae17abc0ca848c80049d1c706ea7574
BLAKE2b-256 8e18edad87d95ec3f4af3f3939b9d7d8e3c02ab2382f958c06c050721cee7677

See more details on using hashes here.

File details

Details for the file bcml-3.10.0-cp310-none-win_amd64.whl.

File metadata

  • Download URL: bcml-3.10.0-cp310-none-win_amd64.whl
  • Upload date:
  • Size: 18.8 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.14.7

File hashes

Hashes for bcml-3.10.0-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 b04ccd72f01ad969dce1e675bef38e84cfe6e96e1112fa7e297198c9a256ee12
MD5 da7cdf4a2bca69c202b41c019eb90d91
BLAKE2b-256 d0018b10dd880d9546c6c67f44bb07547389f8335f29a0a8f0834370cf00df9b

See more details on using hashes here.

File details

Details for the file bcml-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ec71c7daa22cdeacb5e238397f13be6e1ffb3d5c9b854b3e66376be520b2a812
MD5 7fe0ee4cd6e151dfcb5cb7de6c1209b7
BLAKE2b-256 16018b3fb5af85ba3510d58d9f8a3d761904dd65bf5d59445f1faf81b13238a9

See more details on using hashes here.

File details

Details for the file bcml-3.10.0-cp39-none-win_amd64.whl.

File metadata

  • Download URL: bcml-3.10.0-cp39-none-win_amd64.whl
  • Upload date:
  • Size: 18.8 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.14.7

File hashes

Hashes for bcml-3.10.0-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 0acfe957cfb11c5e8ccc8726eb4b41a7c7aac2f3596b281c0c512be115154f24
MD5 f62f624d5c3ade19b1cb6d48431e99cc
BLAKE2b-256 d318e24a3eaa70dd7f2f318450f285534c24c279c7129fa387dfac08af61a037

See more details on using hashes here.

File details

Details for the file bcml-3.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2eef5cecb75b66a8a42b9f4f5145c3ccb4abce25d41e2d4127161d3c93c8694a
MD5 3c05d815304de16d79a2b368a963fd60
BLAKE2b-256 a759f2fee66b074d1116574627df328d555871792f94436c7213ce25f2c0ff4a

See more details on using hashes here.

File details

Details for the file bcml-3.10.0-cp38-none-win_amd64.whl.

File metadata

  • Download URL: bcml-3.10.0-cp38-none-win_amd64.whl
  • Upload date:
  • Size: 18.8 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.14.7

File hashes

Hashes for bcml-3.10.0-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 172e74a85323ab808ea9cccc885e64d3675f0e2d18af6d29a0ef762d7d336724
MD5 2444cd6dc63576e03d5dbf8ef6a1835a
BLAKE2b-256 a88f7635338fce01afce9c2043e3246cacfd684ee11082e9fe92180deeb23101

See more details on using hashes here.

File details

Details for the file bcml-3.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0161f04fccd55a5b578493edae22fa0cba6ee83e97ae28b37d8bd15090bff3a4
MD5 8b02a8bf70949197969fccc3c5a07bdf
BLAKE2b-256 1d187730d7c332c81399d873796f9d0590eeb8dd204f94a204c615d578c6e8a8

See more details on using hashes here.

File details

Details for the file bcml-3.10.0-cp37-none-win_amd64.whl.

File metadata

  • Download URL: bcml-3.10.0-cp37-none-win_amd64.whl
  • Upload date:
  • Size: 18.8 MB
  • Tags: CPython 3.7, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.14.7

File hashes

Hashes for bcml-3.10.0-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 9a8f319599c70f0ed466d189da73e196df61bfd8b5c7fb9b2e504ec3da928fe7
MD5 d4fe991eca0ffc930d8d8c2233bba720
BLAKE2b-256 41fd824c78c3fc04a81a7335c1aa54229249929d33b3a9b201dde138bee7fb08

See more details on using hashes here.

File details

Details for the file bcml-3.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d5cc6fff9428703006184aa52fb5510d682a33f34a3552c7f4ce3fcefa79ca59
MD5 5a75f204e26634143405bd94c07bb11b
BLAKE2b-256 7c7e98ae82212bcf61bb72d5c7e601ed4faf7109c9e42c8508f64ca7ec0621e9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page