Homebrew Wii U Plugin System

Maschell

Well-Known Member
OP
Member
Joined
Jun 14, 2008
Messages
1,090
Trophies
2
XP
4,646
Country
Germany


Wii U Plugin System
Enhance your Wii U!

WARNING: THIS PROJECT HAS JUST STARTED AND IS FOR DEVS AND PEOPLE WHO WANT TO PLAY AROUND WITH NEW THINGS. IT MAY BE BUGGY, FEATURE COULD BREAK AT ANY TIME, INTERFACES CAN CHANGE, AND MANY BUGS CAN OCCUR. THIS APPLICATION COMES WITH NO WARRANTY-

What is the Wii U Plugin System?

The Wii U Plugin allows you to load multiple plugins on your Wii U which enhance your experience. For example you can mod your games, use USB controller, swap your gamepad and TV screen and much more.

Support

You can find support in this thread or on the official Discord Server

Features

The project is still in it's very early days, but it already has basic functions to play with.
  • The plugins will be loaded, even when you swap the running game.
  • Support for up to 32 plugins at the same time.
  • Each plugin can override up to 100 different existing system functions.
  • Multiple plugins can override the same system functions.
  • Plugins can register for certain hook (for example whenever an application was started)
  • Plugins inherit the SD/USB access from the loader. All plugins have global SD and USB (FAT32 only) access.
  • Plugins can inherit kernel access from the loader. The loader will be able to deny it to certain plugins.

Usage

Use the "Wii U Plugin Loader" to load plugins from the sd card. It is built to be loaded through the homebrew launcher, which can be either loaded with the browser exploit or haxchi.
Plugins needs to be placed into the following folder:
Code:
sd:/wiiu/plugins

You need to start this Application every time you reboot your console.
When you re-enter the homebrew launcher, the plugins will get unloaded.
This means it's not possible to combine this with other homebrews (yet).


Already created plugins

Currently the following plugins exist. They may have less functionalities then their "original" apps.

  • INFO SDCafiine: (no ntfs support)
  • INFO HID to VPAD: (no configuration, everything is mapped to the Gamepad)
  • INFO WUPSPluginPlayground (Various other demo plugins)
  • INFO Screenshot plugin
  • INFO SwipSwapMe, a SwapDRC clone.
  • INFO DiiBugger a Wii U debugger.

Contributing

