Getting Started
Important
Please refer to
mono-devfor contributing guidelines and tools setup for my projects.Please setup tools for Rust, TypeScript, and Python. The instructions are in the
mono-devlink above.You also need
jqinstalled
The first step to contributing is to setup a development environment locally on your PC.
I aim to make the setup process as streamlined as possible. If you encounter any issues, please feel free to reach out and suggest to me how it can be improved!
Clone repository and one-time setup
Assuming you have the repo cloned already, run the following commands from the repo root
magoo install
task setup
task install
task build-artifacts
Breakdown:
magoo installchecks out the submodulestask setupperforms one time setup, including build additional tools required withcargotask installinstalls the dependencies and runs post-install scripts.task build-artifactsgenerates required artifacts for development locally.
Tip
When updating your local copy of the repo (i.e. with
git pull), runtask installagain to stay up-to-date with the latest dependencies. You do not need to run the other setups in most cases.
Then proceed to Build and run to start development!
Building Runtime
If you are only working on the frontend UI, or the manual (this website), then you don’t need to do this setup for building the runtime. The project is setup to automatically download the runtime from the hosted app and use that for local development.
However if you do need to make changes to the runtime:
- Make sure you already ran the commands above to build other artifacts as they are needed to run the integration tests.
- Run
task exec -- runtime-tests:installto installuking-relocate, an experimental tool for making BlueFlame images - Obtain a dump of the game’s ExeFS, decompress the NSO (with hactool) and convert it to ELF (with nx2elf).
- Put the ExeFS at
packages/runtime-tests/data/botw150/. Name the files with.elfsuffix. - You need one extra file
Actor/ActorInfo.product.sbymlfrom RomFS. Obtain the file and put it atpackages/runtime-tests/data/botw150/romfs/Actor/ActorInfo.product.sbyml. - Run
task exec -- runtime-tests:build-minito generateprogram-mini.bfi - Now the WASM runtime should build:
task exec -- runtime-wasm:build
Then proceed to Build and run to start development!