Joystick testing thread

https://github.com/MiSTer-devel/Main_MiSTer/wiki

Moderators: Mug UK, Zorro 2, spiny, Greenious, Sorgelig, Moderator Team

Sorgelig
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 3089
Joined: Mon Dec 14, 2015 10:51 am
Location: Russia/Taiwan

Re: Joystick testing thread

Postby Sorgelig » Wed Dec 06, 2017 11:49 pm

how about non-arcade cores? For example NES, TurboGrafx16?

JimDrew
Atari Super Hero
Atari Super Hero
Posts: 750
Joined: Mon Nov 04, 2013 5:23 pm

Re: Joystick testing thread

Postby JimDrew » Thu Dec 07, 2017 5:00 pm

Sorgelig wrote:how about non-arcade cores? For example NES, TurboGrafx16?


I am not a fan of these systems, so I have not setup these emulations. I will do that and let you know the results.
I am the flux ninja

JimDrew
Atari Super Hero
Atari Super Hero
Posts: 750
Joined: Mon Nov 04, 2013 5:23 pm

Re: Joystick testing thread

Postby JimDrew » Fri Dec 08, 2017 8:54 pm

Ok, so I tested several consoles and NONE of them detect the UP button. The only thing that actually does detect the UP button during the "Joystick Setup" in the OSD is the manu menu itself.
I am the flux ninja

JimDrew
Atari Super Hero
Atari Super Hero
Posts: 750
Joined: Mon Nov 04, 2013 5:23 pm

Re: Joystick testing thread

Postby JimDrew » Sat Dec 09, 2017 9:10 pm

Any idea why the menu joystick setup works fine with these INEXT joysticks, and none of the arcade machines, consoles, or computers cores' joystick setups do?
I am the flux ninja

User avatar
Newsdee
Atari God
Atari God
Posts: 1216
Joined: Fri Sep 19, 2014 8:40 am

Re: Joystick testing thread

Postby Newsdee » Sat Dec 09, 2017 9:56 pm

JimDrew wrote:Any idea why the menu joystick setup works fine with these INEXT joysticks, and none of the arcade machines, consoles, or computers cores' joystick setups do?

Does any other controller work?

JimDrew
Atari Super Hero
Atari Super Hero
Posts: 750
Joined: Mon Nov 04, 2013 5:23 pm

Re: Joystick testing thread

Postby JimDrew » Sun Dec 10, 2017 12:52 am

Yep! I have a PS3 looking controller from China that works perfectly. It's just these INEXT controllers that don't work with any of the cores, except the menu.rpf.
I am the flux ninja

Sorgelig
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 3089
Joined: Mon Dec 14, 2015 10:51 am
Location: Russia/Taiwan

Re: Joystick testing thread

Postby Sorgelig » Sun Dec 10, 2017 12:58 am

Do you use powered or un-powered HUBs?
In case of un-powered HUBs or direct plug to DE10-nano it;'s possible that iNext pad consumes too much power and thus work erratically.

JimDrew
Atari Super Hero
Atari Super Hero
Posts: 750
Joined: Mon Nov 04, 2013 5:23 pm

Re: Joystick testing thread

Postby JimDrew » Sun Dec 10, 2017 6:38 am

I tried power and unpowered, same results. Like I said, the menu works perfectly. You can go to the joystick setup and it recognizes ALL of the buttons, including UP. NONE of the cores (arcade, console, computer) recognize the UP button when you do the joystick setup from within the core. The INEXT work perfectly with a RPi3.
I am the flux ninja

Sorgelig
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 3089
Joined: Mon Dec 14, 2015 10:51 am
Location: Russia/Taiwan

Re: Joystick testing thread

Postby Sorgelig » Sun Dec 10, 2017 10:15 am

Try to delete config folder from SD card - it will delete all settings. May be you've defined this joystick incorrectly in Menu core and it start to affect the other cores.
Basically there are several way to fix it:
1) fix by yourself.
2) wait someone with the same pad and the same problem and ability to program.
3) send this pad to me - i will fix.

JimDrew
Atari Super Hero
Atari Super Hero
Posts: 750
Joined: Mon Nov 04, 2013 5:23 pm

Re: Joystick testing thread

Postby JimDrew » Sun Dec 10, 2017 6:35 pm

I will try deleting the config and see if that works. If it doesn't, then you can PM me your address and I can send you a set of these INEXT controllers.
I am the flux ninja

Sorgelig
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 3089
Joined: Mon Dec 14, 2015 10:51 am
Location: Russia/Taiwan

Re: Joystick testing thread

Postby Sorgelig » Mon Dec 11, 2017 2:23 am

JimDrew wrote:I will try deleting the config and see if that works. If it doesn't, then you can PM me your address and I can send you a set of these INEXT controllers.

let me know if deleting config helped or not, and i will give you my address if not.

JimDrew
Atari Super Hero
Atari Super Hero
Posts: 750
Joined: Mon Nov 04, 2013 5:23 pm

Re: Joystick testing thread

Postby JimDrew » Fri Dec 15, 2017 5:30 pm

Well, deleting the config made no difference. However, I was able to figure out a solution.

During the joystick setup I can press and hold each button for whatever length of time I like with my USB joystick that looks like a PS3 controller. I can also do the same for the INEXT controller, EXCEPT for the UP button. If I press the UP button for more than about 100ms, it hangs at that setup option (looking for UP). If I just briefly "tap" the UP button, it sees the UP button and assigns it perfectly. This is the case with the main menu and all cores. So, I can use these INEXT controllers now - I just have to remember when it comes to setting the UP button, it has to be a quick tap not a normal press lasting for more than a few hundred milliseconds.
I am the flux ninja

Sorgelig
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 3089
Joined: Mon Dec 14, 2015 10:51 am
Location: Russia/Taiwan

Re: Joystick testing thread

Postby Sorgelig » Fri Dec 15, 2017 5:46 pm

Weird behavior. I have no idea what causes this. Technically from software point of view, there is no difference which direction is it. Probably it's some sort of hardware incompatibility. May be it can be fixed or workaround'ed - hard to tell without having it.
But if it satisfies you now, then ok :)

P.S.: it's possible there is some problem in Linux Kernel's USB code.

JimDrew
Atari Super Hero
Atari Super Hero
Posts: 750
Joined: Mon Nov 04, 2013 5:23 pm

Re: Joystick testing thread

Postby JimDrew » Fri Dec 15, 2017 8:41 pm

If you want to see one yourself I would be happy to send you one.
I am the flux ninja

Locutus73
Captain Atari
Captain Atari
Posts: 170
Joined: Wed Feb 07, 2018 6:13 pm

Re: Joystick testing thread

Postby Locutus73 » Mon Mar 05, 2018 4:13 pm

Hi, the last weekend I was able to perform some tests combining some of my joypads with some USB receivers dongles, so I’m here to share the results:

1) Sony Dual Shock 3 directly wired through USB to the DE10-Nano: VID:PID=054c:0268 it seems that the DS3 is flooding the board with events (probably from motion sensors), but the main MiSTer exec performs a filter. However I observed a strange behaviour: if I don’t touch any button I don’t see any event (flood completely filtered), if I press some specific buttons (i.e. left dpad, select, start, PlayStation button) I can see the button down and button up events (flood completely filtered), but if I press other buttons I see the button down, a flood of unfiltered events and, finally, the button up event. Here’s the logs I captured:

Code: Select all

DS3 wired USB (054c:0268)

UP:Input event: type=EV_KEY, code=292(0x124), value=1
Input event: type=EV_ABS, Axis=44, Offset:=40
Input event: type=EV_ABS, Axis=44, Offset:=58
Input event: type=EV_ABS, Axis=44, Offset:=68
Input event: type=EV_ABS, Axis=44, Offset:=71
Input event: type=EV_ABS, Axis=44, Offset:=73
Input event: type=EV_ABS, Axis=44, Offset:=71
Input event: type=EV_ABS, Axis=44, Offset:=62
Input event: type=EV_ABS, Axis=44, Offset:=36
Input event: type=EV_KEY, code=292(0x124), value=0
Input event: type=EV_ABS, Axis=44, Offset:=0

DOWN:Input event: type=EV_KEY, code=294(0x126), value=1
Input event: type=EV_ABS, Axis=46, Offset:=63
Input event: type=EV_ABS, Axis=46, Offset:=79
Input event: type=EV_ABS, Axis=46, Offset:=87
Input event: type=EV_ABS, Axis=46, Offset:=90
Input event: type=EV_ABS, Axis=46, Offset:=92
Input event: type=EV_ABS, Axis=46, Offset:=91
Input event: type=EV_ABS, Axis=46, Offset:=87
Input event: type=EV_ABS, Axis=46, Offset:=72
Input event: type=EV_ABS, Axis=46, Offset:=23
Input event: type=EV_KEY, code=294(0x126), value=0
Input event: type=EV_ABS, Axis=46, Offset:=0

LEFT:Input event: type=EV_KEY, code=295(0x127), value=1
Input event: type=EV_KEY, code=295(0x127), value=0

RIGHT:Input event: type=EV_KEY, code=293(0x125), value=1
Input event: type=EV_ABS, Axis=45, Offset:=39
Input event: type=EV_ABS, Axis=45, Offset:=56
Input event: type=EV_ABS, Axis=45, Offset:=69
Input event: type=EV_ABS, Axis=45, Offset:=76
Input event: type=EV_ABS, Axis=45, Offset:=80
Input event: type=EV_ABS, Axis=45, Offset:=81
Input event: type=EV_ABS, Axis=45, Offset:=79
Input event: type=EV_ABS, Axis=45, Offset:=72
Input event: type=EV_ABS, Axis=45, Offset:=52
Input event: type=EV_ABS, Axis=45, Offset:=12
Input event: type=EV_KEY, code=293(0x125), value=0
Input event: type=EV_ABS, Axis=45, Offset:=0

