Page 1 of 1
Joystick issues on latest version
Posted: Tue Aug 18, 2020 12:48 pm
by Lisko
Hi, after updating ao486 yesterday, the joystick started act strangely in doom. I use a retro-bit saturn 2.4G controller connected via USB and osd set in 4 buttons joystick mode. The problem is that even when not pushing any button the skull cursor goes up or the player moves forward. With the previous version there weren't problems. Tried restarting doom many times for calibration but without success. Could someone try it and report?
Re: Joystick issues on latest version
Posted: Tue Aug 18, 2020 1:20 pm
by Chris23235
Try of 2 button joystick works, as far as I remember 4 button Joystick acts strange, when the game expects a 2 button Joystick.
Re: Joystick issues on latest version
Posted: Tue Aug 18, 2020 9:07 pm
by Schyz
Joysticks in DOS behaved in quite a curious way, the gameport was intended for 2 joysticks with 2 axis and 2 buttons each, you won't get anything else in DOS with a gameport. The
Gravis Gamepad (SNES style) with 4 buttons, was actually using the 2 buttons from the second player.
CH Products not only took the buttons, but also the other two axis (axises? axes?) for the rudder and throttle. You might be wondering how it maps the POV hat, the trick is that it didn't support simultaneous buttons, if you press 2 buttons it sends nothing to the computer, because the POV was actually sending combinations of two buttons, that's how the game knows if you are pressing one of the 8 directions in the POV hat.
The
Thrustmaster FCS allowed simultaneous button presses by mapping the POV hat to one of the axis (axises? axes?) on the second player. In order to avoid issues with a noisy analog signal it only supported 4 POV directions. This means it had no throttle mapped to an axis, only the rudder, the throttle was actually sending keypresses. I quote from the manual:
A forward movement of the throttle should generate series of small letter i's, one capital E and five capital I's. Pulling back on the throttle should generate capital D's, one capital L and a string of small d's.
The 10-button
Gravis Gamepad Pro (that looks like a PS1 gamepad) requires a driver or specific support for communication, that's why in DOS it feels like it's sending inputs like crazy. For DOS compatibility you could activate a switch that downgraded it to only 4-button support, like the non-Pro version. Additionally it supported the GrIP protocol that allowed for multiple gamepads on the same port, daisy-chaining them, this was supported also by some DOS games. I don't know if there is any DOS game that supported the 10 buttons mode.
If somebody wants more info about vintage joysticks:
http://nerdlypleasures.blogspot.com/201 ... ticks.html
Re: Joystick issues on latest version
Posted: Tue Aug 18, 2020 10:23 pm
by rhester72
This was a VERY Informative read and a piece of PC history I'd forgotten! Thank you!
Re: Joystick issues on latest version
Posted: Wed Aug 19, 2020 6:53 am
by Lisko
Thank you all, I'll try using gravis mode with a driver as a workaround.
Chris23235 wrote: ↑Tue Aug 18, 2020 1:20 pm
Try of 2 button joystick works, as far as I remember 4 button Joystick acts strange, when the game expects a 2 button Joystick.
The problem is that before the last release it was working very well.
Re: Joystick issues on latest version
Posted: Fri Nov 20, 2020 6:15 am
by bry111
There are also (at least) a couple different ways to read the gameport. Software can use BIOS calls (interrupt 15h, AH=84h), or poll I/O address 201h directly. I'm guessing most games didn't use the BIOS calls because they're slower?
I haven't had any luck getting gameport BIOS calls to work with MiSTer (at least in ao486_20201106.rbf and a few other recent versions), they seem to always return the same values. All buttons are constantly pressed and joystick axes are stuck in a weird position, in both 2 and 4 button modes.
How well 201h works seems to depend on the joystick and on MiSTer CPU speed settings (clock speed, L1/L2 cache). In a test program I wasn't able to register diagonals with a
DaemonBite Arcade Encoder or wired PS3 analogue stick, but the PS3 d-pad could register diagonals fine. Slowing down to 15MHz with no caches resulted in stuck axis positions. 15MHz with one cache (either L1 or L2) resulted in down and/or right not registering. Again, in both 2 and 4 button modes.