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

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.11-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.11-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (19.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

bcml-3.9.11-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.11-cp39-none-win_amd64.whl (19.0 MB view details)

Uploaded CPython 3.9Windows x86-64

bcml-3.9.11-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.11-cp38-none-win_amd64.whl (19.0 MB view details)

Uploaded CPython 3.8Windows x86-64

bcml-3.9.11-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.11-cp37-none-win_amd64.whl (19.0 MB view details)

Uploaded CPython 3.7Windows x86-64

bcml-3.9.11-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.11-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.9.11-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 a16d6b3410e3ebd8400114f04cac40cbafb7a7d943d78866850ea593d967633f
MD5 99e6d62dd26b7259c765afe2bce7cf4a
BLAKE2b-256 6baa62cd8a654bb91dbd5550a5c9d3d6421f06d0e4845b08fa16d54330ffb6b5

See more details on using hashes here.

File details

Details for the file bcml-3.9.11-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.9.11-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 5e687a5595e452751ff29cad19f7e213faeea7828c79ef889a183e6ae5152548
MD5 1c6073d77f22b80dbaa06f7217e52d41
BLAKE2b-256 42eb696952d343927611c244abda18d618614b7e21460fb9271f7dc9186ca0a5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.11-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.20

File hashes

Hashes for bcml-3.9.11-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 da9bc8e618bb8d38accb52365cb16e7c13a2f2f905b15191e9e8397fe25a9f4e
MD5 454b8801c5632948ed4a6aab47d0346f
BLAKE2b-256 ab12f4962d90e89083e5bad39f7e8a31f02b7c1b859ff6e1e63285cb7e7d7716

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.11-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 1a8070484b198505fbcad1d7eb571141318d2698ea4fb319c563eca280ffbed3
MD5 a22a3168bb3e41eff61889cd68e33f85
BLAKE2b-256 1bbae42894b61bfcef89d413ff34bd3f67f8165a9788a380f93c63d5b10f6de5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.11-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.20

File hashes

Hashes for bcml-3.9.11-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 cc703a6936ec7f65b7558b95e6e7581625fda0e73454a30cc29701cfc03d8f09
MD5 0896ab54087090fbe38d2b5122e4c20f
BLAKE2b-256 56c235b24464089d23ca6be748aeba44f5b9369b8975996e26294ad3e3fbc032

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.11-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 46ee923977cb85128934b0d4e53605e2aa7fcfc0d286349e335186b157670c1c
MD5 113fa4aa30007938809ea6431540659f
BLAKE2b-256 392932d70df98dfafb119c5e135dcd0876a27cb91df12fc8e2e01924be5d9062

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bcml-3.9.11-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 a8f77baaae6c104d185e486e33cbed54d357df30aa8d22204a805fd4a45793cb
MD5 d93898fc04f4ca47c60c7964e81866e7
BLAKE2b-256 91e730adae248f4b3a1dc00b37febbcd6a9e5a7f20606b3ad1b2c24d9649ceb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.11-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 0ab0c987f02d1bafa64b3286592530f9b2f233ec821fb5b427f05971087a4c65
MD5 f0329cf0be0f007453e0ae6adf051f8a
BLAKE2b-256 5841d878bde7f288a55e816107e92c3fb9b68b220e869ad30c0375e3fb57e748

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bcml-3.9.11-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 36312ddfa2eb3459610e23b72062c572846625b3538de8d019dda1c235c243ef
MD5 fc59825f0ff84db14ef9c2262394a45b
BLAKE2b-256 b42d3b706702f6feb4538913874bf687d7b70756bcd4dabffae54526b60a5de8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.11-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 9121b1c7addfc18e7d604c89554a7c0cc149ae334645bd166ea63ac7e18289bf
MD5 d98c4d5abaf08c7cc8836855b28bccf1
BLAKE2b-256 7a3b20acf6a4c5c6ba04de974928b5a276bc8b93057277db46c0b2916c54cc9a

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