Homebrew Official HID to VPAD

  • Thread starter Thread starter Maschell
  • Start date Start date
  • Views Views 842,572
  • Replies Replies 2,364
  • Likes Likes 100
Hello everyone, my arcade joystick only works when the buttons are released "on key press up". And this is a problem for my stick-dpad also... because i cant walk normally and only gets a pulse of walk when the stick or the dpad are released. someone has a good news about that?
 
Sorry, my native language is not English. The following message is conveyed through translation software:

I have a Betop TVP controller (Dinput controller, connecting via a 2.4G adapter) and a Betop Asura NE controller (Xinput controller, connecting via a USB cable). I would like to use both of them as Wii U Pro controllers via "HID to VPAD". However, neither controller is recognized by "HID to VPAD". Does anyone know how to fix this?

Here's what I know so far:
  1. Both controllers can be detected by "HID-Test", but pressing any buttons on either controller does not show any information in "HID-test".
  2. I have pulled the controller_patcher for "HID to VPAD" from GitHub, created configurations corresponding to the VID and HID for both controllers, and placed the .ini files in the [sd:\wiiu\controller] directory.


HID-Test information:
  • Betop TVP controller:
vid 20bc​
pid 503d​
interface index 00​
sub class 00​
protocol 00​
max packet in 40​
max packet out 40​
bytes transferred: 64​
​
Pos: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15​
00 00 08 80 80 80 80 00 00 00 00 00 00 00 00 00​
​
Press HOME to return to the Homebrew Launcher​
  • Betop Asura NE controller:
vid 054c​
pid 0268​
interface index 00​
sub class 00​
protocol 00​
max packet in 40​
max packet out 40​
bytes transferred: 64​
​
Pos: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15​
01 00 00 00 00 00 80 80 80 80 00 00 00 00 00 00​
​
Press HOME to return to the Homebrew Launcher​


ini files:
  • Betop TVP controller:
[vid=0x20bc,pid=0x503d]​
//Required​
Pad_Count=1​
//Buttons​
VPAD_BUTTON_A = 0x00,0x02​
VPAD_BUTTON_B = 0x00,0x04​
VPAD_BUTTON_X = 0x00,0x01​
VPAD_BUTTON_Y = 0x00,0x08​
​
VPAD_BUTTON_PLUS = 0x01,0x02​
VPAD_BUTTON_MINUS = 0x01,0x01​
VPAD_BUTTON_HOME = 0x01,0x10​
​
VPAD_BUTTON_L = 0x00,0x10​
VPAD_BUTTON_R = 0x00,0x20​
​
VPAD_BUTTON_STICK_L = 0x01,0x04​
VPAD_BUTTON_STICK_R = 0x01,0x08​
​
//Triggers​
VPAD_BUTTON_ZL = 0x00,0x40​
VPAD_BUTTON_ZR = 0x00,0x80​
​
//D-Pad​
DPAD_MODE = DPAD_HAT // normal mode​
DPad_MASK = 0x0F // mask: 0x0F​
​
VPAD_BUTTON_DPAD_N = 0x02,0x00 // postion: 0x02, value: 0x00​
VPAD_BUTTON_DPAD_NE = 0x02,0x01 // postion: 0x02, value: 0x01​
VPAD_BUTTON_DPAD_E = 0x02,0x02 // postion: 0x02, value: 0x02​
VPAD_BUTTON_DPAD_SE = 0x02,0x03 // postion: 0x02, value: 0x03​
VPAD_BUTTON_DPAD_S = 0x02,0x04 // postion: 0x02, value: 0x04​
VPAD_BUTTON_DPAD_SW = 0x02,0x05 // postion: 0x02, value: 0x05​
VPAD_BUTTON_DPAD_W = 0x02,0x06 // postion: 0x02, value: 0x06​
VPAD_BUTTON_DPAD_NW = 0x02,0x07 // postion: 0x02, value: 0x07​
VPAD_BUTTON_DPAD_Neutral = 0x02,0x0F // postion: 0x02, value: 0x0F​
​
//Analog Sticks​
​
VPad_L_Stick_X_Invert = //left stick X Axis​
VPad_L_Stick_Y_Invert = true //left stick Y Axis​
VPad_R_Stick_X_Invert = //right stick X Axis​
VPad_R_Stick_Y_Invert = true //right stick Y Axis​
​
VPAD_L_STICK_X = 0x03,0x80​
VPAD_L_STICK_X_MINMAX = 0x00,0xFF​
VPAD_L_STICK_X_DEADZONE = 0x05​
​
VPAD_L_STICK_Y = 0x04,0x80​
VPAD_L_STICK_Y_MINMAX = 0x00,0xFF​
VPAD_L_STICK_Y_DEADZONE = 0x05​
​
VPAD_R_STICK_X = 0x05,0x80​
VPAD_R_STICK_X_MINMAX = 0x00,0xFF​
VPAD_R_STICK_X_DEADZONE = 0x05​
​
VPAD_R_STICK_Y = 0x06,0x80​
VPAD_R_STICK_Y_MINMAX = 0x00,0xFF​
VPAD_R_STICK_Y_DEADZONE = 0x05​

  • Betop Asura NE controller:
