Homebrew Official HID to VPAD

Hucet_James

Member
Newcomer
Joined
Jun 6, 2016
Messages
22
Trophies
0
Age
54
XP
326
Country
United States
could you please try http://www.share-online.biz/dl/QZ9DPI8OPHA -> this ia a debug version with some more output

and generate a logfile when connecting the controller in loadiine and pressing a button or moving a stick ?

for each movement there will be some lines -> would be good if you could differ which lines come from which button/ direction movement




maybe if you do the steps above with the debug build and deliver the needed data maybe someone finds some time :)

we need the log when attaching the controller especially the lines with
vid xxxx
pid xxxx

and then the difference in the lines with HID: and about the 10 Bytes when pressing a button or moving a stick to a direction

we need for each button maybe the info pressing left is maybe byte 5 changes from 0x00 to 0x10 or like this
(for analog sticks we need byte position and range of values for the direction, most 00-7f, or 81-FF, 0x80 is in the middle untouched most times)

at the moment i dont know if i have to build a second debug version when you deliver the vid and pid -> tell me if you get the HID: + some Bytes lines

Okay, here is what happened:
I booted Loadiine gx2 with your debug file. I plugged the USBs and it was detected. Check.
Now, when I plugged the wavebird in and pressed analogue up, right, down, left, B and A, nothing happens and nothing is reported.

However, when I plug the GC official controller I have this which keeps repeating even when I don't touch to the controller:

00000001(0) attached!
>lstick.x F 0x10A76204
lstick.y F 0x11246E48
rstick.x F 0x11246E48
rstick.y F 0x11246E48 >
>lstick.x F 0x10A76204
lstick.y F 0x11246E48
rstick.x F 0x11246E48
rstick.y F 0x11246E48 >
>lstick.x F 0x10A76204
lstick.y F 0x11246E48
rstick.x F 0x11246E48
rstick.y F 0x11246E48 >
>

I pressed the A and B buttons but nothing I had to stop the loop written into the log.

I hope this will help knowing which builds work or don't. Let me know if you need more help, I am pretty good at booting Loadiine GX2 now :D
 

adel3532

New Member
Newbie
Joined
Jan 13, 2012
Messages
3
Trophies
0
XP
95
Country
Iran
so guys is there any body use Xbox one controller somehow on wii u by using this app?i dont know , by Cronus max or titan one , is there any way to use this controller?
i have a pro controller but as u know the elite controller is really great
 

FunThomas

Well-Known Member
Member
Joined
Jan 10, 2016
Messages
652
Trophies
0
XP
2,016
Country
Gambia, The
I hope this will help knowing which builds work or don't. Let me know if you need more help, I am pretty good at booting Loadiine GX2 now :D

