eswartz / emul

Emulator (V9t9 and others)
Other
28 stars 4 forks source link

Default joystick mapping incompatible with Retro-bit USB device. #13

Closed Deledrius closed 7 years ago

Deledrius commented 7 years ago

After setting up an installation of v9t9 on OSX with a Retro-bit Atari USB (I couldn't find a TI replica, sadly), I was disappointed to discover that the emulator seems to believe the joystick is stuck pressing "left". Using Enjoyable, I was able to emulate keypresses using the joystick (so I know the joystick is working correctly). This is not an ideal solution however, because in addition to needing to be enabled before each play session, it only appears to support simulating presses and not holds. Games like Parsec and Burgertime quickly become tedious if the player needs to pump the joystick in order to move. 😉

Is there a way to change the default mapping, or perhaps calibrate the joystick?

eswartz commented 7 years ago

Sorry about the trouble. As far as controllers go, I've only tested with USB gamepad controllers so far (XBox, PS3, Logitech T310), which map analog-style inputs to "hat switch left", "hat switch right", or "axis left", "axis right", etc. I'm not sure if all joysticks act the way you describe or just yours.

And unfortunately the retro-bit site is down at the moment, so I can't order one of those for myself.

Are you willing to do some testing? There's a way to query the lwjgl library directly for how it sees the joystick, which may help me see what's wrong.

If you download lwjgl_test.jar and put it alongside the other extracted v9t9j libraries (note the path printed on startup of v9t9.sh, something like /var/folders/.....longRandomChars/T/.v9t9j/exec/libs), then try:

java -cp .:lwjgl.jar:lwjgl_test.jar:jinput.jar org.lwjgl.test.input.TestControllers

it will put up a UI showing the ways various joystick/controller inputs map to various directions. Any axis-like ones (X, Y, Z, RZ, POV X, POV Y) are the ones to note. Are any of those stuck? They should rest at 0 and range from -1.0 to 1.0.

Deledrius commented 7 years ago

Ah, that's a good guess. I know I had tried it out with a gamepad myself and it worked fine. Unfortunately I don't have access to the equipment in question at the moment (I left it with the person for whom it was purchased) but I will hopefully be able to try out your test next week. I will report back with the results then. Thanks for your help!

eswartz commented 7 years ago

I acquired one of these joysticks and see that it has an... interesting... configuration. (lwjgl thinks this thing exposes four X axes, the first of which is stuck at -0.99, the next two at zero, and the fourth actually representing the X of the stick). Enchanting.

Deledrius commented 7 years ago

Wow, thanks for looking into it! I'm sorry I haven't yet had access to test it for myself. What a strange configuration they chose for the device... it's no wonder the emulator was confused by it.

Does controller-fixes-13 fix the issue for you? I didn't have any difficulty building the project, so I'll give this a try against ours soon (I hope).

eswartz commented 7 years ago

Yes, I was able to work around it initially by hacking the way buttons/axes are detected. But the default detection leaves a lot to be desired, so I'm beefing it up with user-editable configurations. Working on that now.

Deledrius commented 7 years ago

Excellent. 😄 Incidentally, building that branch last night required me to manually add the log4j dependency to the v9t9-server module's .classpath and build.xml. I see you've done considerably more work on it this morning, so you may have already caught it, but just in case...

eswartz commented 7 years ago

Good, thanks for catching that. I would have seen it eventually -- still in Eclipse at the moment.

The UI is mostly done, but still has a flaw in that only one combination of controllers is remembered at a time, so one's painstakingly established settings are lost if you run with a different setup. I'll work on that. But as for now, if you want to try with only that joystick and disable that bogus X axis, have at it.

eswartz commented 7 years ago

I think this should be fixed satisfactorily in the 2017/03/05 release.

Deledrius commented 7 years ago

Terrific! It works fine with my gamepad. I hope to try it with the Retro-bit soon. Thanks for adding this!

👍

Deledrius commented 7 years ago

Sorry, I forgot to update this after testing with the Retro-bit, but it works! Thanks again. 😃