First post, by Justice
There are two joystick problems with WC3. One, is that it jumps all over, but this seems to be fixed with HAL9000's timer fix (I haven't verified that this is exactly what fixed it, but it is in HCl's dosbox build, so that seems most likely. I haven't found a .patch or .diff that includes this change yet).
The second appears to be a bug or "missing feature" in the 0x201 port read. The attenuation of the axis doesn't appear to be based on time at all. WC3 seems to take into account how long it should really take for the axes to hit 0, and when this happens much too quickly (like it does with cycles = 40000), it doesn't wind up with a large enough range of values to work correctly. Adding a sort of delay into the source code that skips xcount-- and ycount-- for a few reads in a row (really, you could calculate what the rate of decrease should be), and that makes WC3 happy.
Unfortunately, "fixing" this "problem", if it is one, (it may very well be that I'm not understanding something as well) would slow down any game reading the joystick this way, both by slowing down the emulation and forcing it to use more cycles to get a clean reading.