so this sounds not very good :(
but without such a controller here it will be impossible for me to debug, it costs too much time to build x debug versions and analyse this controller

please try this version -> its build with latest loadiine but the old controller patcher
http://www.share-online.biz/dl/DODU5N8O5D8
 

Hucet_James

Member
Newcomer
Joined
Jun 6, 2016
Messages
22
Trophies
0
Age
54
XP
326
Country
United States
so this sounds not very good :(
but without such a controller here it will be impossible for me to debug, it costs too much time to build x debug versions and analyse this controller

please try this version -> its build with latest loadiine but the old controller patcher
http://www.share-online.biz/dl/DODU5N8O5D8


This is perfect, everything is working great both Wavebird and official regular GC controllers. Thank you very much, please let people who have issues with Wavebirds know about all of this !
 
  • Like
Reactions: FunThomas

AdmiralToucan

Well-Known Member
Member
Joined
Feb 22, 2016
Messages
106
Trophies
0
Age
33
XP
144
Country
Canada
could you please try http://www.share-online.biz/dl/QZ9DPI8OPHA -> this ia a debug version with some more output

and generate a logfile when connecting the controller in loadiine and pressing a button or moving a stick ?

for each movement there will be some lines -> would be good if you could differ which lines come from which button/ direction movement




maybe if you do the steps above with the debug build and deliver the needed data maybe someone finds some time :)

we need the log when attaching the controller especially the lines with
vid xxxx
pid xxxx

and then the difference in the lines with HID: and about the 10 Bytes when pressing a button or moving a stick to a direction

we need for each button maybe the info pressing left is maybe byte 5 changes from 0x00 to 0x10 or like this
(for analog sticks we need byte position and range of values for the direction, most 00-7f, or 81-FF, 0x80 is in the middle untouched most times)

at the moment i dont know if i have to build a second debug version when you deliver the vid and pid -> tell me if you get the HID: + some Bytes lines
I'm not very smart at this kind of stuff you see. Is this what you need?

handle 001f1252
physical device inst 00000000
vid 0f0d
pid 0092
interface index 00
sub class 00
protocol 00
max packet in 40
max packet out 40
HID-Device currently not supported!

I can't get the inputs or anything because my hori pokken controller isn't supported.

Button information was also found in a recent build of controller patcher too, but I don't know how to add it in or compile it.

setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VID], 0x0f,0x0d);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_PID], 0x00,0x92);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_A], 0x05,HID_POKKEN_BUTTON_1);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_B], 0x05,HID_POKKEN_BUTTON_2);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_X], 0x05,HID_POKKEN_BUTTON_3);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_Y], 0x05,HID_POKKEN_BUTTON_4);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_PLUS], 0x06,HID_POKKEN_BUTTON_5);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_MINUS], 0x06,HID_POKKEN_BUTTON_6);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_L], 0x06,HID_POKKEN_BUTTON_7);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_R], 0x06,HID_POKKEN_BUTTON_8);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_ZL], 0x06,HID_POKKEN_BUTTON_9);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_ZR], 0x06,HID_POKKEN_BUTTON_10);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_DPAD_MODE], CONTROLLER_PATCHER_VALUE_SET,CONTRPDM_Hat);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_DPAD_MASK], CONTROLLER_PATCHER_VALUE_SET,0x0F);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_N], 0x05,HID_POKKEN_BUTTON_DPAD_N);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_NE], 0x05,HID_POKKEN_BUTTON_DPAD_NE);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_E], 0x05,HID_POKKEN_BUTTON_DPAD_E);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_SE], 0x05,HID_POKKEN_BUTTON_DPAD_SE);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_S], 0x05,HID_POKKEN_BUTTON_DPAD_S);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_SW], 0x05,HID_POKKEN_BUTTON_DPAD_SW);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_W], 0x05,HID_POKKEN_BUTTON_DPAD_W);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_NW], 0x05,HID_POKKEN_BUTTON_DPAD_NW);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_NEUTRAL], 0x05,HID_POKKEN_BUTTON_DPAD_NEUTRAL);
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_PAD_COUNT], CONTROLLER_PATCHER_VALUE_SET,HID_POKKEN_PAD_COUNT);

edit:
I did some research and I'm trying to learn how to compile this on my own, but whenever I try to make the project I get errors
"l error: glm/glm.hpp: No such file or directory
#include "glm/glm.hpp"
^
compilation terminated."
 
Last edited by AdmiralToucan,

FunThomas

Well-Known Member
Member
Joined
Jan 10, 2016
Messages
652
Trophies
0
XP
2,016
Country
Gambia, The
I'm not very smart at this kind of stuff you see. Is this what you need?

sorry but its too time consuming to do this all without having the controller here to debug and always building debug versions and waiting for response
i have more important things in my real life for spending that hours ;-)

if you want to try to build for yourself try to use the search for devkitpro / devkitppc / compile loadiine -> if not gbatemp but google will find some things
 

AdmiralToucan

Well-Known Member
Member
Joined
Feb 22, 2016
Messages
106
Trophies
0
Age
33
XP
144
Country
Canada
sorry but its too time consuming to do this all without having the controller here to debug and always building debug versions and waiting for response
i have more important things in my real life for spending that hours ;-)

