(⚒️ HEAVY-WIP) Re-implementations of Wii-U Development tools 🎮 in Rust. https://gerrit.miku.build/q/project:rem-verse/sprig
  • Rust 89.1%
  • F* 5.2%
  • CMake 2%
  • C++ 1.4%
  • Shell 0.7%
  • Other 1.6%
Find a file
Cynthia 15aa286f36 properly block archaic MIONs with no sdk
got a CAT-DEV v4 today, and upon testing with it's MION FW, it does
NOT support bypassing PCFS boot. I'm not sure exactly when MIONs
supported it, but for now i've marked it as anything below 0.0.14.00,
may need to adjust in the future.

Change-Id: I7cff7d38d79cbc96b23d18d85043ee7f85fc45c4
Reviewed-on: https://gerrit.miku.build/c/rem-verse/sprig/+/367
Tested-by: buildkite
Reviewed-by: Cynthia Coan <[email protected]>
Allow-CI-Run: buildkite
2025-12-30 23:52:42 +00:00
.buildkite small wip remote dumper "hfiod" 2025-11-12 00:39:48 +00:00
.cargo initial commit 2023-11-30 03:20:45 +00:00
cmd properly block archaic MIONs with no sdk 2025-12-30 23:52:42 +00:00
console full compatability with DevkitPro toolchains 2025-12-22 01:45:37 +00:00
installer-scripts fix mkdir calls in osx package 2025-11-12 05:05:41 +00:00
ISSUE_TEMPLATE migrate serial logging to it's own crate 2025-10-02 08:27:43 +00:00
pkg sachet - doc updates, content module, tests 2025-12-27 01:43:22 +00:00
toolchain full compatability with DevkitPro toolchains 2025-12-22 01:45:37 +00:00
.editorconfig add editorconfig 2025-11-12 00:49:36 +00:00
.gitattributes add dummy boot image files/movie necessary to boot 2025-11-27 19:49:28 +00:00
.gitignore better windows support, partial xcode, typos 2025-11-09 05:53:56 +00:00
Cargo.lock add tmd/fst tests, clean up sachet APIs 2025-12-24 05:41:26 +00:00
Cargo.toml update deps, rename wiiu-nus -> sachet 2025-12-22 22:44:59 +00:00
CMakeLists.txt toolchain as proper platforms&name standardization 2025-11-06 07:35:15 +00:00
CODE_OF_CONDUCT.md migrate to buildkite, and codeberg 2025-10-02 06:40:40 +00:00
CONTRIBUTING.md better windows support, partial xcode, typos 2025-11-09 05:53:56 +00:00
LICENSE Common TCP Servers/Clients, Cargo Features 2025-10-02 03:09:56 +00:00
README.md toolchain as proper platforms&name standardization 2025-11-06 07:35:15 +00:00
rustfmt.toml Common TCP Servers/Clients, Cargo Features 2025-10-02 03:09:56 +00:00

Sprig

note: this current project is far far far from done, and is one of many spare time projects. It is mostly only useful for those interacting with cat-dev's at this point.

A re-implementation of Wii-U Development tools, without the fuss. This attempts to recreate the real SDK that can run on any OS (without needing to setup cygwin, or needing a windows machine), as well as 'better' versions of the tool that comply to more modern CLI/App Standards. As part of sprig I do also run cygwin mirrors, and provide support for setting up the official sdk. But hopefully this project can fully eclipse the need for the official Cafe SDK.

As a side note: if you're interested in testing something on a cat-dev for something related to preservation, and don't have one. PLEASE reach out, I'd be more than happy to use my hardware to test things for you.

Why The Name Sprig?

The name "Sprig" was chosen after "Sprigatito" the "Weed Cat Pokemon", because not only was the code name for the Wii-U "CAT" (cat-dev/cat-r/etc.), and the fact "Cat Bridge - Dev" is shortened to CBD (thus 'weed'). Plus Sprig is just a fun word to say.

What Parts Are Re-Implemented

As mentioned at the top of this repository ALMOST ALL of the tools here are NOT re-implemented yet. I'm working on it bit by bit, but to be clear it is not the only thing I'm working on, or always my top project. It's very much as an on needed basis til I can finish other things (and in the meantime I'd love help from anyone willing to contribute).

