Wii U Plugin System

Discussion in 'Wii U - Homebrew' started by Maschell, Feb 14, 2018.

  1. Maschell
    OP

    Maschell GBAtemp Advanced Fan

    Member
    933
    1,437
    Jun 14, 2008
    Gambia, The


    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.

    Usage

    The "Wii U Plugin Loader" is built to be loaded through the homebrew launcher, which can be either loaded through the browser exploit or haxchi.
    Plugins needs to be placed into the folder:
    Code:
    sd:/wiiu/plugins
    Note:
    Currently the loaded plugins are hardcoded into the loader, you need to recompile it load other 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 Padcon
    • INFO SwipSwapMe, a SwapDRC clone.

    Contributing

    Currently I'm working alone on this project.
    I try to put as many thoughs and techical details / problem on the github page.
    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 avaiable, everything is still hardcoded as it's still at an early stage.

    Download

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

    Credits

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

    Support

    Keep in mind that developing homebrew is very time consuming and ALL devs are doing for free in their personal free time.
    I'm pretty sure every dev out there appreciates it when they receive a simple "thanks". So go out and thank the cool devs you like.

    If you even want to make a small donation you can use one of the following options:


    [​IMG]


    [​IMG]

    Donate to my Litecoin address:
    LYTh1jYTh9iiF2PvKd5FagxAn3YZcuehRT

     
    Last edited by Maschell, Apr 10, 2018
    denzation, Zense, DaMan and 39 others like this.
  2. Maschell
    OP

    Maschell GBAtemp Advanced Fan

    Member
    933
    1,437
    Jun 14, 2008
    Gambia, The
    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, Apr 10, 2018
  3. depaul

    depaul GBAtemp Fan

    Member
    405
    215
    May 21, 2014
    France
    Thank you for your excellent work as always :)
     
    Maschell likes this.
  4. TotalInsanity4

    TotalInsanity4 GBAtemp Supreme Overlord

    Member
    9,573
    9,682
    Dec 1, 2014
    United States
    Under a rock
    Dude that's awesome, props to you!
     
  5. kfrfansub

    kfrfansub Advanced Member

    Newcomer
    85
    12
    Jun 13, 2016
    Belgium
    Thanks dude
     
    adilucky3 likes this.
  6. Lyrin

    Lyrin Annoying Weaboo Girl

    Member
    440
    229
    Jun 4, 2017
    United States
    The progress on this is absolutely incredible and I hope that it continues!
     
    wicksand420 likes this.
  7. JacobM

    JacobM GBAtemp Regular

    Member
    129
    35
    Jun 16, 2017
    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!
     
  8. Diego788

    Diego788 GBAtemp Fan

    Member
    365
    134
    Jun 27, 2014
    Chile
    Santiago, Chile
    whoa!
    this is awesome, i'll use it very often when I get a Wii U
     
  9. Kafluke

    Kafluke GBAtemp Psycho!

    Member
    4,408
    2,200
    May 6, 2006
    United States
    Fantastic work!
     
  10. Osakasan

    Osakasan GBAtemp Advanced Fan

    Member
    893
    488
    Sep 19, 2015
    This looks really interesting and may finally solve my pet peeve with Homebrew.
    Thanks for your work, dude.
     
  11. lordelan

    lordelan GBAtemp Addict

    Member
    2,170
    736
    Jan 4, 2015
    Germany
    This will be massive!

    @Maschell: Will I be able to use HID to VPAD in Loadiine somehow?
     
  12. cucholix

    cucholix Banners guy

    Member
    1,417
    787
    Jan 17, 2017
    Chile
    CFW patches + SwipSwapMe + HIDtoVpad = XCX perfect setup
     
    wicksand420 likes this.
  13. Masana

    Masana Newbie

    Newcomer
    6
    1
    Aug 12, 2016
    France
    Thank you very much for your applications, it's really great
     
  14. kfrfansub

    kfrfansub Advanced Member

    Newcomer
    85
    12
    Jun 13, 2016
    Belgium
    There is an option to enable HID controller in loadiine, no ?
     
  15. pwsincd

    pwsincd Garage Flower

    Member
    GBAtemp Patron
    pwsincd is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    3,508
    1,982
    Dec 4, 2011
    Manchester UK
    Can't use it with other homebrew yet . Stated in the op
     
  16. Funkymon

    Funkymon Advanced Member

    Newcomer
    92
    63
    Feb 7, 2017
    Canada
    Could this be used for Amiiboo spoofing?
     
  17. wolf-snake

    wolf-snake GBAtemp Maniac

    Member
    1,065
    639
    Feb 5, 2009
    Mexico
    I don't think that's easily doable outside of CEMU.
     
  18. Funkymon

    Funkymon Advanced Member

    Newcomer
    92
    63
    Feb 7, 2017
    Canada
    I know it's done for 3DS, and if we can spoof the entire gamepad doesn't that mean we can spoof functions of it? Or is that just wishful thinking?
     
  19. Zarklord

    Zarklord GBAtemp Regular

    Member
    194
    67
    May 13, 2016
    United States
    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.
     
  20. Funkymon

    Funkymon Advanced Member

    Newcomer
    92
    63
    Feb 7, 2017
    Canada
    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.
     
Loading...