Usb Gamepad "sticking" Issue


T

TelcoLou

Guest
There have been a few instances of USB gamepads "sticking" during gameplay; a quick change in movement from left-to-right for example, causes the gamepad to become unresponsive until you let the pad center itself, then control resumes as normal.

It happens in every emulator I've tried so far. I'm wondering what could be causing this, since it affects several users here .. (thus the reason for posting it in the General section)

</hmmmm.....>
 
DBH said:
That's a mighty fine shuttle launch pad you have in your signature.
Thank you :)
 
Last edited by a moderator:
Is the problem reproduceable in my test app?

The only problem I get is that it doesn't detect correct button count (same as in PicoDrive). The same code works correctly on my PC, however.
 
notaz said:
Is the problem reproduceable in my test app?

The only problem I get is that it doesn't detect correct button count (same as in PicoDrive). The same code works correctly on my PC, however.


Many thanks, I'll test this out when I get home later tonight :D
 
Last edited by a moderator:
TelcoLou said:
notaz said:
Is the problem reproduceable in my test app?

The only problem I get is that it doesn't detect correct button count (same as in PicoDrive). The same code works correctly on my PC, however.


Many thanks, I'll test this out when I get home later tonight :D


After running the test, I've figured out what is happening:

When you press Left in the controller, you get that button as active. However, when you immediatly press Right without releasing left, you'll get as if you are actually pressing left AND right! When you release right, both keys will be released. Not sure if this has to do something with Linux itself, Puck's code, or maybe the controller. I doubt it has something to do with the controller though.
 
Last edited by a moderator:
I've just taken a quick look at pucks code (if that's what these problem emulators are using), and it seems that left is set if the value of the axis is <0, right if it's >0 and they're both unset if it's 0. I suppose there's always a chance that the movement could be so quick that the 0 value doesn't make it into the event queue and so moving from left to right wouldn't trigger left to be released. Personally I'd always set left to be released when setting right to be pressed (just to be on the safe side) as they should never be able to be pressed at the same time. If this is what's causing the problem then it's a really simple fix that needs adding to pucks code.
 
Back
Top