CROSS:Input event: type=EV_KEY, code=302(0x12e), value=1
Input event: type=EV_ABS, Axis=54, Offset:=56
Input event: type=EV_ABS, Axis=54, Offset:=58
Input event: type=EV_ABS, Axis=54, Offset:=59
Input event: type=EV_ABS, Axis=54, Offset:=57
Input event: type=EV_ABS, Axis=54, Offset:=50
Input event: type=EV_ABS, Axis=54, Offset:=17
Input event: type=EV_KEY, code=302(0x12e), value=0
Input event: type=EV_ABS, Axis=54, Offset:=0

CIRCLE:Input event: type=EV_KEY, code=301(0x12d), value=1
Input event: type=EV_ABS, Axis=53, Offset:=46
Input event: type=EV_ABS, Axis=53, Offset:=36
Input event: type=EV_ABS, Axis=53, Offset:=17
Input event: type=EV_KEY, code=301(0x12d), value=0
Input event: type=EV_ABS, Axis=53, Offset:=0

SQUARE:Input event: type=EV_KEY, code=303(0x12f), value=1
Input event: type=EV_ABS, Axis=55, Offset:=65
Input event: type=EV_ABS, Axis=55, Offset:=71
Input event: type=EV_ABS, Axis=55, Offset:=73
Input event: type=EV_ABS, Axis=55, Offset:=65
Input event: type=EV_ABS, Axis=55, Offset:=46
Input event: type=EV_KEY, code=303(0x12f), value=0
Input event: type=EV_ABS, Axis=55, Offset:=0

TRIANGLE:Input event: type=EV_KEY, code=300(0x12c), value=1
Input event: type=EV_ABS, Axis=52, Offset:=50
Input event: type=EV_ABS, Axis=52, Offset:=52
Input event: type=EV_ABS, Axis=52, Offset:=50
Input event: type=EV_ABS, Axis=52, Offset:=47
Input event: type=EV_ABS, Axis=52, Offset:=39
Input event: type=EV_KEY, code=300(0x12c), value=0
Input event: type=EV_ABS, Axis=52, Offset:=0

L1:Input event: type=EV_KEY, code=298(0x12a), value=1
Input event: type=EV_ABS, Axis=50, Offset:=47
Input event: type=EV_ABS, Axis=50, Offset:=66
Input event: type=EV_ABS, Axis=50, Offset:=78
Input event: type=EV_ABS, Axis=50, Offset:=87
Input event: type=EV_ABS, Axis=50, Offset:=93
Input event: type=EV_ABS, Axis=50, Offset:=95
Input event: type=EV_ABS, Axis=50, Offset:=92
Input event: type=EV_ABS, Axis=50, Offset:=81
Input event: type=EV_ABS, Axis=50, Offset:=64
Input event: type=EV_ABS, Axis=50, Offset:=25
Input event: type=EV_KEY, code=298(0x12a), value=0
Input event: type=EV_ABS, Axis=50, Offset:=0

R1:Input event: type=EV_KEY, code=299(0x12b), value=1
Input event: type=EV_ABS, Axis=51, Offset:=67
Input event: type=EV_ABS, Axis=51, Offset:=70
Input event: type=EV_ABS, Axis=51, Offset:=73
Input event: type=EV_ABS, Axis=51, Offset:=75
Input event: type=EV_ABS, Axis=51, Offset:=76
Input event: type=EV_ABS, Axis=51, Offset:=75
Input event: type=EV_ABS, Axis=51, Offset:=68
Input event: type=EV_KEY, code=299(0x12b), value=0
Input event: type=EV_ABS, Axis=51, Offset:=0

L2:Input event: type=EV_KEY, code=296(0x128), value=1
Input event: type=EV_ABS, Axis=48, Offset:=54
Input event: type=EV_ABS, Axis=48, Offset:=88
Input event: type=EV_ABS, Axis=48, Offset:=157
Input event: type=EV_ABS, Axis=48, Offset:=255
Input event: type=EV_ABS, Axis=48, Offset:=157
Input event: type=EV_ABS, Axis=48, Offset:=66
Input event: type=EV_KEY, code=296(0x128), value=0
Input event: type=EV_ABS, Axis=48, Offset:=0

R2:Input event: type=EV_KEY, code=297(0x129), value=1
Input event: type=EV_ABS, Axis=49, Offset:=76
Input event: type=EV_ABS, Axis=49, Offset:=140
Input event: type=EV_ABS, Axis=49, Offset:=249
Input event: type=EV_ABS, Axis=49, Offset:=255
Input event: type=EV_ABS, Axis=49, Offset:=220
Input event: type=EV_ABS, Axis=49, Offset:=121
Input event: type=EV_ABS, Axis=49, Offset:=66
Input event: type=EV_KEY, code=297(0x129), value=0
Input event: type=EV_ABS, Axis=49, Offset:=0

L3:Input event: type=EV_ABS, Axis=0, Offset:=138
Input event: type=EV_KEY, code=289(0x121), value=1
Input event: type=EV_ABS, Axis=0, Offset:=139
Input event: type=EV_ABS, Axis=0, Offset:=141
Input event: type=EV_ABS, Axis=0, Offset:=144
Input event: type=EV_KEY, code=289(0x121), value=0
Input event: type=EV_ABS, Axis=0, Offset:=141

R3:Input event: type=EV_KEY, code=290(0x122), value=1
Input event: type=EV_ABS, Axis=2, Offset:=118
Input event: type=EV_ABS, Axis=2, Offset:=117
Input event: type=EV_ABS, Axis=2, Offset:=118
Input event: type=EV_KEY, code=290(0x122), value=0

SELECT:Input event: type=EV_KEY, code=288(0x120), value=1
Input event: type=EV_KEY, code=288(0x120), value=0

START:Input event: type=EV_KEY, code=291(0x123), value=1
Input event: type=EV_KEY, code=291(0x123), value=0

PLAYSTATION:Input event: type=EV_KEY, code=704(0x2c0), value=1
Input event: type=EV_KEY, code=704(0x2c0), value=0

