Package: bcml
BCML: BOTW Cross-Platform Mod LoaderA mod merging and managing tool forThe Legend of Zelda: Breath of the WildPurposeWhy 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 theresource size tableorTitleBG.packwill 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.PrerequisitesWindows 10+ (7-8mightwork but are not officially supported) or basically any modern Linux
distributionA legal, unpacked game dump ofThe Legend of Zelda: Breath of the Wildfor Switch
(version 1.6.0) or Wii U (version 1.5.0)The latest x64 Visual C++ redistributableCemu (optional)SetupThere are two main ways to install BCML.PyPIInstall Python 3.7 - 3.10 (64 bit version), making sure to add it to your PATH, and then
runpip 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 usepipx. You can installpipxthrough pip, and then runpipx install bcml. In some cases you might need to also runpipx 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-mvenvbcml_envsourcebcml_env/bin/activate# will activate the venvpipinstallbcmlFull Linux Example with CEMUsudo pacman -S python39Adjust for you distribution, arch defaults to a newer pythonpython3.9 -m venv /.local/bcml_env
source ~/.local/bcml_env/bin/activate
python3.9 -m pip install bcml
~/.local/bcml_env/bin/bcmlto launch BCML in the futuresource ~/.local/bcml_env/bin/activate; ~/.local/bcml_env/bin/bcmlIn BCML, check 'without cemu' and set export path to '~/.local/share/cemu/graphicPacks/BreathOfTheWild_BCML'install your modsexecutecurl https://pastebin.com/raw/igCLK2tz -o ~/.local/share/cemu/graphicPacks/BreathOfTheWild_BCML/rules.txtIf 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 settingsBuilding from SourceBuilding from source requires, in addition to the general prerequisites:Python 3.7 - 3.10 64 bitRust 1.60+ (nightly)Node.js v14+mkdocs and mkdocs-materialRunpip install mkdocs mkdocs-materialin venv if not usingbootstrap.shSteps to build from source:Create and activate a Python virtual environment (venv)Open terminal to repo root folderpython -m venv venvActivate the venv (usuallyvenv/bin/activateon Linux orvenv\Scripts\activate.ps1on Windows)Install Python requirementsOpen terminal to repo root folderRunpip install -r requirements.txtAlso install Maturin:pip install maturinBuild Rust extension moduleOpen terminal to repo root folderRunmaturin develop(ormaturin develop --releasefor performance)Prepare the webpack bundleOpen terminal tobcml/assetsRunnpm installRunnpm run build(ornpm run testto watch while editing)Build the docsOpen terminal to repo root folderRunmkdocs buildCreate an installable wheel withmaturin buildor run without installing withpython -m bcmlNote that on Linux, you can simply runbootstrap.shto perform these steps
automatically unless you would like more control.Usage and TroubleshootingFor information on how to use BCML, see the Help dialog in-app or read the documentationon the repo. For issues and
troubleshooting, please check the officialTroubleshootingpage.ContributingIssues:https://github.com/NiceneNerd/BCML/issuesSource:https://github.com/NiceneNerd/BCMLBOTW 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"}LicenseThis software is licensed under the terms of the GNU General Public License, version 3
or later. The source is publicly available onGitHub.This software includes the 7-Zip console application7z.exeand the library7z.dll,
which are licensed under the GNU Lesser General Public License. The source code for this
application is available for free athttps://www.7-zip.org/download.html.This software includes part of a modified copy of thepywebviewPython package,
copyright 2020 Roman Sirokov under the BSD-3-Clause License. The source code for the
original library is available for free athttps://github.com/r0x0r/pywebview.