if you want to try to build for yourself try to use the search for devkitpro / devkitppc / compile loadiine -> if not gbatemp but google will find some things

I have installed all these things and I'm trying to compile loadiine, but I just get errors. I can build hid-to-vpad, but my pokken controller won't do anything, so I guess the inputs were done wrong?

Code:
entry.o: In function `__entry_menu':
entry.c:(.text.__entry_menu+0x2a8): undefined reference to `SYSLaunchTitle'
entry.c:(.text.__entry_menu+0x31c): undefined reference to `SYSLaunchTitle'
entry.c:(.text.__entry_menu+0x338): undefined reference to `SYSLaunchTitle'
collect2.exe: error: ld returned 1 exit status
make[1]: *** [/c/Users/A/Desktop/loadiine_gx2-Loadiine-nightly-0dffac5/loadi
ine_gx2.elf] Error 1
make: *** [build] Error 2

Once I figure it out I'll try to add the controller myself, but the hid I provided is correct.
 
Last edited by AdmiralToucan,

FunThomas

Well-Known Member
Member
Joined
Jan 10, 2016
Messages
652
Trophies
0
XP
2,016
Country
Gambia, The
Yeah I tried that and I still get the same error. Looks like there was some weird code in the entry.o file for smashbros. I was able to compile loadiine after I removed that weird line.

i put your PM also here (that other people can also learn from your problems and the way we go) :

Code:
    I have all of my inputs for my controller. How are the buttons converted from 00 00 00 00 00 00 00 00 to 0x00?

    HID 00 00 0F 80 80 80 80 00 (Neutral)
    HID 00 00 00 80 80 80 80 00 (Up)
    HID 00 00 01 80 80 80 80 00 (Up-Right)
    HID 00 00 02 80 80 80 80 00 (Right)
    HID 00 00 03 80 80 80 80 00 (Down-Right)
    HID 00 00 04 80 80 80 80 00 (Down)
    HID 00 00 05 80 80 80 80 00 (Down-Left)
    HID 00 00 06 80 80 80 80 00 (Left)
    HID 00 00 07 80 80 80 80 00 (Up-Left)
    HID 10 00 04 80 80 80 80 00 (L-Trigger)
    HID 20 00 04 80 80 80 80 00 (R-Trigger)
    HID 30 00 00 80 80 80 80 00 (L+R Trigger)
    HID 01 00 04 80 80 80 80 00 (Y)
    HID 02 00 04 80 80 80 80 00 (B)
    HID 04 00 00 80 80 80 80 00 (A)
    HID 08 00 00 80 80 80 80 00 (X)
    HID 03 00 00 80 80 80 80 00 (Y+B)
    HID 05 00 00 80 80 80 80 00 (Y+A)
    HID 09 00 00 80 80 80 80 00 (Y+X)
    HID 06 00 00 80 80 80 80 00 (B+A)
    HID 0A 00 00 80 80 80 80 00 (B+X)
    HID 0C 00 00 80 80 80 80 00 (X+A)
    HID 00 01 00 80 80 80 80 00 (select)
    HID 00 02 00 80 80 80 80 00 (start)
    HID 40 00 00 80 80 80 80 00 (ZL)
    HID 80 00 00 80 80 80 80 00 (ZR)
    HID 00 03 00 80 80 80 80 00 (select+start)
    HID 40 01 00 80 80 80 80 00 (select+ZL)
    HID 80 01 00 80 80 80 80 00 (select+ZR)
    HID 40 02 00 80 80 80 80 00 (start+ZL)
    HID 80 02 00 80 80 80 80 00 (start+ZR)
    HID C0 00 00 80 80 80 80 00 (ZL+ZR)

it looks a bit strange in the log

because sometimes the default value of byte 2 (counted from zero) for the direction isnt counted when pressing l or r