LEFT_ANALOG (clockwise circle from 0 to 12):Input event: type=EV_ABS, Axis=1, Offset:=118
Input event: type=EV_ABS, Axis=1, Offset:=114
Input event: type=EV_ABS, Axis=1, Offset:=101
Input event: type=EV_ABS, Axis=1, Offset:=88
Input event: type=EV_ABS, Axis=0, Offset:=140
Input event: type=EV_ABS, Axis=1, Offset:=81
Input event: type=EV_ABS, Axis=0, Offset:=143
Input event: type=EV_ABS, Axis=1, Offset:=72
Input event: type=EV_ABS, Axis=0, Offset:=146
Input event: type=EV_ABS, Axis=1, Offset:=65
Input event: type=EV_ABS, Axis=0, Offset:=148
Input event: type=EV_ABS, Axis=1, Offset:=56
Input event: type=EV_ABS, Axis=0, Offset:=149
Input event: type=EV_ABS, Axis=1, Offset:=48
Input event: type=EV_ABS, Axis=1, Offset:=41
Input event: type=EV_ABS, Axis=0, Offset:=150
Input event: type=EV_ABS, Axis=1, Offset:=33
Input event: type=EV_ABS, Axis=0, Offset:=149
Input event: type=EV_ABS, Axis=1, Offset:=28
Input event: type=EV_ABS, Axis=0, Offset:=150
Input event: type=EV_ABS, Axis=1, Offset:=21
Input event: type=EV_ABS, Axis=1, Offset:=16
Input event: type=EV_ABS, Axis=1, Offset:=11
Input event: type=EV_ABS, Axis=1, Offset:=4
Input event: type=EV_ABS, Axis=1, Offset:=0
Input event: type=EV_ABS, Axis=0, Offset:=152
Input event: type=EV_ABS, Axis=0, Offset:=154
Input event: type=EV_ABS, Axis=0, Offset:=157
Input event: type=EV_ABS, Axis=0, Offset:=160
Input event: type=EV_ABS, Axis=0, Offset:=161
Input event: type=EV_ABS, Axis=0, Offset:=162
Input event: type=EV_ABS, Axis=0, Offset:=163
Input event: type=EV_ABS, Axis=0, Offset:=164
Input event: type=EV_ABS, Axis=0, Offset:=165
Input event: type=EV_ABS, Axis=0, Offset:=166
Input event: type=EV_ABS, Axis=0, Offset:=167
Input event: type=EV_ABS, Axis=0, Offset:=168
Input event: type=EV_ABS, Axis=0, Offset:=173
Input event: type=EV_ABS, Axis=0, Offset:=178
Input event: type=EV_ABS, Axis=0, Offset:=184
Input event: type=EV_ABS, Axis=0, Offset:=186
Input event: type=EV_ABS, Axis=0, Offset:=189
Input event: type=EV_ABS, Axis=0, Offset:=195
Input event: type=EV_ABS, Axis=0, Offset:=201
Input event: type=EV_ABS, Axis=0, Offset:=210
Input event: type=EV_ABS, Axis=0, Offset:=216
Input event: type=EV_ABS, Axis=0, Offset:=220
Input event: type=EV_ABS, Axis=0, Offset:=223
Input event: type=EV_ABS, Axis=0, Offset:=227
Input event: type=EV_ABS, Axis=0, Offset:=232
Input event: type=EV_ABS, Axis=1, Offset:=2
Input event: type=EV_ABS, Axis=0, Offset:=237
Input event: type=EV_ABS, Axis=1, Offset:=5
Input event: type=EV_ABS, Axis=0, Offset:=240
Input event: type=EV_ABS, Axis=1, Offset:=9
Input event: type=EV_ABS, Axis=0, Offset:=245
Input event: type=EV_ABS, Axis=1, Offset:=13
Input event: type=EV_ABS, Axis=0, Offset:=248
Input event: type=EV_ABS, Axis=1, Offset:=18
Input event: type=EV_ABS, Axis=0, Offset:=252
Input event: type=EV_ABS, Axis=1, Offset:=21
Input event: type=EV_ABS, Axis=0, Offset:=254
Input event: type=EV_ABS, Axis=1, Offset:=24
Input event: type=EV_ABS, Axis=0, Offset:=255
Input event: type=EV_ABS, Axis=1, Offset:=27
Input event: type=EV_ABS, Axis=1, Offset:=29
Input event: type=EV_ABS, Axis=1, Offset:=33
Input event: type=EV_ABS, Axis=1, Offset:=36
Input event: type=EV_ABS, Axis=1, Offset:=38
Input event: type=EV_ABS, Axis=1, Offset:=41
Input event: type=EV_ABS, Axis=1, Offset:=45
Input event: type=EV_ABS, Axis=1, Offset:=50
Input event: type=EV_ABS, Axis=1, Offset:=56
Input event: type=EV_ABS, Axis=1, Offset:=61
Input event: type=EV_ABS, Axis=1, Offset:=67
Input event: type=EV_ABS, Axis=1, Offset:=72
Input event: type=EV_ABS, Axis=1, Offset:=78
Input event: type=EV_ABS, Axis=1, Offset:=83
Input event: type=EV_ABS, Axis=1, Offset:=86
Input event: type=EV_ABS, Axis=1, Offset:=89
Input event: type=EV_ABS, Axis=1, Offset:=91
Input event: type=EV_ABS, Axis=1, Offset:=94
Input event: type=EV_ABS, Axis=1, Offset:=97
Input event: type=EV_ABS, Axis=1, Offset:=100
Input event: type=EV_ABS, Axis=1, Offset:=104
Input event: type=EV_ABS, Axis=1, Offset:=109
Input event: type=EV_ABS, Axis=1, Offset:=114
Input event: type=EV_ABS, Axis=1, Offset:=142
Input event: type=EV_ABS, Axis=1, Offset:=151
Input event: type=EV_ABS, Axis=1, Offset:=156
Input event: type=EV_ABS, Axis=1, Offset:=160
Input event: type=EV_ABS, Axis=1, Offset:=165
Input event: type=EV_ABS, Axis=1, Offset:=169
Input event: type=EV_ABS, Axis=1, Offset:=175
Input event: type=EV_ABS, Axis=1, Offset:=181
Input event: type=EV_ABS, Axis=1, Offset:=186
Input event: type=EV_ABS, Axis=1, Offset:=191
Input event: type=EV_ABS, Axis=1, Offset:=194
Input event: type=EV_ABS, Axis=1, Offset:=200
Input event: type=EV_ABS, Axis=1, Offset:=205
Input event: type=EV_ABS, Axis=1, Offset:=212
Input event: type=EV_ABS, Axis=1, Offset:=219
Input event: type=EV_ABS, Axis=1, Offset:=224
Input event: type=EV_ABS, Axis=1, Offset:=231
Input event: type=EV_ABS, Axis=1, Offset:=235
Input event: type=EV_ABS, Axis=0, Offset:=251
Input event: type=EV_ABS, Axis=1, Offset:=241
Input event: type=EV_ABS, Axis=0, Offset:=246
Input event: type=EV_ABS, Axis=1, Offset:=246
Input event: type=EV_ABS, Axis=0, Offset:=242
Input event: type=EV_ABS, Axis=1, Offset:=250
Input event: type=EV_ABS, Axis=0, Offset:=236
Input event: type=EV_ABS, Axis=1, Offset:=254
Input event: type=EV_ABS, Axis=0, Offset:=231
Input event: type=EV_ABS, Axis=1, Offset:=255
Input event: type=EV_ABS, Axis=0, Offset:=226
Input event: type=EV_ABS, Axis=0, Offset:=220
Input event: type=EV_ABS, Axis=0, Offset:=214
Input event: type=EV_ABS, Axis=0, Offset:=208
Input event: type=EV_ABS, Axis=0, Offset:=202
Input event: type=EV_ABS, Axis=0, Offset:=196
Input event: type=EV_ABS, Axis=0, Offset:=190
Input event: type=EV_ABS, Axis=0, Offset:=184
Input event: type=EV_ABS, Axis=0, Offset:=175
Input event: type=EV_ABS, Axis=0, Offset:=166
Input event: type=EV_ABS, Axis=0, Offset:=158
Input event: type=EV_ABS, Axis=0, Offset:=149
Input event: type=EV_ABS, Axis=0, Offset:=142
Input event: type=EV_ABS, Axis=0, Offset:=114
Input event: type=EV_ABS, Axis=0, Offset:=109
Input event: type=EV_ABS, Axis=0, Offset:=102
Input event: type=EV_ABS, Axis=0, Offset:=95
Input event: type=EV_ABS, Axis=0, Offset:=89
Input event: type=EV_ABS, Axis=0, Offset:=77
Input event: type=EV_ABS, Axis=0, Offset:=63
Input event: type=EV_ABS, Axis=0, Offset:=47
Input event: type=EV_ABS, Axis=0, Offset:=30
Input event: type=EV_ABS, Axis=0, Offset:=16
Input event: type=EV_ABS, Axis=1, Offset:=248
Input event: type=EV_ABS, Axis=0, Offset:=6
Input event: type=EV_ABS, Axis=1, Offset:=238
Input event: type=EV_ABS, Axis=0, Offset:=0
Input event: type=EV_ABS, Axis=1, Offset:=229
Input event: type=EV_ABS, Axis=1, Offset:=220
Input event: type=EV_ABS, Axis=1, Offset:=215
Input event: type=EV_ABS, Axis=1, Offset:=208
Input event: type=EV_ABS, Axis=1, Offset:=201
Input event: type=EV_ABS, Axis=1, Offset:=196
Input event: type=EV_ABS, Axis=1, Offset:=188
Input event: type=EV_ABS, Axis=1, Offset:=180
Input event: type=EV_ABS, Axis=1, Offset:=170
Input event: type=EV_ABS, Axis=1, Offset:=164
Input event: type=EV_ABS, Axis=1, Offset:=160
Input event: type=EV_ABS, Axis=1, Offset:=155
Input event: type=EV_ABS, Axis=1, Offset:=149
Input event: type=EV_ABS, Axis=1, Offset:=144
Input event: type=EV_ABS, Axis=1, Offset:=142
Input event: type=EV_ABS, Axis=1, Offset:=138
Input event: type=EV_ABS, Axis=1, Offset:=115
Input event: type=EV_ABS, Axis=1, Offset:=108
Input event: type=EV_ABS, Axis=1, Offset:=100
Input event: type=EV_ABS, Axis=1, Offset:=92
Input event: type=EV_ABS, Axis=1, Offset:=86
Input event: type=EV_ABS, Axis=1, Offset:=79
Input event: type=EV_ABS, Axis=1, Offset:=72
Input event: type=EV_ABS, Axis=1, Offset:=68
Input event: type=EV_ABS, Axis=1, Offset:=64
Input event: type=EV_ABS, Axis=1, Offset:=61
Input event: type=EV_ABS, Axis=1, Offset:=57
Input event: type=EV_ABS, Axis=1, Offset:=52
Input event: type=EV_ABS, Axis=1, Offset:=46
Input event: type=EV_ABS, Axis=1, Offset:=36
Input event: type=EV_ABS, Axis=1, Offset:=29
Input event: type=EV_ABS, Axis=1, Offset:=20
Input event: type=EV_ABS, Axis=0, Offset:=6
Input event: type=EV_ABS, Axis=1, Offset:=13
Input event: type=EV_ABS, Axis=0, Offset:=10
Input event: type=EV_ABS, Axis=1, Offset:=8
Input event: type=EV_ABS, Axis=0, Offset:=15
Input event: type=EV_ABS, Axis=1, Offset:=4
Input event: type=EV_ABS, Axis=0, Offset:=17
Input event: type=EV_ABS, Axis=1, Offset:=2
Input event: type=EV_ABS, Axis=0, Offset:=20
Input event: type=EV_ABS, Axis=1, Offset:=0
Input event: type=EV_ABS, Axis=0, Offset:=22
Input event: type=EV_ABS, Axis=0, Offset:=24
Input event: type=EV_ABS, Axis=0, Offset:=28
Input event: type=EV_ABS, Axis=0, Offset:=33
Input event: type=EV_ABS, Axis=0, Offset:=39
Input event: type=EV_ABS, Axis=0, Offset:=48
Input event: type=EV_ABS, Axis=0, Offset:=54
Input event: type=EV_ABS, Axis=0, Offset:=61
Input event: type=EV_ABS, Axis=0, Offset:=68
Input event: type=EV_ABS, Axis=0, Offset:=76
Input event: type=EV_ABS, Axis=0, Offset:=77
Input event: type=EV_ABS, Axis=0, Offset:=78
Input event: type=EV_ABS, Axis=0, Offset:=80
Input event: type=EV_ABS, Axis=0, Offset:=83
Input event: type=EV_ABS, Axis=0, Offset:=87
Input event: type=EV_ABS, Axis=0, Offset:=90
Input event: type=EV_ABS, Axis=0, Offset:=97
Input event: type=EV_ABS, Axis=0, Offset:=103
Input event: type=EV_ABS, Axis=0, Offset:=111
Input event: type=EV_ABS, Axis=0, Offset:=116
Input event: type=EV_ABS, Axis=0, Offset:=138
Input event: type=EV_ABS, Axis=0, Offset:=142
Input event: type=EV_ABS, Axis=0, Offset:=144
Input event: type=EV_ABS, Axis=0, Offset:=146
Input event: type=EV_ABS, Axis=0, Offset:=148
Input event: type=EV_ABS, Axis=0, Offset:=149
Input event: type=EV_ABS, Axis=0, Offset:=150
Input event: type=EV_ABS, Axis=0, Offset:=151
Input event: type=EV_ABS, Axis=0, Offset:=152
Input event: type=EV_ABS, Axis=0, Offset:=151
Input event: type=EV_ABS, Axis=0, Offset:=152
Input event: type=EV_ABS, Axis=0, Offset:=151
Input event: type=EV_ABS, Axis=0, Offset:=152
Input event: type=EV_ABS, Axis=0, Offset:=151
Input event: type=EV_ABS, Axis=0, Offset:=149
Input event: type=EV_ABS, Axis=1, Offset:=8
Input event: type=EV_ABS, Axis=0, Offset:=145
Input event: type=EV_ABS, Axis=1, Offset:=40
Input event: type=EV_ABS, Axis=0, Offset:=138
Input event: type=EV_ABS, Axis=1, Offset:=106

