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

Full Linux Example with CEMU

sudo pacman -S python39 Adjust for you distribution, arch defaults to a newer python

python3.9 -m venv /.local/bcml_env
source ~/.local/bcml_env/bin/activate
python3.9 -m pip install bcml
~/.local/bcml_env/bin/bcml

to launch BCML in the future

source ~/.local/bcml_env/bin/activate; ~/.local/bcml_env/bin/bcml

  • In BCML, check 'without cemu' and set export path to '~/.local/share/cemu/graphicPacks/BreathOfTheWild_BCML'
  • install your mods
  • execute curl https://pastebin.com/raw/igCLK2tz -o ~/.local/share/cemu/graphicPacks/BreathOfTheWild_BCML/rules.txt
  • If your mods still don't load, verify that ~/.local/share/cemu/graphicPacks/BreathOfTheWild_BCML/rules.txt exist and try 'disable links for master mod' in BCML settings

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.10.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

bcml-3.10.2-cp311-none-win_amd64.whl (18.8 MB view details)

Uploaded CPython 3.11Windows x86-64

bcml-3.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

bcml-3.10.2-cp310-none-win_amd64.whl (18.8 MB view details)

Uploaded CPython 3.10Windows x86-64

bcml-3.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

bcml-3.10.2-cp39-none-win_amd64.whl (18.8 MB view details)

Uploaded CPython 3.9Windows x86-64

bcml-3.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

bcml-3.10.2-cp38-none-win_amd64.whl (18.8 MB view details)

Uploaded CPython 3.8Windows x86-64

bcml-3.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

bcml-3.10.2-cp37-none-win_amd64.whl (18.8 MB view details)

Uploaded CPython 3.7Windows x86-64

bcml-3.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file bcml-3.10.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.10.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c178c36014bca1836343f1b15e904c28c7d3729f80d219f1a708e5209caf5fc0
MD5 0f06ba5195d8ca140ce7766518f2a6e7
BLAKE2b-256 cfcd76cb64e1f07776f2821aefb1a8ce2b5dd29c239a089c40e30713807d4518

See more details on using hashes here.

File details

Details for the file bcml-3.10.2-cp311-none-win_amd64.whl.

File metadata

  • Download URL: bcml-3.10.2-cp311-none-win_amd64.whl
  • Upload date:
  • Size: 18.8 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.14.10

File hashes

Hashes for bcml-3.10.2-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 92428113b9475c767625f9f8383f9ba7c17fb50bf63c1ab2d7407263b50d8985
MD5 02fe4d470769993a103f59444093c445
BLAKE2b-256 62a9ff0390f8982e69293978e26a5ddcd467dd40d1bb2bf7e821325e5a79aedd

See more details on using hashes here.

File details

Details for the file bcml-3.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 06e9520a3718433312401fbf6ffca8980f63066e8d46621b6afa4c47d22476bc
MD5 c77679c611718d069ba3d65ef5a92227
BLAKE2b-256 f2bd8f8d60eb4b8013e2c3b94c905f774739fe6b6caf92288b39971bd461859d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bcml-3.10.2-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 c2d2224da596f33dcc029fc378e05b4c7b79dd47a67746f3e0dcf947b134cb3b
MD5 71d92f17d4cc7f3e372c4317c0d07951
BLAKE2b-256 0f54fed14c0e9eb006d535c015f10948dfd9d8e5f64acb0dd9997a50ca28e886

See more details on using hashes here.

File details

Details for the file bcml-3.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d78a238416abb6e24930ef411dddb38eac39390184eb8e5844b78b9d7dcfd928
MD5 78ed74596c3b8723f7ae9006c6cc8fe5
BLAKE2b-256 829de705e7efb4d4acffbe584f2df7ebc96783f425949e8683411ef138960b18

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bcml-3.10.2-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 6dac10931d5801bc82b2d397541e89edded71ff809f5f73d343de08688b064b4
MD5 9157c0c052d066eed68176ec601774bd
BLAKE2b-256 5a5c1578ea364936924347129594172a864085cacd18512381b2dc24a4d36825

See more details on using hashes here.

File details

Details for the file bcml-3.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b1fb472639ca4499ca371657aa5cbb70e325cd4732ed12b099846b7cc29629e6
MD5 81709d672f2a947045304885ef0ee53f
BLAKE2b-256 91888579d7e56a73483ccf397f2f6f8e65a9bf14ad6d6ebc310f80b798930c20

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bcml-3.10.2-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 9dd8729baada2d1653865623caddd4454f839ba63492090bc5630d5f6815abb7
MD5 ccd81b6b5c1d40e846fb68ec081fcbd1
BLAKE2b-256 fdf725561fe64116d9ce86539cdfc39d5c46824dc327b0962fd6862387ba4512

See more details on using hashes here.

File details

Details for the file bcml-3.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 06833785584651802287594c75143f54fda9b97a3c18f9cd54616f1d5d2255a1
MD5 da3cee724c4ce820466e5994a0be847f
BLAKE2b-256 feb07190821de4d9e8453cc74daf71d228731682a2327f2107f39486b18b2539

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bcml-3.10.2-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 8603fbf3479b04964a82d78004c6f7b2b13c7ecdf079986c13101ec9eb29878a
MD5 c3f4b0b1bdf8c3ec702d52fbfb2f934d
BLAKE2b-256 953e9fc79f7764814f19707ea2bd2d9cadd768eba55f82dc22da60044ec3df94

See more details on using hashes here.

File details

Details for the file bcml-3.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9a8f432f1b907e6e5580ead8c818f2f6344b49a1c879664330e5c1eb25add34d
MD5 9b258facb76f3e2d6eacf2211d5cc0c3
BLAKE2b-256 82f3c4a366f6bc168b7a89a0151dd51996ef5abe22a71cfaf7b8379a4046cafb

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