The end goal is to offer a complete port of every single tool that was officially part of the Cafe SDK developed by Nintendo, plugins to use other compilers besides MULTI (so we don't need the license keys!), and a suite of tools designed from the ground up to offer a pleasent development experience. As some of the CLI choices of the Cafe SDK are not great choices looking back.

Overarching Cafe Tools

Official Tool Replacements:

  • cafe.bat
  • cafex_env.bat
  • cafex

Sprig Custom Tooling:

  • mochiato: our replacement for cafe.bat/cafex_env.bat

Host Bridge Tools

The "Host Bridge" tools are a series of tools used for setting up a connection to a CAT-DEV Unit on your local network. These tools are all documented in the Cafe-SDK documentation underneath: "Cafe SDK Basics > Development Cycle > Run Applications > HostBridge Tools".

Official Tool Replacements:

  • findbridge: a tool to list all the bridges on your local network who your PC can see.
  • getbridge: print either the current bridge, or all known bridges.
    • getbridgetype: an internal script that sets environment variables that getbridge uses.
    • getbridgeconfig: the actual executable that does the BULK of work for getbridge when not just echoing environment variables.
  • [-] setbridge: set the bridge to use for your active session, or set the default so you don't have to set it everytime.
    • setbridgeconfig: the actual executable that setbridge ends up reaching out too.
    • SessionManagerUtil: seems like a utility to manage multiple cat-dev PCFS connections at once.
  • hostdisplayversion: Display the current emulated Host Bridge installation version, and the firmware installed on your actual CAT-DEV. It is typically only used for diagnostics.
  • FSEmul: FSEmul is the 'core' proccess for handling emulation of various filesystem components for the CAT-DEV. Specifically FSEmul handles various block level protocols (SDIO/ATAPI), and provides information to PCFSServer
    • PCFSServer: handles interacting with an actual filesystem with SATA style apis like "create a folder", "create a file", etc.
  • updatebridges: a command used to update the firmware on a particular Host Bridge.
  • imageuploader: allow uploading mastered WUMAD/WUM's to the internal HDD of a CAT-DEV.

Sprig Custom Tooling:

  • [-] bridgectl: our replacement tool that wraps all the bridge commands, and host-bridge utilities into a single tool.

Cat-Dev Bridge Internal Tools

There are some tools that are not explicitly mentioned being tools in any parts of the developer facing documentation, however they are used for interacting with that cat-dev bridges a developer would have used. Sometimes, these tools were also used to build things ontop of them (e.g. mionps is used during cafe.bat).

  • CatLog: a port of the the csharp "CatLog" utility who's source was included in some of the cafe sdk releases, which receives logs over the serial port.
  • mionps: a tool used to fetch the "parameter space" from a particular MION board. It is not clear what the parameter space is, but it contains a whole bunch of configuration values you can get/set.
  • mionparameterspace: a tool like mionps, but it has different output and is probably an older version of mionps that couldn't be removed cause someone depended on it's behavior somewhere.

Building

Building these tools for yourself (and not installing from some package when we start distributing pre-built artifacts) you will require whatever the latest version of stable Rust is at the time the source code was published.

You can follow instructions from https://rust-lang.org, and https://rustup.rs. To install a working rust toolchain locally on your machine. I personally recommend using rustup as it'll be the easiest to update in the future.

Then run cargo build from the root directory of this project to build debug versions of these tools. The built binaries will be placed in ${PROJECT_DIR}/target/debug/${tool-name}. NOTE: not all tools are binaries that need to be built. Some are just simple scripts. For these 'simple scripts' they are just locally located in the directory their located, and you can just run them directly. On windows you can run the scripts located in the pwsh directories, on anything else you can use the scripts located in the sh directories. NOTE: there may be extra steps consult each projects README for more information.

Building the Installable Packages

note: the installable packages are not being fully tested yet, so expect breakages.

If you actually want to build packages you'll need to not only be the OS that you want to package for. You'll also potentially need extra tools depending on the OS you're using:

  • Windows: Please install wix 4.
  • Mac OS X: Please ensure you have pkgbuild, and productbuild installed you may need to install XCode.
  • *Nix: Please install NFPM.

From there you can run: ./installer-scripts/<os-type>/<install scripts>, and read: ./installer-scripts/<os-type>/README.md to get instructions on how to build things for your OS.