RIGHT_ANALOG (clockwise circle from 0 to 12): Input event: type=EV_ABS, Axis=5, Offset:=118
Input event: type=EV_ABS, Axis=5, Offset:=117
Input event: type=EV_ABS, Axis=5, Offset:=116
Input event: type=EV_ABS, Axis=5, Offset:=115
Input event: type=EV_ABS, Axis=5, Offset:=112
Input event: type=EV_ABS, Axis=5, Offset:=106
Input event: type=EV_ABS, Axis=5, Offset:=100
Input event: type=EV_ABS, Axis=5, Offset:=94
Input event: type=EV_ABS, Axis=5, Offset:=90
Input event: type=EV_ABS, Axis=5, Offset:=84
Input event: type=EV_ABS, Axis=5, Offset:=79
Input event: type=EV_ABS, Axis=5, Offset:=73
Input event: type=EV_ABS, Axis=5, Offset:=65
Input event: type=EV_ABS, Axis=5, Offset:=59
Input event: type=EV_ABS, Axis=5, Offset:=53
Input event: type=EV_ABS, Axis=5, Offset:=47
Input event: type=EV_ABS, Axis=5, Offset:=41
Input event: type=EV_ABS, Axis=5, Offset:=35
Input event: type=EV_ABS, Axis=5, Offset:=30
Input event: type=EV_ABS, Axis=5, Offset:=22
Input event: type=EV_ABS, Axis=5, Offset:=15
Input event: type=EV_ABS, Axis=5, Offset:=8
Input event: type=EV_ABS, Axis=5, Offset:=1
Input event: type=EV_ABS, Axis=5, Offset:=0
Input event: type=EV_ABS, Axis=2, Offset:=139
Input event: type=EV_ABS, Axis=2, Offset:=142
Input event: type=EV_ABS, Axis=2, Offset:=147
Input event: type=EV_ABS, Axis=2, Offset:=151
Input event: type=EV_ABS, Axis=2, Offset:=157
Input event: type=EV_ABS, Axis=2, Offset:=162
Input event: type=EV_ABS, Axis=2, Offset:=167
Input event: type=EV_ABS, Axis=2, Offset:=173
Input event: type=EV_ABS, Axis=2, Offset:=179
Input event: type=EV_ABS, Axis=2, Offset:=185
Input event: type=EV_ABS, Axis=2, Offset:=191
Input event: type=EV_ABS, Axis=2, Offset:=197
Input event: type=EV_ABS, Axis=2, Offset:=203
Input event: type=EV_ABS, Axis=2, Offset:=208
Input event: type=EV_ABS, Axis=2, Offset:=215
Input event: type=EV_ABS, Axis=2, Offset:=220
Input event: type=EV_ABS, Axis=2, Offset:=224
Input event: type=EV_ABS, Axis=2, Offset:=228
Input event: type=EV_ABS, Axis=2, Offset:=231
Input event: type=EV_ABS, Axis=5, Offset:=2
Input event: type=EV_ABS, Axis=2, Offset:=235
Input event: type=EV_ABS, Axis=5, Offset:=5
Input event: type=EV_ABS, Axis=2, Offset:=238
Input event: type=EV_ABS, Axis=5, Offset:=7
Input event: type=EV_ABS, Axis=2, Offset:=241
Input event: type=EV_ABS, Axis=5, Offset:=11
Input event: type=EV_ABS, Axis=2, Offset:=245
Input event: type=EV_ABS, Axis=5, Offset:=14
Input event: type=EV_ABS, Axis=2, Offset:=248
Input event: type=EV_ABS, Axis=5, Offset:=18
Input event: type=EV_ABS, Axis=2, Offset:=252
Input event: type=EV_ABS, Axis=5, Offset:=23
Input event: type=EV_ABS, Axis=2, Offset:=255
Input event: type=EV_ABS, Axis=5, Offset:=27
Input event: type=EV_ABS, Axis=5, Offset:=30
Input event: type=EV_ABS, Axis=5, Offset:=34
Input event: type=EV_ABS, Axis=5, Offset:=38
Input event: type=EV_ABS, Axis=5, Offset:=41
Input event: type=EV_ABS, Axis=5, Offset:=44
Input event: type=EV_ABS, Axis=5, Offset:=48
Input event: type=EV_ABS, Axis=5, Offset:=51
Input event: type=EV_ABS, Axis=5, Offset:=54
Input event: type=EV_ABS, Axis=5, Offset:=57
Input event: type=EV_ABS, Axis=5, Offset:=61
Input event: type=EV_ABS, Axis=5, Offset:=64
Input event: type=EV_ABS, Axis=5, Offset:=67
Input event: type=EV_ABS, Axis=5, Offset:=71
Input event: type=EV_ABS, Axis=5, Offset:=75
Input event: type=EV_ABS, Axis=5, Offset:=79
Input event: type=EV_ABS, Axis=5, Offset:=81
Input event: type=EV_ABS, Axis=5, Offset:=84
Input event: type=EV_ABS, Axis=5, Offset:=88
Input event: type=EV_ABS, Axis=5, Offset:=90
Input event: type=EV_ABS, Axis=5, Offset:=94
Input event: type=EV_ABS, Axis=5, Offset:=99
Input event: type=EV_ABS, Axis=5, Offset:=103
Input event: type=EV_ABS, Axis=5, Offset:=108
Input event: type=EV_ABS, Axis=5, Offset:=113
Input event: type=EV_ABS, Axis=5, Offset:=139
Input event: type=EV_ABS, Axis=5, Offset:=143
Input event: type=EV_ABS, Axis=5, Offset:=148
Input event: type=EV_ABS, Axis=5, Offset:=151
Input event: type=EV_ABS, Axis=5, Offset:=154
Input event: type=EV_ABS, Axis=5, Offset:=159
Input event: type=EV_ABS, Axis=5, Offset:=163
Input event: type=EV_ABS, Axis=5, Offset:=169
Input event: type=EV_ABS, Axis=5, Offset:=172
Input event: type=EV_ABS, Axis=5, Offset:=175
Input event: type=EV_ABS, Axis=5, Offset:=181
Input event: type=EV_ABS, Axis=5, Offset:=188
Input event: type=EV_ABS, Axis=5, Offset:=194
Input event: type=EV_ABS, Axis=5, Offset:=199
Input event: type=EV_ABS, Axis=5, Offset:=205
Input event: type=EV_ABS, Axis=5, Offset:=209
Input event: type=EV_ABS, Axis=5, Offset:=217
Input event: type=EV_ABS, Axis=5, Offset:=225
Input event: type=EV_ABS, Axis=5, Offset:=230
Input event: type=EV_ABS, Axis=5, Offset:=232
Input event: type=EV_ABS, Axis=2, Offset:=253
Input event: type=EV_ABS, Axis=5, Offset:=235
Input event: type=EV_ABS, Axis=2, Offset:=249
Input event: type=EV_ABS, Axis=5, Offset:=240
Input event: type=EV_ABS, Axis=2, Offset:=245
Input event: type=EV_ABS, Axis=5, Offset:=245
Input event: type=EV_ABS, Axis=2, Offset:=240
Input event: type=EV_ABS, Axis=5, Offset:=248
Input event: type=EV_ABS, Axis=2, Offset:=234
Input event: type=EV_ABS, Axis=5, Offset:=254
Input event: type=EV_ABS, Axis=2, Offset:=227
Input event: type=EV_ABS, Axis=5, Offset:=255
Input event: type=EV_ABS, Axis=2, Offset:=220
Input event: type=EV_ABS, Axis=2, Offset:=212
Input event: type=EV_ABS, Axis=2, Offset:=205
Input event: type=EV_ABS, Axis=2, Offset:=195
Input event: type=EV_ABS, Axis=2, Offset:=187
Input event: type=EV_ABS, Axis=2, Offset:=179
Input event: type=EV_ABS, Axis=2, Offset:=170
Input event: type=EV_ABS, Axis=2, Offset:=166
Input event: type=EV_ABS, Axis=2, Offset:=159
Input event: type=EV_ABS, Axis=2, Offset:=150
Input event: type=EV_ABS, Axis=2, Offset:=143
Input event: type=EV_ABS, Axis=2, Offset:=113
Input event: type=EV_ABS, Axis=2, Offset:=106
Input event: type=EV_ABS, Axis=2, Offset:=99
Input event: type=EV_ABS, Axis=2, Offset:=92
Input event: type=EV_ABS, Axis=2, Offset:=85
Input event: type=EV_ABS, Axis=2, Offset:=77
Input event: type=EV_ABS, Axis=2, Offset:=70
Input event: type=EV_ABS, Axis=2, Offset:=62
Input event: type=EV_ABS, Axis=2, Offset:=56
Input event: type=EV_ABS, Axis=2, Offset:=50
Input event: type=EV_ABS, Axis=2, Offset:=45
Input event: type=EV_ABS, Axis=2, Offset:=40
Input event: type=EV_ABS, Axis=2, Offset:=34
Input event: type=EV_ABS, Axis=2, Offset:=30
Input event: type=EV_ABS, Axis=2, Offset:=24
Input event: type=EV_ABS, Axis=5, Offset:=254
Input event: type=EV_ABS, Axis=2, Offset:=20
Input event: type=EV_ABS, Axis=5, Offset:=251
Input event: type=EV_ABS, Axis=2, Offset:=16
Input event: type=EV_ABS, Axis=5, Offset:=248
Input event: type=EV_ABS, Axis=2, Offset:=11
Input event: type=EV_ABS, Axis=5, Offset:=245
Input event: type=EV_ABS, Axis=2, Offset:=8
Input event: type=EV_ABS, Axis=5, Offset:=241
Input event: type=EV_ABS, Axis=2, Offset:=5
Input event: type=EV_ABS, Axis=5, Offset:=238
Input event: type=EV_ABS, Axis=2, Offset:=3
Input event: type=EV_ABS, Axis=5, Offset:=235
Input event: type=EV_ABS, Axis=2, Offset:=1
Input event: type=EV_ABS, Axis=5, Offset:=232
Input event: type=EV_ABS, Axis=2, Offset:=0
Input event: type=EV_ABS, Axis=5, Offset:=230
Input event: type=EV_ABS, Axis=5, Offset:=225
Input event: type=EV_ABS, Axis=5, Offset:=220
Input event: type=EV_ABS, Axis=5, Offset:=216
Input event: type=EV_ABS, Axis=5, Offset:=211
Input event: type=EV_ABS, Axis=5, Offset:=208
Input event: type=EV_ABS, Axis=5, Offset:=204
Input event: type=EV_ABS, Axis=5, Offset:=201
Input event: type=EV_ABS, Axis=5, Offset:=199
Input event: type=EV_ABS, Axis=5, Offset:=197
Input event: type=EV_ABS, Axis=5, Offset:=194
Input event: type=EV_ABS, Axis=5, Offset:=188
Input event: type=EV_ABS, Axis=5, Offset:=181
Input event: type=EV_ABS, Axis=5, Offset:=177
Input event: type=EV_ABS, Axis=5, Offset:=172
Input event: type=EV_ABS, Axis=5, Offset:=166
Input event: type=EV_ABS, Axis=5, Offset:=160
Input event: type=EV_ABS, Axis=5, Offset:=153
Input event: type=EV_ABS, Axis=5, Offset:=148
Input event: type=EV_ABS, Axis=5, Offset:=143
Input event: type=EV_ABS, Axis=5, Offset:=138
Input event: type=EV_ABS, Axis=5, Offset:=111
Input event: type=EV_ABS, Axis=5, Offset:=104
Input event: type=EV_ABS, Axis=5, Offset:=97
Input event: type=EV_ABS, Axis=5, Offset:=91
Input event: type=EV_ABS, Axis=5, Offset:=85
Input event: type=EV_ABS, Axis=5, Offset:=78
Input event: type=EV_ABS, Axis=5, Offset:=75
Input event: type=EV_ABS, Axis=5, Offset:=70
Input event: type=EV_ABS, Axis=5, Offset:=65
Input event: type=EV_ABS, Axis=5, Offset:=60
Input event: type=EV_ABS, Axis=5, Offset:=56
Input event: type=EV_ABS, Axis=5, Offset:=47
Input event: type=EV_ABS, Axis=5, Offset:=35
Input event: type=EV_ABS, Axis=5, Offset:=29
Input event: type=EV_ABS, Axis=2, Offset:=4
Input event: type=EV_ABS, Axis=5, Offset:=22
Input event: type=EV_ABS, Axis=2, Offset:=7
Input event: type=EV_ABS, Axis=5, Offset:=17
Input event: type=EV_ABS, Axis=2, Offset:=10
Input event: type=EV_ABS, Axis=5, Offset:=14
Input event: type=EV_ABS, Axis=2, Offset:=13
Input event: type=EV_ABS, Axis=5, Offset:=10
Input event: type=EV_ABS, Axis=2, Offset:=15
Input event: type=EV_ABS, Axis=5, Offset:=7
Input event: type=EV_ABS, Axis=2, Offset:=18
Input event: type=EV_ABS, Axis=5, Offset:=5
Input event: type=EV_ABS, Axis=2, Offset:=26
Input event: type=EV_ABS, Axis=5, Offset:=0
Input event: type=EV_ABS, Axis=2, Offset:=33
Input event: type=EV_ABS, Axis=2, Offset:=35
Input event: type=EV_ABS, Axis=2, Offset:=41
Input event: type=EV_ABS, Axis=2, Offset:=47
Input event: type=EV_ABS, Axis=2, Offset:=49
Input event: type=EV_ABS, Axis=2, Offset:=50
Input event: type=EV_ABS, Axis=2, Offset:=57
Input event: type=EV_ABS, Axis=2, Offset:=65
Input event: type=EV_ABS, Axis=2, Offset:=67
Input event: type=EV_ABS, Axis=2, Offset:=68
Input event: type=EV_ABS, Axis=2, Offset:=77
Input event: type=EV_ABS, Axis=2, Offset:=80
Input event: type=EV_ABS, Axis=2, Offset:=87
Input event: type=EV_ABS, Axis=2, Offset:=96
Input event: type=EV_ABS, Axis=2, Offset:=100
Input event: type=EV_ABS, Axis=2, Offset:=104
Input event: type=EV_ABS, Axis=2, Offset:=108
Input event: type=EV_ABS, Axis=2, Offset:=112
Input event: type=EV_ABS, Axis=2, Offset:=113
Input event: type=EV_ABS, Axis=5, Offset:=1
Input event: type=EV_ABS, Axis=5, Offset:=51
Input event: type=EV_ABS, Axis=5, Offset:=152

