Delfinovin is an XInput conversion for use with Gamecube Controller adapters that implement Nintendo's WUP-028 firmware. This includes Mayflash controllers, Nintendo's own gamecube adapter and probably more that exist out there.
-
Delfinovin uses ViGEmBus in order to create virtual XInput joysticks. Download the latest release of ViGEmBus and install it.
-
Delfinovin also uses the WinUSB driver to interface with the Gamecube Controller adapter. Download and run Zadig. Under "Options," enable "List all Devices" and look for WUP-028 in the main dropdown menu.
- (If this does not appear, ensure your adapter is in Wii U mode if you're using a Mayflash adapter and try plugging the black cable into another port.)
-
Select "WinUSB" in the right columm and click "Replace Driver." Accept any system driver prompts.
-
Download the latest release of Delfinovin from the releases page and extract it to somewhere safe.
-
Check settings.txt and modify the settings to your desired values. GamepadTester can be useful for visualizing the sticks / button inputs if you're trying to figure out what settings to use in programs and other games.
If you would like to calibrate the sticks in order to use their full ranges, do so now by using the Calibrate Controllers menu.
- Restart the program and choose "Begin controller input loop"! Delfinovin will only translate gamecube controller inputs while it is open and is in the controller loop, meaning you have to keep it open as long as you want to use your controller.
Delfinovin has a couple of settings that can be set currently:
- TriggerDeadzone [Default - 0.15]
- TriggerDeadzone refers to the amount that the trigger has to be pressed in order to register any input.
- TriggerThreshold [Default - 0.65]
- TriggerThreshold refers to the amount that the analog trigger has to be pressed before it registers as a full press. -StickDeadzone [Default - 0.00]
- Sets the range of the stick that is registered as a neutral position.
- EnableRawPrint [Default - True]
- Enable/disable printing raw data that is being sent from the adapter.
- EnableDigitalPress [Default - False]
- If any press is past the TriggerDeadzone, it registers as a digital button, emulating digital triggers. Make sure the TriggerDeadzone setting is set properly!
- PortsEnabled [Default - 1]
- Enable/disable specific ports. Ports 1-4 supported. (PortsEnabled: 1 2 3 4 will enable all ports.)
- CalibrateCenter [Default - True]
- If enabled, when first running the programs, the stick's center will be recalibrated. Make sure to leave the stick in a neutral position on startup. Calibrating the sticks from the menu will override this option.
- EnableRumble [Default - False] -If enabled, gamecube controllers will receive haptic feedback from the game (Rumble.)
-
Delfinovin can not take exclusive control over the controller adapter. This means you will have to close anything that does (Yuzu, Dolphin, etc.) first, run the program and then open them.
-
By default, Delfinovin will calibrate the stick centers. However, if you calibrate the sticks in the stick menu, the new calibration for the ranges will take priority.
- Create new/default profiles for stick calibrations - Name and create new ones for quick access.
Credits and appreciation go to:
- Rubendal for writing the BitStream library!
- The LibUSB.NET team for writing the LibUSB.NET library! / WinUSB team at Microsoft for providing the driver
- Nefarius for writing the ViGEmBus driver and the ViGEmBus.NET client library
- Matt "ms4v" Cunningham for a great reference with GCNUSBFeeder and the vJoy library
- Gabriel "gemarcano" Marcano for providing the essential documentation on how the adapter sends data
- Pete "pbatard" Batard for Zadig/libwdi which makes setting up WinUSB convenient
- BarkingFrog for providing the math behind calibrating/centering sticks
- All of the testers in the Smash Ultimate Yuzu discord for helping iron out bugs!
- LibUSB.NET
- Nefarius.ViGEm.Client
- BitStream
Thank you! I am still learning a lot about the USB architecture and Gamecube Controllers, so any help / commits are appreciated! I can be contacted on Discord at Struggleton#4071 / Twitter at @Struggleton as well. If you are interested in what I've got going on here, please consider throwing a couple coins my way!