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

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.7Windows x86-64

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

File metadata

File hashes

Hashes for bcml-3.9.7-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 0d8697b80bf22f175080560da430d04995765ba4a5f691dd805e043ce98de29d
MD5 072762a8231172b5867f19f2814d36e8
BLAKE2b-256 e81782c823f32f69252fd9c17e933c91b1177de192e0a5acb2efc8807beef35e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.7-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 ca02ce6ed2b6fe4d667746c23f4699f179db59dd500781a17826e361b1c9e32d
MD5 4ed188d9d91207aecbf6c72100867554
BLAKE2b-256 329a654d212ec859d96dfdf373bafb2799c0d73dcde30844d5c0e70938416760

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.7-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.19

File hashes

Hashes for bcml-3.9.7-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 0974e987d47f09d2eb8e1fa6cfc0da0ef394df2496f2f1f02b257e1761bdb309
MD5 c22d0b1e083d5483560cd88535ce6a7a
BLAKE2b-256 a6118666f1a21a14999c06ca68030fa196ab391e3627c6dde6d47b34cc492a85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.7-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 d126c50b786586d8df51e4fd023144fd366ac67ad66ae5bc7ed41570041e170c
MD5 d8fe08b0084829adf72f3cbbe3e0e84d
BLAKE2b-256 50bb6ab272f974a0bb2cb63145f8cf79101d9f615b59e3dc439669a5675451bb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.7-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.19

File hashes

Hashes for bcml-3.9.7-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 2952818c2258de9c8a561f574aaadfd4bfb728fc88d7ab26a45d0e347c3012a4
MD5 14b99880bcb92c8b1187746e92e90155
BLAKE2b-256 c9f5edfd72ccac7080546f57fb8dcf356268a58345b2cfe1377644eec63798be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 09006f5c48703fab3c306456eb569a25334949e9c25f9f95d25349cf69b36a64
MD5 988c58c93b94de69c0178b9f4a8b9bdd
BLAKE2b-256 009147d6de43f15edd90991ef9f76fb843b56d6ba1594e8195327694d1a3c7db

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.7-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.19

File hashes

Hashes for bcml-3.9.7-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 e3fa30715f1e45a43a79b5505442ee75da1a6d89d6c3015e2ab5a25cc19a4b56
MD5 ae3b6664be90c8ff4ce68b5005daf055
BLAKE2b-256 821fa84f93f118a86c0ff706a7318ef512f8e0bd8d43705f313356e94edd683a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.7-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 5e4a5f9c336793d63efa77404dfcdb8af1b58e22073e1328ee1c09a4f8c024c9
MD5 c2a67f30994d8f98c0c8ced00f663459
BLAKE2b-256 5c84d4969075f59a2309026e17833bf241aba6aff8716b23e009ed6ee70fbe62

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.7-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.19

File hashes

Hashes for bcml-3.9.7-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 d9a8f41e83fed8b0007f9e2b1ff3a4a3c492a9a5868e757e82b85364629bbb91
MD5 f42a2bb6c7b60bcf802d916f91dd41fb
BLAKE2b-256 644e092f5625c6fc4a111d2a10b2de8855ca6bb33d809ca07b12094f51c2d6eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.7-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 76837c076c61e1b4cd826f8145844629377f7a0820f36b8c64d4c8b69b531d55
MD5 5664704d5107b3948955c231de6def3f
BLAKE2b-256 967661c7dff6e8cd231631ecd61ad0d909b11fd3d6b8b1528fe41d2d389dcad6

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