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

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

This version

3.9.5

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.9.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (19.3 MB view details)

Uploaded PyPymanylinux: glibc 2.12+ x86-64

bcml-3.9.5-cp310-none-win_amd64.whl (19.0 MB view details)

Uploaded CPython 3.10Windows x86-64

bcml-3.9.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (19.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.12+ x86-64

bcml-3.9.5-cp39-none-win_amd64.whl (19.0 MB view details)

Uploaded CPython 3.9Windows x86-64

bcml-3.9.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (19.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ x86-64

bcml-3.9.5-cp38-none-win_amd64.whl (19.1 MB view details)

Uploaded CPython 3.8Windows x86-64

bcml-3.9.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (19.3 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64

bcml-3.9.5-cp37-none-win_amd64.whl (19.1 MB view details)

Uploaded CPython 3.7Windows x86-64

bcml-3.9.5-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (19.3 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64

File details

Details for the file bcml-3.9.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.9.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 71b996d6c6f7b3a12d42d2ba0b082129f1275d037fd43843dcf92113ce067597
MD5 26be03adc40a04396efafecad06f856c
BLAKE2b-256 0c0cb43fb0f1991e987dcf2aed1243ba90676fe8b613b45d95cbe0cbabe99a78

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bcml-3.9.5-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 200268882e0ee6bf00b68cc8c77e62c9d264750d131de7901b9d53716dc45882
MD5 77bc3744ed6d6f47870b457bcb7f93c7
BLAKE2b-256 a4afae09a944dd9b428a6fd048695eb8a938c8b62acd8454ec9ab3b48f2bfd83

See more details on using hashes here.

File details

Details for the file bcml-3.9.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.9.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 fb053f2a3327433a84255ae2643a6b81860e2782747368a1540d71244df943b3
MD5 64bbd4dace6b67802ca052aabe3aad85
BLAKE2b-256 7667627c73bc75423b8129b6397d96decfade1e9ad706386326fc3ef9d4cd39b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bcml-3.9.5-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 f30b494c0f908b335e2ccf061df566b2feab41a850d8f77309c8b038c65bbdc4
MD5 8866f73b3cdfe890ba7e6997ce33347a
BLAKE2b-256 7d4b2e42024e447da783189caec5dbd49ebcab86f1d61ec9421ceb4335524d1f

See more details on using hashes here.

File details

Details for the file bcml-3.9.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.9.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 3d450e4b1213f47ca82e2044b3f19ba39f1909a5791609bf1369f378b711665e
MD5 e98ee2c797865cc448d585fc934a1f26
BLAKE2b-256 76e73483e30317c03d85331e37526482f6a8fea50f7a0ffd25de77083bbdb185

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bcml-3.9.5-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 7b1c97cbcdf59b3a243aebf6839564e699022216f9ac8b320ab3deb5d1d5b5ef
MD5 e2e2e8a527f5bd9717fb226def1c295f
BLAKE2b-256 42e64248402981ba8a7c81649f41f1eb84f9dcf60b4ad0125b6d16397c666630

See more details on using hashes here.

File details

Details for the file bcml-3.9.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.9.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 855fc347d5594cacf3fed5db3e1b41f5b805c8d53a85e1849cce8975e54376ca
MD5 765929a71ff8c77998d1b06e2608c057
BLAKE2b-256 562714bfbd9a0345b687dcc3b4a39dbbc3cb04814d846ab9a62ea2bc73cc560d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bcml-3.9.5-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 a38b76f9926abd36b397d9e20894aeee17478e75da5183832892cce7fe23dc23
MD5 36b4444480561eea480b78790a2b33b2
BLAKE2b-256 4e057ff40cb2df2c55ccab32b999750f0d0f39242ecb7114841b1c49042d9883

See more details on using hashes here.

File details

Details for the file bcml-3.9.5-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.9.5-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 321f6bb817f810f8099db3c0830e8198e1e6e7d5e932e7ea79244b7f6f504e48
MD5 dba9e357280725551e0faebb88003ecd
BLAKE2b-256 ab8bdf1a646fee2528b5ec15b70d237e7f68aab76e7cd141e225c9f185dca184

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