HID 00 00 0F 80 80 80 80 00 (Neutral)
HID 00 00 04 80 80 80 80 00 (Down)

HID 10 00 04 80 80 80 80 00 (L-Trigger)
HID 20 00 04 80 80 80 80 00 (R-Trigger)

so the second lines are maybe down and l or r trigger -> dont know maybe a bug in the state logging

but you can try to set the defines in controller_patcher.h like
#define HID_POKKEN_BUTTON_1 0x04

look what changes for each button and make the defines

and in controller_patcher.c 0x00 (is the byte position in hid read buffer)

setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_A], 0x00,HID_POKKEN_BUTTON_1);

for each direction/button and try if it works
 
Last edited by FunThomas,

AdmiralToucan

Well-Known Member
Member
Joined
Feb 22, 2016
Messages
106
Trophies
0
Age
33
XP
144
Country
Canada
Oops, sorry about that I wrote them down wrong on accident. These are the fixed ones!
Code:
HID 00 00 0F 80 80 80 80 00 (Neutral)
HID 00 00 00 80 80 80 80 00 (Up)
HID 00 00 01 80 80 80 80 00 (Up-Right)
HID 00 00 02 80 80 80 80 00 (Right)
HID 00 00 03 80 80 80 80 00 (Down-Right)
HID 00 00 04 80 80 80 80 00 (Down)
HID 00 00 05 80 80 80 80 00 (Down-Left)
HID 00 00 06 80 80 80 80 00 (Left)
HID 00 00 07 80 80 80 80 00 (Up-Left)
HID 10 00 0F 80 80 80 80 00 (L-Trigger)
HID 20 00 0F 80 80 80 80 00 (R-Trigger)
HID 30 00 0F 80 80 80 80 00 (L+R Trigger)
HID 01 00 0F 80 80 80 80 00  (Y)
HID 02 00 0F 80 80 80 80 00  (B)
HID 04 00 0F 80 80 80 80 00  (A)
HID 08 00 0F 80 80 80 80 00  (X)
HID 03 00 0F 80 80 80 80 00 (Y+B)
HID 05 00 0F 80 80 80 80 00 (Y+A)
HID 09 00 0F 80 80 80 80 00 (Y+X)
HID 06 00 0F 80 80 80 80 00 (B+A)
HID 0A 00 0F 80 80 80 80 00 (B+X)
HID 0C 00 0F 80 80 80 80 00 (X+A)
HID 00 01 0F 80 80 80 80 00 (select)
HID 00 02 0F 80 80 80 80 00 (start)
HID 40 00 0F 80 80 80 80 00 (ZL)
HID 80 00 0F 80 80 80 80 00 (ZR)
HID 00 03 0F 80 80 80 80 00 (select+start)
HID 40 01 0F 80 80 80 80 00 (select+ZL)
HID 80 01 0F 80 80 80 80 00 (select+ZR)
HID 40 02 0F 80 80 80 80 00 (start+ZL)
HID 80 02 0F 80 80 80 80 00 (start+ZR)
HID C0 00 0F 80 80 80 80 00 (ZL+ZR)

So if I'm trying to define the B button, I would put in HID 02 00 0F 80 80 80 80 00 --> 0x02 ???

I guess all this byte stuff is really confusing. I looked at the comments for other controllers like the DS3 for example and I see comments of //3 which corresspond to some 0x03's, but I don't understand.
 
Last edited by AdmiralToucan,

splatu

Member
Newcomer
Joined
Jun 4, 2016
Messages
22
Trophies
0
Age
35
XP
42
Country
Brazil
NO ;-)

i dont know what your problem is :)

How hard is it to map the Wii U gamepad gyro to mouse?

Right Now its only simulates the right stick, which makes de cursor move all the time as if i had it holded on a non central position. Hope you understanded it.
 

FunThomas