2) Sony Dual Shock 3 wirelessly paired to a Mayflash PS3003 USB dongle in xinput mode: VID:PID= 045e:028e (as any pad/dongle that impersonates a Xbox360 wired joypad) I see an event flood as soon as the DS3 pairs to the dongle. Here’s the logs I captured without touching any button:

Code: Select all

DS3 wireless Mayflash (045e:028e)

Input event: type=EV_ABS, Axis=0, Offset:=0
Input event: type=EV_ABS, Axis=4, Offset:=255
Input event: type=EV_ABS, Axis=0, Offset:=256
Input event: type=EV_ABS, Axis=4, Offset:=511
Input event: type=EV_ABS, Axis=0, Offset:=0
Input event: type=EV_ABS, Axis=0, Offset:=256
Input event: type=EV_ABS, Axis=0, Offset:=0
Input event: type=EV_ABS, Axis=4, Offset:=255
Input event: type=EV_ABS, Axis=0, Offset:=256
Input event: type=EV_ABS, Axis=3, Offset:=256
Input event: type=EV_ABS, Axis=4, Offset:=511
Input event: type=EV_ABS, Axis=3, Offset:=512
Input event: type=EV_ABS, Axis=3, Offset:=256
Input event: type=EV_ABS, Axis=0, Offset:=0

3) Sony Dual Shock 3 wirelessly paired to an 8bitdo Retro Receiver Classic (the one for the NES/SNES mini classic, but I think they’re all the same once connected through USB): VID:PID=045e:028e (as any pad/dongle that impersonates a Xbox360 wired joypad, see point n.2) here things get interesting. It seems that the 8bitdo dongle filters the DS3 event flood and presents itself as a well behaving standard Xbox360 wired joypad. Here’s the logs I captured (you can see some extra events on L3 and R3 because, clicking the analog sticks, some movements are inevitable):

Code: Select all

DS3 Wireless 8bitdo Retro Receiver Classicdongle (045e:028e)

UP:Input event: type=EV_ABS, Axis=17, Offset:=-1
Input event: type=EV_ABS, Axis=17, Offset:=0

DOWN:Input event: type=EV_ABS, Axis=17, Offset:=1
Input event: type=EV_ABS, Axis=17, Offset:=0

LEFT: Input event: type=EV_ABS, Axis=16, Offset:=-1
Input event: type=EV_ABS, Axis=16, Offset:=0

RIGHT: Input event: type=EV_ABS, Axis=16, Offset:=1
Input event: type=EV_ABS, Axis=16, Offset:=0

CROSS:Input event: type=EV_KEY, code=304(0x130), value=1
Input event: type=EV_KEY, code=304(0x130), value=0

CIRCLE:Input event: type=EV_KEY, code=305(0x131), value=1
Input event: type=EV_KEY, code=305(0x131), value=0

SQUARE: Input event: type=EV_KEY, code=307(0x133), value=1
Input event: type=EV_KEY, code=307(0x133), value=0

TRIANGLE: Input event: type=EV_KEY, code=308(0x134), value=1
Input event: type=EV_KEY, code=308(0x134), value=0

L1:Input event: type=EV_KEY, code=310(0x136), value=1
Input event: type=EV_KEY, code=310(0x136), value=0

R1:Input event: type=EV_KEY, code=311(0x137), value=1
Input event: type=EV_KEY, code=311(0x137), value=0

L2:Input event: type=EV_ABS, Axis=2, Offset:=255
Input event: type=EV_ABS, Axis=2, Offset:=0

R2:Input event: type=EV_ABS, Axis=5, Offset:=255
Input event: type=EV_ABS, Axis=5, Offset:=0

L3:Input event: type=EV_KEY, code=317(0x13d), value=1
Input event: type=EV_KEY, code=317(0x13d), value=0
Input event: type=EV_ABS, Axis=1, Offset:=-2304
Input event: type=EV_ABS, Axis=1, Offset:=-1

R3:Input event: type=EV_KEY, code=318(0x13e), value=1
Input event: type=EV_ABS, Axis=3, Offset:=-2304
Input event: type=EV_ABS, Axis=3, Offset:=-2560
Input event: type=EV_ABS, Axis=3, Offset:=-2304
Input event: type=EV_ABS, Axis=3, Offset:=0
Input event: type=EV_KEY, code=318(0x13e), value=0

