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
  • The Edge WebView2 runtime (optional but recommended)
  • Cemu (optional)

Setup

There are two main ways to install BCML.

PyPI

Install Python 3.7+ (64 bit version), making sure to add it to your PATH, and then run pip install bcml. Note that, because of certain dependencies, on Windows Python 3.9+ is not supported.

Note for Arch users: BCML is now on the AUR (thanks ibrokemypie), so you can install it with pamac or yay or whatever your prefer.

Note for other 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+ 64 bit

    (Note: 3.9+ will not work on Windows until pythonnet is updated.)

  • Node.js v14

  • mkdocs and mkdocs-material

    Run pip install mkdocs mkdocs-material if not using bootstrap.sh

Steps to build from source:

  1. Install Python requirements

    1. Open terminal to repo root folder
    2. Run pip install -r requirements.txt
  2. 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)
  3. Build the docs

    1. Open terminal to repo root folder
    2. Run mkdocs build
  4. Install BCML with python setup.py install 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 Distribution

bcml-3.9.0_beta6.tar.gz (12.8 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

bcml-3.9.0_beta6-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.0_beta6-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.0_beta6-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.0_beta6-cp38-none-win_amd64.whl (18.9 MB view details)

Uploaded CPython 3.8Windows x86-64

bcml-3.9.0_beta6-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.0_beta6-cp37-none-win_amd64.whl (18.9 MB view details)

Uploaded CPython 3.7Windows x86-64

bcml-3.9.0_beta6-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.0_beta6.tar.gz.

File metadata

  • Download URL: bcml-3.9.0_beta6.tar.gz
  • Upload date:
  • Size: 12.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.12.11-beta.1

File hashes

Hashes for bcml-3.9.0_beta6.tar.gz
Algorithm Hash digest
SHA256 091c10e22fbc1c9b8fe106f7c68573ab2fddbdd3817087c45f16859a75376460
MD5 e57ccb404cf24b51a31541f340b82cb3
BLAKE2b-256 f0ea54d2cde7248507b254ad8e3b84958c49457feec6a0e282b81ee7e3c6e4bf

See more details on using hashes here.

File details

Details for the file bcml-3.9.0_beta6-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.9.0_beta6-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 6e66f85797388b5c3ec8c8c03c3c8f48999bb3a82cd279554036e77e1c9dac25
MD5 870f4839ffc08fd48259de7428771505
BLAKE2b-256 d28bfdd42669cc65cd13193ca38d82602aa6d27e56280124f6a8bbef8f68606c

See more details on using hashes here.

File details

Details for the file bcml-3.9.0_beta6-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.9.0_beta6-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 3ee7f139a2b2da26ceada55b0a484845792c52b6dabf4e8f558f637a36e8715a
MD5 a3f1a347b93b9d642f37d3bf028b9042
BLAKE2b-256 a1a56a4520f2007b3f44edaa88434c8e580e9390914637625bcf948a7b0f511c

See more details on using hashes here.

File details

Details for the file bcml-3.9.0_beta6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.9.0_beta6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b6b96f6e83bb7fae45cf6bda889d14d14d4bc7c66fb2db6e565d56b2f3efe9e6
MD5 07b9c1d78d90e6e5cec21a8b37712850
BLAKE2b-256 84375e1ab60c62189959b0e6a8d87c789f37bf96335affe3820119db01b349f3

See more details on using hashes here.

File details

Details for the file bcml-3.9.0_beta6-cp38-none-win_amd64.whl.

File metadata

File hashes

Hashes for bcml-3.9.0_beta6-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 cd9da198691f4cf747a745eda4aabaf33094bb1d1fa60e6ce0d22c215e96f017
MD5 94b60ede21f1935123b43046ce05f9a7
BLAKE2b-256 4117a7697a1be19285885b2fa4f2ce041f5ae4986a19ddc0b71c880c09f92a53

See more details on using hashes here.

File details

Details for the file bcml-3.9.0_beta6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for bcml-3.9.0_beta6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 dbf38606906ed81c8abea4e61b8c13c895193d68c0c01dd352c47a91c8bcfc01
MD5 24602920d06f22e7fc89809cd8d45bc8
BLAKE2b-256 c0344342e491337d5117e412bf49352b1b6546603063bf3013b5f3719151a667

See more details on using hashes here.

File details

Details for the file bcml-3.9.0_beta6-cp37-none-win_amd64.whl.

File metadata

File hashes

Hashes for bcml-3.9.0_beta6-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 bb1dd190c2af762b4d37e7a9e768bfb5e0697bcf9dbe4fb78532a5d89535f2d9
MD5 958de1aa6c6141928f4844e2f13e0059
BLAKE2b-256 05b7ec7f8e9e9d8994443337989607d7bb5a3d85c025c2f9b002842798a36b72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.0_beta6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 280c126b40fcc833cfd2e7349ece0dfb267074e99b2358e9dd793641ca8475b5
MD5 bed5347e4912357f36bc01ce23fe4eac
BLAKE2b-256 0ea2ee83bfd0c8de5923e4e2f206ad501662dede6efd1f349c51e6f5c7febd34

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