Hi,
I did the work for the Dualshock 2 of the Playstation. I used a Smart Joypad adapter with the ps2 controller.
All buttons on this controller are analog, but with the USB adapter, it seems that only the left and right sticks are analog, the other buttons becoming digital.
HID device address = 1, instance = 0 is unmounted
HID device address = 1, instance = 0 is mounted
HID Interface Protocol = None VID = 6666 PID = 0667
HID has 1 reports
VID = 6666, PID = 0667
Protocol 0
HID receive desc report:
05 01 09 04 A1 01 09 01 A1 00 05 09 19 01 29 10
15 00 25 01 35 00 45 01 75 01 95 10 81 02 05 01
09 30 09 31 15 00 26 FF 00 35 00 46 FF 00 66 00
00 75 08 95 02 81 02 05 01 09 32 09 35 15 00 26
FF 00 35 00 46 FF 00 66 00 00 75 08 95 02 81 02
C0 C0
HID device address = 1, instance = 0 is unmounted
-------------------------------------------------------------
Idle state :
00 00 80 7F 7F 80
The last four bytes are for the analog sticks.
------------------------------------------------------------
Left analog stick :
Top => 4th byte set to 00
Bottom => 4th byte set to FF
Left => 3rd byte set to 00
Right => 3rd byte set to FF
IDLE for Top-Bottom direction => 4th byte set to 7F or 80
IDLE for left-right direction => 3rd byte set to 7F or 80
-----------------------------------------------
Right analog stick :
Top => 6th byte set to 00
Bottom => 6th byte set to FF
Left => 5rd byte set to 00
Right => 5rd byte set to FF
IDLE for Top-Bottom direction => 6th byte set to 7F or 80
IDLE for left-right direction => 5rd byte set to 7F or 80
---------------------------------------------
Numeric top => 2nd byte pass from 00 to 10
Numeric bottom => 2nd byte pass from 00 to 40
Numeric left => 2nd byte pass from 00 to 80
Numeric right => 2nd byte pass from 00 to 20
--------------------------------------------
Cross => 1st byte pass from 00 to 04
Square => 1st byte pass from 00 to 08
Triangle => 1st byte pass from 00 to 01
Circle => 1st byte pass from 00 to 02
-------------------------------------------
Select => 2nd byte pass from 00 to 01
Start => 2nd byte pass from 00 to 08
----------------------------------------
L1 => 1st byte pass from 00 to 40
L2 => 1st byte pass from 00 to 10
R1 => 1st byte pass from 00 to 80
R2 => 1st byte pass from 00 to 20
---------------------------------
L3 (press left stick) => 2nd byte pass from 00 to 02
R3 (press right stick) => 2nd stick pass from 00 to 04
---------------------------------
I think the settings should be :
Standard controller mode :
A = X
B = O
X = square
Y = triangle
L trigger = L1, L2
R trigger = R1, R2
Vs fighting game mode (as ps2 vs fighting games) :
A = X
B = O
X = square
Y = triangle
L trigger = R1
R trigger = R2
X+Y+L trigger = L1
A+B+R trigger = L2
I think the select button on the PS2 controller should be used to change modes.