The PC joystick interface just isn't all that great to begin with... basically just a set of 555 timer IC's (556 dual timer IC) in a one-shot configuration, and the xy potentiometers control the duration of the output pulse. The software on the PC determines the position of the stick by counting the length of the pulses. Cheap.
With that being said, I'd say you're on the right track by cleaning/changing the pots, because the wipers do get dirty and that will be detrimental to the operation. Would be the first thing I'd look at, after it was determined that the issue is isolated down to a particular joystick.
It could be a number of things:
- The condition of the pots
Clean/replace
- The signal path
Check cable condition, contact condition
- The software
Many different joystick software routines out there, results will vary.
Does it happen in pure DOS as well as in Windows 98? A Windows driver or DOS TSR could be interfering with the software while it is trying to read the joystick port. Try using the joystick in the two different environments.
- Another joystick interface in the system trying to share the same port resource.
If there's another ISA/PCI card in the system that also has a joystick port (or joystick headers on the card), look for a jumper to disable it.
Then we can go off into the weeds if none of that seems to point to why your joystick is a bit twitchy.
Thanks for this. Unfortunately I have only one pc joystick, so this makes troubleshooting somewhat difficult, but I can try it on a different PC.
The windows 98 pc (one I got the joystick for) has only one game port. The other IO is motherboard integrated so there is no separate IO card.
I've booted the PC in DOS mode (by using F8 at win98 startup and choosing command line only) and two DOS joystick testing programs had the following results:
Joystickchk - it shows joystick output graphically, is very sensitive, updates very fast - same as Windows, very jittery on all axes even when nothing touches it.
Joysticktst - this shows numbers seem to update a lot less - it appeared almost rock solid, but as previously joystick's range was shown graphically with high resolution here the entire range first between numbers 3-16 (like a built in average/dead zone).
It is similar to what I see in Windows with dxtweak tool. It shows raw values that seem to be dancing around and direct x input that has some smoothing applied to it.
Yesterday i tried another game after setting a dead zone of 12% and Motoracer 1 was actually playable fine. So at least some games can cope with it. An example of one game that was barely playable was Carmageddon 1.
Regarding other specific items you listed:
- cable/connection continuity
I haven't checked it with a multimeter, but I deoxed the port and plug. Also I looked for any changes in a test program while manipulating the cable in the usual places where it breaks. I saw no difference. So I doubt it is this, but I'll check it with a multimeter too when I have a chance just in case.
-The condition of pots
Externally they look good as well as the joystick. It looks like it might have been used once by the previous owner and it spent the rest of the time in storage. It is possible pot wipers deteriorated. It is a big surprising they all behave pretty much the same. Dancing when stationary. Previously when I dealt with defunct pots (usually as volume knobs) they would crackle and change when touched. When testing the cable I'll test the resistance too. They look like standard 6mm shaft pots, but the body is smaller diameter than ones I have, so I'll have to order them if it turns out it is them.
-The software - I guess we'll know for sure once I plug it into another pc (this is a much older 386 pc with both a sound card and an io card game port). On the other Windows 98 machine I have a fairly fast cpu. The motherboard supposedly supports only cpus up to p2 533mhz or so, but I'm using a modified slotket and a P3 933mhz running at 700mhz. Perhaps those pulses it is supposed to measure the length of don't have a chance to complete every time it polls? Well know once it is tested on a 386.
Also, I found it surprising that they used 100k pots and maybe 15% of their range when the entire measurable range I read is 100k. It woukd be much better to get for example 600k pots (and still use only the beginning). When replacing I might try both.