cc5acd0980
- avoid using const std::unique_ptr& and const std::shared_ptr& - avoid wrapping results in std::optional - prefer std::string_view over const std::string& - update FSUtils::LoadFileToMem to write into std::vector<uint8_t> - use std::span when possible - Avoid unnessecary copies in PluginDataFactory - allocate plugins as HeapMemoryFixedSize which bascially is a std::unique_ptr with fixed size |
||
---|---|---|
.github | ||
source | ||
.clang-format | ||
.gitignore | ||
Dockerfile | ||
LICENSE | ||
Makefile | ||
README.md |
Wii U Plugin Loader Backend
This is the backend for the WiiUPluginSystem. Check out the readme for more information about the Plugin System.
Usage
([ENVIRONMENT]
is a placeholder for the actual environment name.)
- Copy the file
PluginBackend.wms
intosd:/wiiu/environments/[ENVIRONMENT]/modules
. - Requires the WUMSLoader in
sd:/wiiu/environments/[ENVIRONMENT]/modules/setup
. - Requires the FunctionPatcherModule in
sd:/wiiu/environments/[ENVIRONMENT]/modules
. - Requires the MemoryMappingModule in
sd:/wiiu/environments/[ENVIRONMENT]/modules
. - Requires the NotificationModule in
sd:/wiiu/environments/[ENVIRONMENT]/modules
.
Plugins needs to be placed into the following directory:
sd:/wiiu/environments/[ENVIRONMENT]/plugins
Building
In order to be able to compile this, you need to have devkitPPC installed devkitPPC with the following pacman packages installed.
(sudo) (dkp-)pacman -Syu --needed wiiu-dev
Make sure the following environment variables are set:
DEVKITPRO=/opt/devkitpro
DEVKITPPC=/opt/devkitpro/devkitPPC
Also make sure to install wut, WiiUPluginSystem, WiiUModuleSystem, libfunctionpatcher, libnotifications and libmappedmemory.
Buildflags
Logging
Building via make
only logs errors (via OSReport). To enable logging via the LoggingModule set DEBUG
to 1
or VERBOSE
.
make
Logs errors only (via OSReport).
make DEBUG=1
Enables information and error logging via LoggingModule.
make DEBUG=VERBOSE
Enables verbose information and error logging via LoggingModule.
If the LoggingModule is not present, it'll fallback to UDP (Port 4405) and CafeOS logging.
Building using the Dockerfile
It's possible to use a docker image for building. This way you don't need anything installed on your host system.
# Build docker image (only needed once)
docker build . -t wiiupluginloaderbackend-builder
# make
docker run -it --rm -v ${PWD}:/project wiiupluginloaderbackend-builder make
# make clean
docker run -it --rm -v ${PWD}:/project wiiupluginloaderbackend-builder make clean
Format the code via docker
docker run --rm -v ${PWD}:/src ghcr.io/wiiu-env/clang-format:13.0.0-2 -r ./source --exclude ./source/elfio --exclude ./source/utils/json.hpp -i
Credits
- Maschell
- orboditilt
- https://github.com/serge1/ELFIO