Hacking WiinUPro - Pro Controller to PC Gamepad

  • Thread starter Thread starter KeyPuncher
  • Start date Start date
  • Views Views 432,245
  • Replies Replies 862
  • Likes Likes 34
Does anyone here have more than one Wii U Pro Controller?

Because Beta 3 has multi-controller support, but I only have one Pro controller.
 
  • Like
Reactions: Heimdallr
Hey man, you're work is awesome! But i found a problem :) when you assign the Up/down mouse axis to analog sticks, it's reversed...is there a way to fix it?
 
  • Like
Reactions: KeyPuncher
Hey man, you're work is awesome! But i found a problem :) when you assign the Up/down mouse axis to analog sticks, it's reversed...is there a way to fix it?


Thanks! Yeah, that's strange, for the virtual joysticks I had to invert the value coming from the Y axis to get the proper direction.
I'll look into making sure they aren't reversed for the mouse as well. I'll probably put up a checkbox for inverted just in case.
 
Glad to see Wiimotes working! One minor thing though is that my Avast! says that it's a suspicious program on first use of each beta. Not that much of a big deal though.
 
Glad to see Wiimotes working! One minor thing though is that my Avast! says that it's a suspicious program on first use of each beta. Not that much of a big deal though.


Suspicious eh, I'll see if there's anything I can do about it but I have no idea what antivirus programs look for or how.
 
Well...took me nearly an hour of trial and error-ing, but I managed to get it working as well. :)

I'm on windows 7, 32-bit. Not a laptop, which is probably why there wasn't a bluetooth setting anywhere in sight. Luckily, this meant that I could skip the part of adding the line. :)

Downloading and installing the toshiba stack went smoothly. It was probably with vjoy that I messed up something (hard to say what), but that didn't turn out to be the issue.