SELECT: type=EV_KEY, code=314(0x13a), value=1
Input event: type=EV_KEY, code=314(0x13a), value=0

START:Input event: type=EV_KEY, code=315(0x13b), value=1
Input event: type=EV_KEY, code=315(0x13b), value=0

PLAYSTATION: Input event: type=EV_ABS, Axis=5, Offset:=255
Input event: type=EV_ABS, Axis=5, Offset:=0

LEFT_ANALOG (CW circle from 0 to 12):Input event: type=EV_ABS, Axis=1, Offset:=-2560
Input event: type=EV_ABS, Axis=1, Offset:=-5120
Input event: type=EV_ABS, Axis=1, Offset:=-8960
Input event: type=EV_ABS, Axis=0, Offset:=2559
Input event: type=EV_ABS, Axis=1, Offset:=-12544
Input event: type=EV_ABS, Axis=0, Offset:=3583
Input event: type=EV_ABS, Axis=1, Offset:=-16128
Input event: type=EV_ABS, Axis=0, Offset:=5631
Input event: type=EV_ABS, Axis=1, Offset:=-20992
Input event: type=EV_ABS, Axis=0, Offset:=8191
Input event: type=EV_ABS, Axis=1, Offset:=-25344
Input event: type=EV_ABS, Axis=0, Offset:=10751
Input event: type=EV_ABS, Axis=1, Offset:=-28928
Input event: type=EV_ABS, Axis=0, Offset:=12799
Input event: type=EV_ABS, Axis=1, Offset:=-31744
Input event: type=EV_ABS, Axis=0, Offset:=14079
Input event: type=EV_ABS, Axis=1, Offset:=-32768
Input event: type=EV_ABS, Axis=0, Offset:=15103
Input event: type=EV_ABS, Axis=0, Offset:=15359
Input event: type=EV_ABS, Axis=0, Offset:=16383
Input event: type=EV_ABS, Axis=0, Offset:=18431
Input event: type=EV_ABS, Axis=0, Offset:=22271
Input event: type=EV_ABS, Axis=0, Offset:=23551
Input event: type=EV_ABS, Axis=0, Offset:=26623
Input event: type=EV_ABS, Axis=1, Offset:=-30976
Input event: type=EV_ABS, Axis=0, Offset:=29439
Input event: type=EV_ABS, Axis=1, Offset:=-28160
Input event: type=EV_ABS, Axis=0, Offset:=30463
Input event: type=EV_ABS, Axis=1, Offset:=-26624
Input event: type=EV_ABS, Axis=0, Offset:=31999
Input event: type=EV_ABS, Axis=1, Offset:=-24320
Input event: type=EV_ABS, Axis=0, Offset:=32767
Input event: type=EV_ABS, Axis=1, Offset:=-22272
Input event: type=EV_ABS, Axis=1, Offset:=-20224
Input event: type=EV_ABS, Axis=1, Offset:=-17920
Input event: type=EV_ABS, Axis=1, Offset:=-16384
Input event: type=EV_ABS, Axis=1, Offset:=-14592
Input event: type=EV_ABS, Axis=1, Offset:=-10752
Input event: type=EV_ABS, Axis=1, Offset:=-8704
Input event: type=EV_ABS, Axis=1, Offset:=-4864
Input event: type=EV_ABS, Axis=1, Offset:=-1
Input event: type=EV_ABS, Axis=1, Offset:=4095
Input event: type=EV_ABS, Axis=1, Offset:=7679
Input event: type=EV_ABS, Axis=1, Offset:=11263
Input event: type=EV_ABS, Axis=1, Offset:=15615
Input event: type=EV_ABS, Axis=1, Offset:=18431
Input event: type=EV_ABS, Axis=1, Offset:=20991
Input event: type=EV_ABS, Axis=1, Offset:=23551
Input event: type=EV_ABS, Axis=1, Offset:=25855
Input event: type=EV_ABS, Axis=0, Offset:=31487
Input event: type=EV_ABS, Axis=1, Offset:=28159
Input event: type=EV_ABS, Axis=0, Offset:=29183
Input event: type=EV_ABS, Axis=1, Offset:=30207
Input event: type=EV_ABS, Axis=0, Offset:=26879
Input event: type=EV_ABS, Axis=1, Offset:=32511
Input event: type=EV_ABS, Axis=0, Offset:=24319
Input event: type=EV_ABS, Axis=1, Offset:=32767
Input event: type=EV_ABS, Axis=0, Offset:=21759
Input event: type=EV_ABS, Axis=0, Offset:=18943
Input event: type=EV_ABS, Axis=0, Offset:=15871
Input event: type=EV_ABS, Axis=0, Offset:=12031
Input event: type=EV_ABS, Axis=0, Offset:=8191
Input event: type=EV_ABS, Axis=0, Offset:=3583
Input event: type=EV_ABS, Axis=0, Offset:=0
Input event: type=EV_ABS, Axis=0, Offset:=-3584
Input event: type=EV_ABS, Axis=0, Offset:=-6656
Input event: type=EV_ABS, Axis=0, Offset:=-9728
Input event: type=EV_ABS, Axis=0, Offset:=-12800
Input event: type=EV_ABS, Axis=0, Offset:=-16384
Input event: type=EV_ABS, Axis=0, Offset:=-20224
Input event: type=EV_ABS, Axis=0, Offset:=-24576
Input event: type=EV_ABS, Axis=0, Offset:=-28928
Input event: type=EV_ABS, Axis=1, Offset:=31743
Input event: type=EV_ABS, Axis=0, Offset:=-32256
Input event: type=EV_ABS, Axis=1, Offset:=28415
Input event: type=EV_ABS, Axis=0, Offset:=-32768
Input event: type=EV_ABS, Axis=1, Offset:=24831
Input event: type=EV_ABS, Axis=1, Offset:=20735
Input event: type=EV_ABS, Axis=1, Offset:=17407
Input event: type=EV_ABS, Axis=1, Offset:=13567
Input event: type=EV_ABS, Axis=1, Offset:=6655
Input event: type=EV_ABS, Axis=1, Offset:=-1
Input event: type=EV_ABS, Axis=1, Offset:=-5888
Input event: type=EV_ABS, Axis=1, Offset:=-10752
Input event: type=EV_ABS, Axis=1, Offset:=-15872
Input event: type=EV_ABS, Axis=1, Offset:=-20224
Input event: type=EV_ABS, Axis=1, Offset:=-24064
Input event: type=EV_ABS, Axis=1, Offset:=-27392
Input event: type=EV_ABS, Axis=0, Offset:=-31744
Input event: type=EV_ABS, Axis=1, Offset:=-30976
Input event: type=EV_ABS, Axis=0, Offset:=-30208
Input event: type=EV_ABS, Axis=1, Offset:=-32768
Input event: type=EV_ABS, Axis=0, Offset:=-28672
Input event: type=EV_ABS, Axis=0, Offset:=-26880
Input event: type=EV_ABS, Axis=0, Offset:=-24576
Input event: type=EV_ABS, Axis=0, Offset:=-22272
Input event: type=EV_ABS, Axis=0, Offset:=-19712
Input event: type=EV_ABS, Axis=0, Offset:=-16640
Input event: type=EV_ABS, Axis=0, Offset:=-15104
Input event: type=EV_ABS, Axis=0, Offset:=-13056
Input event: type=EV_ABS, Axis=0, Offset:=-9216
Input event: type=EV_ABS, Axis=0, Offset:=-7936
Input event: type=EV_ABS, Axis=0, Offset:=-5376
Input event: type=EV_ABS, Axis=0, Offset:=-4352
Input event: type=EV_ABS, Axis=0, Offset:=-4096
Input event: type=EV_ABS, Axis=0, Offset:=-3840
Input event: type=EV_ABS, Axis=0, Offset:=-3072
Input event: type=EV_ABS, Axis=0, Offset:=0
Input event: type=EV_ABS, Axis=0, Offset:=2047
Input event: type=EV_ABS, Axis=0, Offset:=2303
Input event: type=EV_ABS, Axis=0, Offset:=2559
Input event: type=EV_ABS, Axis=0, Offset:=3071
Input event: type=EV_ABS, Axis=0, Offset:=2815
Input event: type=EV_ABS, Axis=1, Offset:=-23040
Input event: type=EV_ABS, Axis=0, Offset:=0
Input event: type=EV_ABS, Axis=1, Offset:=9471
Input event: type=EV_ABS, Axis=1, Offset:=-1