Well-Known Member
Member
Joined
Jan 10, 2016
Messages
652
Trophies
0
XP
2,016
Country
Gambia, The
How hard is it to map the Wii U gamepad gyro to mouse?

i dont know what you will use it for, but most times for the setup of movement you have a secondary input method

like in splatoon your can aim with the gyroscope but you can also target your view with the right stick if i remember right (my wiiu is off since 4 weeks)

but if you have more time it should be possible to do

when you look at vpad_functions.h and see
typedef struct
{
...
char unknown1c[0x52 - 0x1c]; /* Contains accelerometer and gyroscope data somewhere */...
} VPADData;

so it should also be possible to fake the gyroscope data with mouse input
 

AdmiralToucan

Well-Known Member
Member
Joined
Feb 22, 2016
Messages
106
Trophies
0
Age
33
XP
144
Country
Canada
I'm trying to figure out how to add my values to patcher c
Code:
#define HID_POKKEN_BUTTON_DPAD_N         0x00
#define HID_POKKEN_BUTTON_DPAD_NE        0x10
#define HID_POKKEN_BUTTON_DPAD_E         0x20
#define HID_POKKEN_BUTTON_DPAD_SE        0x30
#define HID_POKKEN_BUTTON_DPAD_S         0x40
#define HID_POKKEN_BUTTON_DPAD_SW        0x50
#define HID_POKKEN_BUTTON_DPAD_W         0x60
#define HID_POKKEN_BUTTON_DPAD_NW        0x70
#define HID_POKKEN_BUTTON_DPAD_NEUTRAL   0xF0
This is my D-pad in controller_patcher.h those values should be correct because they are the only ones that change when I push in a direction in loadiine. What do I do with this data for controller patcher.c?

Code:
        setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_N],            0x05,HID_POKKEN_BUTTON_DPAD_N);
        setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_NE],           0x05,HID_POKKEN_BUTTON_DPAD_NE);
        setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_E],            0x05,HID_POKKEN_BUTTON_DPAD_E);
        setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_SE],           0x05,HID_POKKEN_BUTTON_DPAD_SE);
        setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_S],            0x05,HID_POKKEN_BUTTON_DPAD_S);
        setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_SW],           0x05,HID_POKKEN_BUTTON_DPAD_SW);
        setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_W],            0x05,HID_POKKEN_BUTTON_DPAD_W);
        setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_NW],           0x05,HID_POKKEN_BUTTON_DPAD_NW);
        setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_NEUTRAL],      0x05,HID_POKKEN_BUTTON_DPAD_NEUTRAL);

I honestly don't know what to put there. Why is the default 0x05? What should I be looking at to put in the correct result? If I compile as is, then nothing works, so I'm thinking the 0x05, 0x06 are wrong?
 
Last edited by AdmiralToucan,

FunThomas

Well-Known Member
Member
Joined
Jan 10, 2016
Messages
652
Trophies
0
XP
2,016
Country
Gambia, The
I honestly don't know what to put there. Why is the default 0x05? What should I be looking at to put in the correct result? If I compile as is, then nothing works, so I'm thinking the 0x05, 0x06 are wrong?

so for your controller all the dpad things were in byte 2 (i hope it was started at zero) so it should look like
setConfigValue((u8*)&config_controller[CONTRPD_POKKEN][CONTRPS_VPAD_BUTTON_DPAD_W], 0x02,HID_POKKEN_BUTTON_DPAD_W);

but you have to be a bit more clean when making the defines, when you see in log 01 for the up-right:

HID 00 00 01 80 80 80 80 00 (Up-Right)

if you make a 0x10 out of a 0x01 -> it wont work :)
#define HID_POKKEN_BUTTON_DPAD_NE 0x10

dont switch the lower and upper nibble (4 Bits)

when you look in controller_patcher.c for all the setConfigValue() you will see the different byte positions for each controller
 
Last edited by FunThomas,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    SylverReZ @ SylverReZ: Also nice. Never really watched Fallout on Prime, but sounds like a good show. +1