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.3

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.7Windows x86-64

bcml-3.9.3-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.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.9.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b19d8d23b603af30f384393aebd8ee7d833dcabfcb02010cf288a63a2b74669a
MD5 0610830ceb1d421b53545aed49d6eb5d
BLAKE2b-256 250cc87588fd4f7556a6c29d0576d3c5a30eec29a8d51c561cb978cd9a1ed8ba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.3-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.3-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 b2b61a8b2a2c85204b1db78bba9617d26129379f1301d53b5086911b94cdae4c
MD5 9cf4f9ca1fe5069ec5ed54126ab5c3c1
BLAKE2b-256 a5b43474d8424ae0395ebd486a8981004d80ace334c6a8c8b71177fcc34686e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.3-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 34a75266de44e496fc303160179d55fb78cf53dd59075661d381e7cd21e362ee
MD5 c00c0b0af65741d07cd55cd8e5f5a477
BLAKE2b-256 3396085482d69172e8a0f119cd708c9c7118a24e049f6e1496bae4d554812059

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.3-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.3-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 aef9da0052bef8d046e8c6bf0a15dd0c5c3256de0bb345e6b80d276bba2c0bf9
MD5 1c6f65ab779240bf75027dd3eaf03861
BLAKE2b-256 f71a9837e743c752bee1352c3e713b02be63d42ab418d97e14e3329bc4b855c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 0d97202720095b03edcfce838aa2163a62210c9f39d3c43347ea4d65ff1f56d4
MD5 509a2c59638daa7a89b806c629d997a7
BLAKE2b-256 78289af1e35f0cf4b6f8ea057200e7986e0c1a9a4ff7bedb3831c9bf3d9566d6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.3-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.18

File hashes

Hashes for bcml-3.9.3-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 16750f56a5ea93f826a2167e57fe0c703a0eddde598b08761d2b3c2cf5295fb3
MD5 745c315f9d5053c5f80f752f6d4d60f1
BLAKE2b-256 0deddc9c8623b92549b7a38e777ceb318a09ff0746d8556b7e438fe4581e056e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 05be39bdc24e70b8a9e7d19481bb53d515d517312ab0e3f56bc64a75f77b5411
MD5 2c2ff3fa447dce4f6c37f8fa73f51551
BLAKE2b-256 d060e64051620d2ba4f02f9b821be5750fb9bf8d38d7aee27b7325e35837670a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.3-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.18

File hashes

Hashes for bcml-3.9.3-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 83b215e0d7e74d43fa53a2c46724cd384f245863dfa292a050d6c20b5e7959aa
MD5 36fc701e02c0878d6f69bc8c595bedf3
BLAKE2b-256 aac7c1d98694ad3b56398d9f87d94dc489b11131dbda698827306d4a4bef4e9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 e0661af71588d27440f4b7298de59988eb3d46cc0fada363be70fd5255cd8f39
MD5 66af426a10dc1bc0479a7a631d37a56d
BLAKE2b-256 2461f0d2c9e6df3d2c52581d9b83223d0e7f1f1180e4cc00e4b8ab9868d3b3d4

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