RIGHT_ANALOG (CW circle from 0 to 12): Input event: type=EV_ABS, Axis=4, Offset:=-2304
Input event: type=EV_ABS, Axis=4, Offset:=-2560
Input event: type=EV_ABS, Axis=4, Offset:=-2816
Input event: type=EV_ABS, Axis=4, Offset:=-3072
Input event: type=EV_ABS, Axis=4, Offset:=-3328
Input event: type=EV_ABS, Axis=4, Offset:=-4608
Input event: type=EV_ABS, Axis=4, Offset:=-6912
Input event: type=EV_ABS, Axis=4, Offset:=-9472
Input event: type=EV_ABS, Axis=4, Offset:=-12032
Input event: type=EV_ABS, Axis=4, Offset:=-14848
Input event: type=EV_ABS, Axis=4, Offset:=-19712
Input event: type=EV_ABS, Axis=4, Offset:=-24320
Input event: type=EV_ABS, Axis=4, Offset:=-29696
Input event: type=EV_ABS, Axis=4, Offset:=-32768
Input event: type=EV_ABS, Axis=3, Offset:=2815
Input event: type=EV_ABS, Axis=3, Offset:=6399
Input event: type=EV_ABS, Axis=3, Offset:=11007
Input event: type=EV_ABS, Axis=3, Offset:=15871
Input event: type=EV_ABS, Axis=3, Offset:=19967
Input event: type=EV_ABS, Axis=3, Offset:=23807
Input event: type=EV_ABS, Axis=3, Offset:=27391
Input event: type=EV_ABS, Axis=3, Offset:=29695
Input event: type=EV_ABS, Axis=4, Offset:=-30464
Input event: type=EV_ABS, Axis=3, Offset:=31743
Input event: type=EV_ABS, Axis=4, Offset:=-27904
Input event: type=EV_ABS, Axis=3, Offset:=32767
Input event: type=EV_ABS, Axis=4, Offset:=-25600
Input event: type=EV_ABS, Axis=4, Offset:=-22528
Input event: type=EV_ABS, Axis=4, Offset:=-19200
Input event: type=EV_ABS, Axis=4, Offset:=-15616
Input event: type=EV_ABS, Axis=4, Offset:=-11264
Input event: type=EV_ABS, Axis=4, Offset:=-6144
Input event: type=EV_ABS, Axis=4, Offset:=-1
Input event: type=EV_ABS, Axis=4, Offset:=4095
Input event: type=EV_ABS, Axis=4, Offset:=7935
Input event: type=EV_ABS, Axis=4, Offset:=10751
Input event: type=EV_ABS, Axis=4, Offset:=14335
Input event: type=EV_ABS, Axis=4, Offset:=18431
Input event: type=EV_ABS, Axis=4, Offset:=21247
Input event: type=EV_ABS, Axis=4, Offset:=24319
Input event: type=EV_ABS, Axis=4, Offset:=26879
Input event: type=EV_ABS, Axis=3, Offset:=31231
Input event: type=EV_ABS, Axis=4, Offset:=28927
Input event: type=EV_ABS, Axis=3, Offset:=29695
Input event: type=EV_ABS, Axis=4, Offset:=30975
Input event: type=EV_ABS, Axis=3, Offset:=28671
Input event: type=EV_ABS, Axis=4, Offset:=32255
Input event: type=EV_ABS, Axis=3, Offset:=27135
Input event: type=EV_ABS, Axis=4, Offset:=32767
Input event: type=EV_ABS, Axis=3, Offset:=24831
Input event: type=EV_ABS, Axis=3, Offset:=22015
Input event: type=EV_ABS, Axis=3, Offset:=18943
Input event: type=EV_ABS, Axis=3, Offset:=15615
Input event: type=EV_ABS, Axis=3, Offset:=12287
Input event: type=EV_ABS, Axis=3, Offset:=9215
Input event: type=EV_ABS, Axis=3, Offset:=6399
Input event: type=EV_ABS, Axis=3, Offset:=3327
Input event: type=EV_ABS, Axis=3, Offset:=0
Input event: type=EV_ABS, Axis=3, Offset:=-2816
Input event: type=EV_ABS, Axis=3, Offset:=-6912
Input event: type=EV_ABS, Axis=3, Offset:=-10240
Input event: type=EV_ABS, Axis=3, Offset:=-13312
Input event: type=EV_ABS, Axis=3, Offset:=-16896
Input event: type=EV_ABS, Axis=3, Offset:=-20224
Input event: type=EV_ABS, Axis=3, Offset:=-22272
Input event: type=EV_ABS, Axis=3, Offset:=-24320
Input event: type=EV_ABS, Axis=3, Offset:=-26368
Input event: type=EV_ABS, Axis=4, Offset:=32255
Input event: type=EV_ABS, Axis=3, Offset:=-27904
Input event: type=EV_ABS, Axis=4, Offset:=31231
Input event: type=EV_ABS, Axis=3, Offset:=-30208
Input event: type=EV_ABS, Axis=4, Offset:=29695
Input event: type=EV_ABS, Axis=3, Offset:=-32512
Input event: type=EV_ABS, Axis=4, Offset:=27391
Input event: type=EV_ABS, Axis=3, Offset:=-32768
Input event: type=EV_ABS, Axis=4, Offset:=24063
Input event: type=EV_ABS, Axis=4, Offset:=19967
Input event: type=EV_ABS, Axis=4, Offset:=15871
Input event: type=EV_ABS, Axis=4, Offset:=10751
Input event: type=EV_ABS, Axis=4, Offset:=5887
Input event: type=EV_ABS, Axis=4, Offset:=-1
Input event: type=EV_ABS, Axis=4, Offset:=-2816
Input event: type=EV_ABS, Axis=4, Offset:=-6656
Input event: type=EV_ABS, Axis=4, Offset:=-10752
Input event: type=EV_ABS, Axis=4, Offset:=-14336
Input event: type=EV_ABS, Axis=4, Offset:=-17408
Input event: type=EV_ABS, Axis=4, Offset:=-20736
Input event: type=EV_ABS, Axis=4, Offset:=-24576
Input event: type=EV_ABS, Axis=3, Offset:=-31488
Input event: type=EV_ABS, Axis=4, Offset:=-27648
Input event: type=EV_ABS, Axis=3, Offset:=-29696
Input event: type=EV_ABS, Axis=4, Offset:=-30208
Input event: type=EV_ABS, Axis=3, Offset:=-27392
Input event: type=EV_ABS, Axis=4, Offset:=-32768
Input event: type=EV_ABS, Axis=3, Offset:=-24064
Input event: type=EV_ABS, Axis=3, Offset:=-20736
Input event: type=EV_ABS, Axis=3, Offset:=-18432
Input event: type=EV_ABS, Axis=3, Offset:=-16128
Input event: type=EV_ABS, Axis=3, Offset:=-14336
Input event: type=EV_ABS, Axis=3, Offset:=-12288
Input event: type=EV_ABS, Axis=3, Offset:=-9216
Input event: type=EV_ABS, Axis=3, Offset:=-7168
Input event: type=EV_ABS, Axis=3, Offset:=-5376
Input event: type=EV_ABS, Axis=3, Offset:=-4608
Input event: type=EV_ABS, Axis=3, Offset:=-4352
Input event: type=EV_ABS, Axis=3, Offset:=-4096
Input event: type=EV_ABS, Axis=3, Offset:=-3840
Input event: type=EV_ABS, Axis=3, Offset:=-3584
Input event: type=EV_ABS, Axis=4, Offset:=-32000
Input event: type=EV_ABS, Axis=3, Offset:=0
Input event: type=EV_ABS, Axis=4, Offset:=6911
Input event: type=EV_ABS, Axis=4, Offset:=-1

4) Switch Pro Controller directly wired through USB to the DE10-Nano: VID:PID=057e:2009 I got no events at all

5) Switch Pro Controller wirelessly paired to an 8bitdo Retro Receiver Classic: : VID:PID=045e:028e I got the same results as the Dual Shock 3 through the USB dongle, with some peculiarities. The buttons correspond by physical position i.e. Cross=B, Triangle=X, Select=Minus and Start=Plus, then we have the Home and Capture buttons that produce the same events:

Code: Select all

Switch Pro controller wireless 8bitdo 045e:028e

Home:Input event: type=EV_KEY, code=316(0x13c), value=1
Input event: type=EV_KEY, code=316(0x13c), value=0

Capture:Input event: type=EV_KEY, code=316(0x13c), value=1
Input event: type=EV_KEY, code=316(0x13c), value=0

6) WiiU Pro Controller directly wired through USB to the DE10-Nano: VID:PID=0b6a:a132 I got no events at all

7) WiiU Pro Controller wirelessly paired to an 8bitdo Retro Receiver Classic: : VID:PID=045e:028e I got the same results as the Switch Pro Controller

8 ) 8bitdo SNES directly wired through USB to the DE10-Nano in dinput mode: VID:PID=2dc8:ab21 it seems to be a well behaved pad, with the dpad events provided as analog sticks events. Here’s the logs I captured:

Code: Select all

8bitdo SNES wired dinput 2dc8:ab21

UP: Input event: type=EV_ABS, Axis=1, Offset:=0
Input event: type=EV_ABS, Axis=1, Offset:=128

DOWN:Input event: type=EV_ABS, Axis=1, Offset:=255
Input event: type=EV_ABS, Axis=1, Offset:=128

LEFT:Input event: type=EV_ABS, Axis=0, Offset:=0
Input event: type=EV_ABS, Axis=0, Offset:=128

RIGHT: Input event: type=EV_ABS, Axis=0, Offset:=255
Input event: type=EV_ABS, Axis=0, Offset:=128

B:Input event: type=EV_KEY, code=289(0x121), value=1
Input event: type=EV_KEY, code=289(0x121), value=0

A:Input event: type=EV_KEY, code=288(0x120), value=1
Input event: type=EV_KEY, code=288(0x120), value=0

Y: Input event: type=EV_KEY, code=292(0x124), value=1
Input event: type=EV_KEY, code=292(0x124), value=0


X: Input event: type=EV_KEY, code=291(0x123), value=1
Input event: type=EV_KEY, code=291(0x123), value=0

L: Input event: type=EV_KEY, code=294(0x126), value=1
Input event: type=EV_KEY, code=294(0x126), value=0

R: Input event: type=EV_KEY, code=295(0x127), value=1
Input event: type=EV_KEY, code=295(0x127), value=0

SELECT: Input event: type=EV_KEY, code=298(0x12a), value=1
Input event: type=EV_KEY, code=298(0x12a), value=0

START: Input event: type=EV_KEY, code=299(0x12b), value=1
Input event: type=EV_KEY, code=299(0x12b), value=0

9) 8bitdo SFC30 (SNES replica) directly wired through USB to the DE10-Nano in xbox mode: VID:PID=045e:028e it seems to be a well behaved Xbox360 wired pad, same events as the other pads connected to the 8bitdo dongle, with the dpad events provided as analog sticks events. Here’s the logs I captured:

Code: Select all

UP: Input event: type=EV_ABS, Axis=1, Offset:=-32768
Input event: type=EV_ABS, Axis=1, Offset:=-1

DOWN:  Input event: type=EV_ABS, Axis=1, Offset:=32767
Input event: type=EV_ABS, Axis=1, Offset:=-1