The issue, however, is with beta 3 (32-bit). Here's a report:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
at vJoyInterfaceWrap.vJoy._vJoyEnabled()
at vJoyInterfaceWrap.vJoy.vJoyEnabled()
at WiinUPro.WiiUProControllerForm.WiiUProControllerForm_Load(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
WiinUPro
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/Taleweaver/Desktop/WiinUPro%20Beta%203%2032-Bit/WiinUPro.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
WiimoteLib
Assembly Version: 1.8.0.0
Win32 Version: 1.8.0.0
CodeBase: file:///C:/Users/Taleweaver/Desktop/WiinUPro%20Beta%203%2032-Bit/WiimoteLib.DLL
----------------------------------------
vJoyInterfaceWrap
Assembly Version: 2.0.1.2
Win32 Version: 2.0.1.02
CodeBase: file:///C:/Users/Taleweaver/Desktop/WiinUPro%20Beta%203%2032-Bit/vJoyInterfaceWrap.DLL
----------------------------------------
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Worse: though the initial pairing went smoothly (I just clicked 'New connection' and pressed the sync button), deleting it and re-adding it gave an error. Something that it couldn't authenticate.

In hindsight, pairing it to the wiiu and then again to the PC kind of makes sense. But I struggled with it for quite a bit. :unsure:


However: everything after that was all good news. Great job, KeyPuncher. :D
 
  • Like
Reactions: KeyPuncher
..............
The issue, however, is with beta 3 (32-bit). Here's a report:

System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
...........

Worse: though the initial pairing went smoothly (I just clicked 'New connection' and pressed the sync button), deleting it and re-adding it gave an error. Something that it couldn't authenticate.

In hindsight, pairing it to the wiiu and then again to the PC kind of makes sense. But I struggled with it for quite a bit. :unsure:


However: everything after that was all good news. Great job, KeyPuncher. :D



I immediately recognized the exception. When I copied over the wrong dll file :shy: so I corrected that and reuploaded it.
Thanks for pointing that out.

I also experienced a similar issue in my Win7 32-bit virtual machine with the pairing and needing to connect it back to the Wii U; I assumed it was an issue with the virtual machine itself since the bluetooth device never connect back to the toshiba stack.
 
Just re-discovered that the solution I put in place to prevent keyboard keys from being pressed twice (once on button down and once on button up) makes it non-DirectX compatible input. I forgot about that when I went to fix it. So I will revert that soon. If you really need that input support you will have to use Beta 2 for now. Sorry about that.
 
Hey man, great work so far! I'm sorry to ask but, how is this any different from TeHaxor and Deku's work on this thread: http://gbatemp.net/threads/wii-u-pro-controller-to-pc-program-release.343159/


Good question.
This program provides a way to fully utilize both analog sticks of the controller by assigning them to a virtual joystick. Utilizing the full control of the analog sticks was the goal of this program since when I want to use a gamepad on my PC it's usually for games that play better using an analog movement input such as racing or a number of 3rd person games so I decided to make something that fits my needs and share it with you all. The work produced by TeHaxor and Daku currently only utilizes the analog sticks by moving the mouse.

Before I continue let me just say that this program isn't meant to be in competition with theirs. They have done some great work and if all you desire is keyboard mapping and mouse movement, then by all means use it, just those two things will allow you to play any PC game with the Pro Controller.

Now, some new features that this program offers besides the ability to turn your Pro Controller into a direct input gamepad includes the ability to change the speed of the mouse movement assignment as well as assign mouse movement to the digital inputs of the controller. I felt that allowing different mouse speeds was important because some games are very sensitive while others are not and although games have a sensitivity adjustment, I figured it would be more useful than harmful. Also, being able to assign the mouse movements to the button could have it's applications, though I personally have no current games I plan to use this feature in their may be others who do.

There is also the ability to enable turbo for assignments, so when you hold a button it will repeat it's output based on the speed you set the turbo to.
Also, multiple controllers are supported and I am working on adding in Wiimotes and their extensions to the list of controllers you can use.
I am still working on more features that will improve on the control translation, which I can talk about later for those who are interested.

When I am done with all the features I want to add in the program and it leaves Beta, there will be two versions: WiinUPro, the fully featured program and WiinUSoft which will simply map the controller to a virtual joystick for those of you who only want that feature. Both of course will be free just to be clear, I would never ask people to pay me for a hobby, I just don't want there to be any confusion over the names.
 
Good question.
This program provides a way to fully utilize both analog sticks of the controller by assigning them to a virtual joystick. Utilizing the full control of the analog sticks was the goal of this program since when I want to use a gamepad on my PC it's usually for games that play better using an analog movement input such as racing or a number of 3rd person games so I decided to make something that fits my needs and share it with you all. The work produced by TeHaxor and Daku currently only utilizes the analog sticks by moving the mouse.

Before I continue let me just say that this program isn't meant to be in competition with theirs. They have done some great work and if all you desire is keyboard mapping and mouse movement, then by all means use it, just those two things will allow you to play any PC game with the Pro Controller.

Now, some new features that this program offers besides the ability to turn your Pro Controller into a direct input gamepad includes the ability to change the speed of the mouse movement assignment as well as assign mouse movement to the digital inputs of the controller. I felt that allowing different mouse speeds was important because some games are very sensitive while others are not and although games have a sensitivity adjustment, I figured it would be more useful than harmful. Also, being able to assign the mouse movements to the button could have it's applications, though I personally have no current games I plan to use this feature in their may be others who do.

There is also the ability to enable turbo for assignments, so when you hold a button it will repeat it's output based on the speed you set the turbo to.
Also, multiple controllers are supported and I am working on adding in Wiimotes and their extensions to the list of controllers you can use.
I am still working on more features that will improve on the control translation, which I can talk about later for those who are interested.

When I am done with all the features I want to add in the program and it leaves Beta, there will be two versions: WiinUPro, the fully featured program and WiinUSoft which will simply map the controller to a virtual joystick for those of you who only want that feature. Both of course will be free just to be clear, I would never ask people to pay me for a hobby, I just don't want there to be any confusion over the names.

Thank you so much for your answer. You won me with the analog sticks already :D I'll keep following this thread closely too, as I'm really interest in a solution for using the WiiU Pro Controller on Xinput games. By the way, great work again.
 
Thank you so much for your answer. You won me with the analog sticks already :D I'll keep following this thread closely too, as I'm really interest in a solution for using the WiiU Pro Controller on Xinput games. By the way, great work again.


Thanks I appreciate the feedback. Vjoy is compatible with x360ce which will turn direct Input into XInput. I've had some success with the program but it's been kind of a pain for me but others have got it working no problem. Daku has made a custom xinput dll (I'm assuming from the x360ce source code which I was also looking at) which will work with the pro controller, I haven't tried it yet but sounds promising.

You can also use Pinnacle Gaming profiler but it's a bit messier in the interface. What I don't like about x360ce 's solution is that you have to paste the files that you need in every game folder you wish to use them in. I've been searching in hopes to find a more user friendly solution, but it currently sits at the bottom of my to-do list.
 
Well I think the same about x360ce. It's not really feasible if you got more than a couple games that you want to play, specially in my case, with Steam, HumbleBundle and all that. Btw, I don't know if I'm talking nonsense here but what prevents your software from working like MotionInJoy for the PS3 controller? They got some built-in Xinput emulator, not sure how they did that tho, if they coded it themselves or what.
 
... but what prevents your software from working like MotionInJoy for the PS3 controller? They got some built-in Xinput emulator, not sure how they did that tho, if they coded it themselves or what.


That's exactly what I would like tho know. I believe it's due to a driver they have developed to make the PS3 controller look like an 360 controller to windows somehow. This would definitely be ideal so we can have an all in one program. Unfortunately I don't know anything about device drivers. I would like to dive into it if I ever get the free time, it's hard enough already just to find time to work on this. But even if I do start to look at that stuff I'll still have to find out where to start on mimicking a 360 controller's input.
 
hmmm... the X and Y axis are not being recognised in your program, but the other buttons have been recognised. Is there any way to set the X and Y axis manually? or is there a glitch that doesn't read the analog sticks?
 
hmmm... the X and Y axis are not being recognised in your program, but the other buttons have been recognised. Is there any way to set the X and Y axis manually? or is there a glitch that doesn't read the analog sticks?


Do you mean in vJoy or WiinUPro? Because if it's not registering in Windows' game controller properties (window for testing game controllers with the red buttons) then you need to run the game controller calibration and that should fix it.
 
Is it possible to do this WITHOUT using the Toshiba Bluetooth stack? I really don't want to uninstall my windows one just for this
 
Is it possible to do this WITHOUT using the Toshiba Bluetooth stack? I really don't want to uninstall my windows one just for this


Not currently. The Toshiba stack is the only one that has been able to connect Wiimotes with motion plus inside (Wiimote+) and the Pro Controller has some of the same properties as the Wiimote+ which means it won't send data over the MS stack.

For me, The toshiba stack only takes over 1 USB port. So even after uninstalling the MS stack and installing the Toshiba one, if I plug in my Bluetooth Dongle into a different USB port the Microsoft stack will re-initialize and take control of the device. Pretty handy. I can't say it will be like that for everyone but it is for me on Windows 7 64-bit using a Gigabyte Motherboard.
 

Site & Scene News

Popular threads in this forum