Currently I'm working alone on this project.
I try to put as many thoughts and technical details / problem on the github page or on the Discord Server (#current-development)
So if you want to help, it's probably a good start to read the readme and the issues. You can also contact me whereever you like.
Any help will get much love!

Settings

Currently no settings are available, everything is still hardcoded as it's still at an early stage.

Download

Plugin Loader:
Nightlies: Download
Source: Here
Load the file with the homebrew launcher.

Plugin System (for devs):
Source: Here

Credits

A big thanks goes out to Chadderz. The hard part about this is based on brainslug, it was a REALLY good base.

 
Last edited by Maschell,

Maschell

Well-Known Member
OP
Member
Joined
Jun 14, 2008
Messages
1,090
Trophies
2
XP
4,646
Country
Germany
Progess / Changelog:

03 Feb. 2018:
- Start of the Project, brainstorming, writing down issues and ideas.
04 Feb. 2018:
- Using brainslug as a base, porting the relocate code.
- Creating a simple loader and example plugin. Now function loading possible
09 Feb. 2018:
- Calling a functions from a loaded plugin for the first time
10 Feb. 2018:
- Implemented the function patching
- Successfully replacing a system function for the first time
- Added the first hook (Initialize)
- Created the first practical plugin: Padcon.
11 Feb. 2018:
- Rewrote the Makefile of the plugins, linking with stdlib no possible (C only)
- Created a SwipSwapMe plugin
- Ported SDCafiine to C to have a lightweight plugin. No support for libfat (only Smash 4 working)
12 Feb. 2018:
- Fixed C++ support
- Updated the SDCafiine to use it's original C++ code, result is a much cleaner code
- Added a HIDtoVPAD plugin. Not able to read configuration files. Network client is working. Due to the missing configuration, everything maps to the gamepad.
13 Feb. 2018:
- Added readmes to the individual projects
- Refactored the loader a lot. Code is now much cleaner.
14 Feb. 2018:
- Some more refactoring
- Added mocha into the loader.
- Plugins can now inherit the SD/USB access from the loader.
- SDCafiine does now have the full functionalities (except for NTFS)
- HIDtoVPAD can now read and process config files.
16 Feb. 2018:
- Refcatoring. Created an own "library" where the wrapper of the FS functions are stored. This way we don't need the 80 LOC macro anymore
- Updated the Github readme
17 Feb. 2018:
- Added a basic GUI. Support more multiple languages
18 Feb. 2018:
- Refactored the Loader. Much cleaner code now.
- Fixed loading plugins which doesn't replace any function
- POC of an overlay plugin
- Always show the GUI when entering the Mii Maker
20 Feb. 2018:
- Added callback mechanism to open a simple menu while in an application (using OSScreen)
24 Feb 2018:
- Added plugin that logs some information about the used heaps of the running application
- Fixed compiling the loader with -jX (forcing the mocha part to be built without jobserver)
25 Feb 2018:
- Restructured the wups library itself.
- Added more information to the example plugin. Now it should contain everything you need to know.
- Added new hooks (INITIALIZE_PLUGIN, DEINITIALIZE_PLUGIN, ON_VYSNC, ON_APP_STATUS_CHANGED, ON_APPLICATION_ENDING), INITIALZE was renamed to ON_APPLICATION_START and has changed it's arguments
- Added the macros WUPS_FS_ACCESS() and WUPS_ALLOW_OVERLAY() to get FS access in the plugin or be able to use overlays,
04 Mar 2018:
- Added Code::Blocks template to the repository
- Added support wiiload - now you can load a single plugin over the network
- Optimized the travis script to actually cache stuff
07 Mar 2018:
- Added "ON_FUNCTIONS_PATCHED" hook
- DiiBugger got ported as an plugin
08 Mar 2018:
- Plugin with FS_ACCESS can now use mkdir
- Added a screenshot plugin
10 Mar 2018:
- Split up the Makefiles. Now changes can be done in a simplified Makefile (makefile.mk)
11 Mar 2018
- Fixed loading the plugin loader when loaded from the browser version of the homebrew launcher
- Added a bash script for installing/updating the dependencies
13 Mar 2018:
- Added option to set LD flags to the makefile.mk
27 Mar 2018:
- Fixed an issue with the brightness for the screenshot plugin
04 Apr 2018
- Pushed inital code for memory mapping. This allows us to use more memory for the loader and plugins.
- Memory testing on other console is required. Information can be found here: https://github.com/Maschell/WiiUPluginSystem/issues/17
05 Apr 2018
- Logging the default memory mapping.
- Fixed some faulty memory mapping
10 Apr 2018
- The Disccord Server opens
[Reserved]
 
Last edited by Maschell,

JacobM

Well-Known Member
Member
Joined
Jun 16, 2017
Messages
242
Trophies
0
XP
599
Country
United States
Incredible work over the past 2 weeks! I've been following this closely and the rate of development is mind-boggling.

Since this project is based on Chadderz brainslug for Wii, do you think it is technically possible to "port" a simplified HID to VPAD for vWii Wii Titles? I know a lot of people have been dreaming about this feature and as the leading expert/developer in WiiU/HID interface you probably have a solid understanding of the limits of both the hardware and Nintendo's software.

Congrats and looking forward to testing this over the next few weeks!
 

Zarklord

Well-Known Member
Member
Joined
May 13, 2016
Messages
194
Trophies
0
Age
25
XP
268
Country
United States
Could this be used for Amiiboo spoofing?
yes, BUT without a way to display custom graphics consistently in all games you would have no way to select what amiibo to spoof and other such things to it, i was actually working on this but abandoned the project due to the afformention issue.
 

Funkymon

Well-Known Member
Newcomer
Joined
Feb 7, 2017
Messages
92
Trophies
0
Age
41
XP
142
Country
Canada
yes, BUT without a way to display custom graphics consistently in all games you would have no way to select what amiibo to spoof and other such things to it, i was actually working on this but abandoned the project due to the afformention issue.
So would it be possible on a per game basis? I'm thinking specifically of games like BotW where there's no storage of data necessary.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Veho @ Veho: Cool.