LEFT:  Input event: type=EV_ABS, Axis=0, Offset:=-32768
Input event: type=EV_ABS, Axis=0, Offset:=0

RIGHT: Input event: type=EV_ABS, Axis=0, Offset:=32767
Input event: type=EV_ABS, Axis=0, Offset:=0

10) 8bitdo SFC30 (SNES replica) wirelessly paired to an 8bitdo Retro Receiver Classic: VID:PID=045e:028e I got the same results as the wired connection

So, essentially, the 8bitdo Retro Receiver Classic seems to be a perfect match for MiSTer: it consolidates all wireless joypads to a standard wired Xbox360 behaviour while filtering all Dual Shock 3 event flood. I forgot to perform some tests (i.e. Mayflash dongle in dinput mode and a 8bitdo N30 Sanwa arcade stick both wired and paired to the 8bitdo dongle)… please tell me if you want me to perform further tests.

Locutus73

Sorgelig
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 3089
Joined: Mon Dec 14, 2015 10:51 am
Location: Russia/Taiwan

Re: Joystick testing thread

Postby Sorgelig » Mon Mar 05, 2018 5:14 pm

Are you referring to 8bitdo USB receiver looking like Mario brick wall?

Locutus73
Captain Atari
Captain Atari
Posts: 170
Joined: Wed Feb 07, 2018 6:13 pm

Re: Joystick testing thread

Postby Locutus73 » Mon Mar 05, 2018 5:39 pm

Sorgelig wrote:Are you referring to 8bitdo USB receiver looking like Mario brick wall?

Nope,
I used the Retro Receiver for NES/SNES/SFC Classic Edition for all my tests
nesmini-rr.png

It has a custom plug for connecting to a Nintendo Classic Mini NES/SNES and a micro USB port for firmware upgrade and for PC/PS3 connection (emulating a wired Xbox360 controller or a DS3 wired controller).



Today I received a Retro Receiver for SNES
snes-rr.png
same as previous, but with an old SNES plug.



They produce a NES version too.
nes-rr.png


Reading manuals, I think that all previous three versions should be equal once connected to a PC.



I think that the “Mario brick” one
wireless-usb-adapter.png
while lacking custom retro physical connection, is more sophisticated once connected via USB: it can impersonate an xinput controller, a dinput controller, a Mac controller and a Switch controller through USB connection and can wirelessly pair to all 8bitdo controllers, to a Dual Shock 4, to a Dual Shock 3, to a Wii remote, to a WiiU Pro controller, to a Switch Pro controller or to a Switch Joycon; with some specific combos it supports vibration and/or motion controls.

[EDIT] TL;DR:
All 8bitdo receivers wirelessly pair to 8bitdo controllers, DS3, DS4, Wii remotes, WiiU Pro controllers, Switch Pro Controllers and Switch Joycons.
Retro receivers (3 flavours) have a specific retro connector and a micro USB for connecting to PC (xinput) and PS3. They should not support vibration and motion controls.
Wireless USB Adapter (the Mario brick wall one) lacks any retro connector, it just has a plain male USB connector; it can be connected to PC (xinput and dinput), Mac and Switch; it supports vibration and motion control with a DS4 on Switch and vibration with a DS4 on PC (xinput).

Locutus73
You do not have the required permissions to view the files attached to this post.

Sorgelig
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 3089
Joined: Mon Dec 14, 2015 10:51 am
Location: Russia/Taiwan

Re: Joystick testing thread

Postby Sorgelig » Mon Mar 05, 2018 6:09 pm

Since you are very familiar with 8bitdo devices, i have a question:
Is it possible to pair SF30Pro controller with "Mario brick" receiver?

Locutus73
Captain Atari
Captain Atari
Posts: 170
Joined: Wed Feb 07, 2018 6:13 pm

Re: Joystick testing thread

Postby Locutus73 » Mon Mar 05, 2018 6:37 pm

Sorgelig wrote:Since you are very familiar with 8bitdo devices, i have a question:
Is it possible to pair SF30Pro controller with "Mario brick" receiver?

According to this chart
8BitdoUSBWirelessAdapterFunctionalityChart.png
yes supporting vibration in xinput mode, but I don't have any of them.
I ordered one SF30Pro on Amazon but I sent it back because the analog sticks were not centered and, during tests, they did not reach full diagonal positions. I mean, it was OK after all, pretty solid to be honest, but I'm a little OCD. Probably I'll try to order it again hoping in more luck. The SF30Pro can be wirelessly paired (without dongle) or connected through USB to PC/Mac/Android/Switch, supporting vibration (xinput and switch) and motion controls (Switch).

It's a modernized SNES controller, even if the old SFC30 controller
51OZZ1lW3TL._SL1000_.jpg
is a perfect replica.
The new SF30
71yfqJeR1rL._SL1500_.jpg
is a more loose replica (I think due to possible licensing problems).

To add confusion, 8bitdo released both Bluetooth and custom 2.4GHz versions of some of these controllers.

Speaking of these dpad only SNES replicas, if we speculate about an hypotheticaland SNES core, all buttons would be mapped to an "emulated" controller, leaving no button for core menu; would be it possible to associate menu to a button combination (i.e. select+start) just like in RetroArch or Super NT?

Locutus73
You do not have the required permissions to view the files attached to this post.

Sorgelig
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 3089
Joined: Mon Dec 14, 2015 10:51 am
Location: Russia/Taiwan

Re: Joystick testing thread

Postby Sorgelig » Mon Mar 05, 2018 6:51 pm

Currently there are no combinations to emulate OSD button. Basically, there is hardware OSD button on MiSTer for such purpose.

Locutus73
Captain Atari
Captain Atari
Posts: 170
Joined: Wed Feb 07, 2018 6:13 pm

Re: Joystick testing thread

Postby Locutus73 » Mon Mar 05, 2018 7:28 pm

Sorgelig wrote:Currently there are no combinations to emulate OSD button. Basically, there is hardware OSD button on MiSTer for such purpose.

Yes, I know currently there are no combinations; I was sharing/proposing an idea for console cores (i.e. MegaDrive and/or an hypothetical SNES) on controllers with few buttons (i.e. SNES replicas).
I know, anyone is invited to code :D

Locutus73

Sorgelig
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 3089
Joined: Mon Dec 14, 2015 10:51 am
Location: Russia/Taiwan

Re: Joystick testing thread

Postby Sorgelig » Mon Mar 05, 2018 7:42 pm

It's better to choose the gamepad with more buttons. It's not convenient to remember many combinations. The list of cores is not limited by Megadrive NES and SNES. You cannot assume some specific buttons. That's why every core has its own joystick definition.
Since PS3 doesn't flood with 8bitdo receiver then it's good idea to use it instead of NES pad.

Locutus73
Captain Atari
Captain Atari
Posts: 170
Joined: Wed Feb 07, 2018 6:13 pm

Re: Joystick testing thread

Postby Locutus73 » Tue Mar 06, 2018 12:53 pm

Sorgelig wrote:It's better to choose the gamepad with more buttons. It's not convenient to remember many combinations. The list of cores is not limited by Megadrive NES and SNES. You cannot assume some specific buttons. That's why every core has its own joystick definition.
Since PS3 doesn't flood with 8bitdo receiver then it's good idea to use it instead of NES pad.

I agree that PS3 with 8bitdo dongle is a good choice and I add that SF30Pro and Switch Pro Controller are other great choices (I like very much the Switch controller). On the other hand SNES controller replicas and, in general, old school controllers without analog sticks are focused on dpad resulting in a better and more comfortable digital cross only experience. I’ll add that button combinations are an accepted standard for retro gaming menus and, usually, lead to a single system wide combo to remember. I mean a single menu button could lead to different choices (to remember) for different cores because a button useless in a core (i.e. select in MegaDrive, perfect for Menu) could be useful for emulation in another core (i.e. the same select button for SNES). Button combinations (i.e. select+start or select+start+L+R) usually aren’t used by any emulated platform leading to a system wide combination.
Again, this is just my two cents on a marginal usability topic; I understand that there are more useful features under development, where coding time is better spent.

Locutus73

Sorgelig
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 3089
Joined: Mon Dec 14, 2015 10:51 am
Location: Russia/Taiwan

Re: Joystick testing thread

Postby Sorgelig » Thu Mar 15, 2018 3:11 pm

Just received SF30Pro and MarioBrick receiver.
Together these gadgets work fine with MiSTer, although need some small adjustments in the code. 8bitdo uses non-standard analog ranges -32768..+32767.
Also will test PS3 gamepad with 8bitdo receiver. I will need to pair them using PC and special software.

Locutus73
Captain Atari
Captain Atari
Posts: 170
Joined: Wed Feb 07, 2018 6:13 pm

Re: Joystick testing thread

Postby Locutus73 » Thu Mar 15, 2018 3:38 pm

Sorgelig wrote:Just received SF30Pro and MarioBrick receiver.
Together these gadgets work fine with MiSTer, although need some small adjustments in the code. 8bitdo uses non-standard analog ranges -32768..+32767.

Look at my previous post viewtopic.php?f=117&t=32606&start=25#p340706 in the section 3) Sony Dual Shock 3 :wink:

Sorgelig wrote:Also will test PS3 gamepad with 8bitdo receiver. I will need to pair them using PC and special software.

Beware: you need to disable driver signature enforcement on 64bit Windows. Again, I don't think you'll get different results from my previous post.

[EDIT]
Some time ago, I ordered two SF30Pro from Amazon and returned them because the analog sticks were'nt perfectly physically cantered and I could not get full values on diagonals (I checked on Windows). Do your joypad exhibit the same small defects?

[EDIT2]
I think that the non-standard analog ranges -32768..+32767 are the standard analog ranges for xinput

Locutus73


Return to “MiSTer”

Who is online

Users browsing this forum: katya1602, oldgit, slinky and 7 guests