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.16-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.16-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.16-cp310-none-win_amd64.whl (19.1 MB view details)

Uploaded CPython 3.10Windows x86-64

bcml-3.9.16-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.16-cp39-none-win_amd64.whl (19.1 MB view details)

Uploaded CPython 3.9Windows x86-64

bcml-3.9.16-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.16-cp38-none-win_amd64.whl (19.1 MB view details)

Uploaded CPython 3.8Windows x86-64

bcml-3.9.16-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.16-cp37-none-win_amd64.whl (19.1 MB view details)

Uploaded CPython 3.7Windows x86-64

bcml-3.9.16-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.16-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.9.16-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 daffdb4e911720b52b682e2182b4994bfef280931412990e495b2cdbd0799063
MD5 d92d551be359b3eedc99c5771b94b2fd
BLAKE2b-256 d2905ec9bb0224b2b7827bdc342a6a779b0aa95a1ef36ab803918cc2d884066a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.16-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 9263a867dc0a532197e115902cb543f01498606a71d87a74af510173163eae9f
MD5 f58e4dfbfaf3537f38985722775278d1
BLAKE2b-256 89edf6be202f992aeefd352fc682e20aad235c11fed0b7eb531f601dc5e956df

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.16-cp310-none-win_amd64.whl
  • Upload date:
  • Size: 19.1 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.16-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 815a0c72dddbe65a12ec5b70d91516479ad224863cb7efa8c9e5d05e0bc7a874
MD5 bf4c3837c1843e6e9561ba91636a3a38
BLAKE2b-256 76cd71e2b9218f5bc66d3020b3fa2a06d8bbac7871aaca50b46a00ce43953d53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.16-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 91dfdb170ae5a672db88e531a8f4dbcb89a2088b8b99fcc569aa502bfa655cff
MD5 18e8b85171be6cf7ba98603d093c6f9a
BLAKE2b-256 0bcd31dd25169b8f4d9d22d5d5d885ff6cb77b4893308eab13536b7caa3dc9a7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.16-cp39-none-win_amd64.whl
  • Upload date:
  • Size: 19.1 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.16-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 d6a46c1531d9afeb95bad4974aa023a96a2ece7dee6263d61ff824df0b875dcd
MD5 252e374b9ca3952143a482338f775d4c
BLAKE2b-256 406d504a8dc34dc03d810af5510bc690919c361f4c74401373219ea6bf176644

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.16-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 c54e921d5d630735567b5a38b8a9ff0a37fbbf1a903ef28800eeb3ac86aa4866
MD5 d8326aff3d11e211480c33a1aca6f9e6
BLAKE2b-256 5eb9eb0eb82c43f504d6254a477d7b0978316e0509adfda74c1a01f46a4e43db

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bcml-3.9.16-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 cef510d46c44c9ac14dbb6c4228c4f890b22ca013a8b31a8dcbaed189969ce89
MD5 0ffe272de452a3f4dbdace49968cc8d0
BLAKE2b-256 2cb90ebd91e7b5b37ba67f84e88a15132f7a94cfd5b13eb3208f479bb6601f0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.16-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 fc32842d7abcec8124dde6b1085d57cb2b2e6f4538fe73309fe9abb90206c75c
MD5 ef485b2ebefc06d8e1a9a5b38636a161
BLAKE2b-256 2e80da502d51d1f3018977f43f5268c1328d84fdeaefbe7e890b3056fb25040d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bcml-3.9.16-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 1b1145837ca4ebcf38e772b0e8257531d8f05d1f11f1c1e5b66f3f876a2abdcc
MD5 2ed9f9ea19fb06ed1b969c679c507cf1
BLAKE2b-256 74b583df472738a02999368e027508d6c358cf6e34bde389bf7f7255f30eb6fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.16-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 896d37771c83f93af4a0eff179553e0438f18cdcab40442f84fe874930c98758
MD5 bffd117530ffa2457682552407a9e4cf
BLAKE2b-256 65f51992f4749608a4c078b31f3ef1a5c9f0dd427bace7a3f75c4f108a893fa9

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