[vid=0x054c,pid=0x0268]​
[IgnoreDefault] //Ignoring the built in default values​
VPAD_BUTTON_A = XINPUT_BUTTON_B​
VPAD_BUTTON_B = XINPUT_BUTTON_A​
VPAD_BUTTON_X = XINPUT_BUTTON_Y​
VPAD_BUTTON_Y = XINPUT_BUTTON_X​
​
VPAD_BUTTON_PLUS = XINPUT_BUTTON_START​
VPAD_BUTTON_MINUS = XINPUT_BUTTON_BACK​
VPAD_BUTTON_HOME = XINPUT_BUTTON_GUIDE​
​
VPAD_BUTTON_L = XINPUT_BUTTON_LB​
VPAD_BUTTON_R = XINPUT_BUTTON_RB​
​
VPAD_BUTTON_STICK_L = XINPUT_BUTTON_L3​
VPAD_BUTTON_STICK_R = XINPUT_BUTTON_R3​
​
VPAD_BUTTON_ZL = XINPUT_BUTTON_LT​
VPAD_BUTTON_ZR = XINPUT_BUTTON_RT​
​
DPAD_MODE = XINPUT_DPAD_MODE​
VPAD_BUTTON_UP = XINPUT_BUTTON_DPAD_UP​
VPAD_BUTTON_DOWN = XINPUT_BUTTON_DPAD_DOWN​
VPAD_BUTTON_LEFT = XINPUT_BUTTON_DPAD_LEFT​
VPAD_BUTTON_RIGHT = XINPUT_BUTTON_DPAD_RIGHT​
​
VPAD_L_STICK_X = XINPUT_STICK_L_X​
VPAD_L_STICK_Y = XINPUT_STICK_L_Y​
VPAD_R_STICK_X = XINPUT_STICK_R_X​
VPAD_R_STICK_Y = XINPUT_STICK_R_Y​
PAD_COUNT = 0x01​
 
Last edited by Leopold369,

Attachments

Last edited by patters,
Is there a version of this, or something similar that can act as a Wiimote instead of a Pro Controller? I have games I'd like to access remotely with the tool to run controllers over the network that only accept Wiimote input.
 
I have updated my fork of HID to VPAD for Aroma with a few more enhancements:

hid_to_vpad
  • Assigning a controller no longer instantly binds a device that reports a button as held while idle. Only a press made after you start waiting is accepted.
  • B (abort) and X (reset) while waiting for input now read the current GamePad state, and HOME cancels instead of resetting the binding.
controller_patcher
  • A pad produces no input until it has sent its first report. Previously its zeroed buffer was read as input, so a wireless receiver with no controller paired gave phantom stick/D-Pad input.
  • New opt-in REPORT_TIMEOUT config key: treats a pad as disconnected after a set time without a report. When a wireless pad sleeps or loses power, its last report (buttons and stick axes alike) no longer keeps being used as input.
  • Stick bit length and signedness now default correctly when not set in a config.
controller_patcher_configs
  • Retro-bit SEGA Saturn Wireless 8-Button Arcade Pad (V1), USB 2.4GHz receiver - mapped for 6 face button Street Fighter II layout in Virtual Console.

Release 0.21-alpha on GitHub: https://github.com/patters-match/hid_to_vpad/releases
Post automatically merged:

I also knocked up an Aroma port of HID Test. You have to disable the HID to VPAD plugin to use it.
https://github.com/patters-match/hid_test
 
Last edited by patters,
  • Like
Reactions: Darksabre72

Site & Scene News

New Hot Discussed User Submitted