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

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.7Windows x86-64

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

File metadata

File hashes

Hashes for bcml-3.9.6-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 971df7c74106bbc75daa2dd9745b6ffbc1a6985d5b2ce349fca8af869b0ffb8a
MD5 fb4f40fb6090060d22f6c98b41374c89
BLAKE2b-256 e15321eca635d9224110b70f2ffe6eed16eb96210d6174542883133f27d80e6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.6-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 1795414488b8631c003905e8f68ed6e6ada632fe7acc71aae931e96638e281d7
MD5 c6e7c024504aed584706a388659a0e5c
BLAKE2b-256 ed59d340a4bd3d787b61c87b8862f360be2e19dfd0ac5ff70a08ad6615ee6770

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.6-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.6-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 ab53faab8e3ac45cf1a2c7dacfacc624defd5d45192e1e3d5e65ddff2bacf326
MD5 dc517c5b3751c104661b2f45e295a145
BLAKE2b-256 98dde96982d9f9b26621c893e47cd0145f2f700e0c4116c7250cca39257e0684

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.6-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 126e7bea3943c7305b3f05438759667dbb860b887d43974894dd5093ae564a95
MD5 964c21d5ace31956955664488d30bd5b
BLAKE2b-256 7f1d75847723e00717d869181d14b781aa31d815d294cc187d02865071beeb80

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.6-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.6-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 887e2991d36652eb48b4018fefc77b1622bd0736a3534d6dd4881416ea116f8f
MD5 3dfb8259e0d184e13c9596cdf911f542
BLAKE2b-256 387a22200d5fc91747e1e5da31740f8d802484ea4ee37f1ac554c25026c60d01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 aa557e6be58b136c14208eebe17421ec625930826f9e360b27724d74b443637a
MD5 7b225ccde6e1bb5e052e5f45f97ddad9
BLAKE2b-256 ecf358c6c63169a51474472304904d6eaf69da06b18ace62b34ca948dbd4e1f7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.6-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.6-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 64c8b0f9b0613678fb45c6770fbdd17312f4fcfb66597d03b7c043908aed9aa4
MD5 74aa20d3c591f11de9fc64eb0179f24c
BLAKE2b-256 786de70c3250f4c7d248870b71be951d36cc04f71deb5bb84e7acc08f29b31bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 0b2f74897d5a10a1dcb429cc154d56fc60caf9f277b7837fa4797237577ec112
MD5 d0d132cf84fdf88315ebd4459ded272a
BLAKE2b-256 8781412d0643e4b3a8ab83bf4b6834f898dfb93d7616583f8e468130ce702752

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bcml-3.9.6-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.6-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 34e6318c7d3457bba29c939ebad398476b845af54602949a377a3cb8b2f40758
MD5 17a9b1f74a9d94926718886d8f358033
BLAKE2b-256 24f2554db8312a3c44e791a25bf6c278fa4ecd630772c88b0270397ab514e0df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bcml-3.9.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 5bdb916352b3a0d474eae6ef03f65dbeb4dcf7b720aa8cdf0cffd140197eea11
MD5 8bc14ac0e3732d5c9d784237cbb4da48
BLAKE2b-256 c68edffa9a6ebec8e6a53381279db5279c8e9e911ac19e92b727065e6497542a

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