While testing Schleichfahrt, I've encountered a weird behaviour:
Schleichfahrt reads mous sensitivity, multiplies it by 8, and sets
that value. This happens 4 times in a row, so sensitivity is finally
at several thousands and the mouse has only 4 locations: the
corners.
CuteMouse suggests that all sensitivity values beyond 100
should be ignored, so that has been added.
As a result of above changes, Schleichfahrt's sensitivity stays at
49 (i.e., 1:1). To alleviate that problem, I've added a feeble
double-speed threshold functionality. It has been gathered
empirically and works nicely for me. Just take it with some
amount of distrust.
Schleichfahrt's readme says to use the latest original MS mouse
driver when either mouse stays in the corner or mouse is terribly
slow (both problems seen), so I guess Ms Mouse does
something different with these weird sensitivity values.
Unfortunately I was unable to find api docs for current MS mouse
drivers apart from intlist, which doesn't have useful information on
that topic.
mouse enhancements
Logged In: YES
user_id=535630
uhm double speed treshold. there is an offical mouse call
to set it.
is that being honored as well then ?
I know the cvs of cutemouse has an interresting formula in
it (it's quite readable in asm)
Maybe if the value >100 then value=100 ?
games that needed the current code were simcity 2000 and
master of orion 2 (very much)
Logged In: YES
user_id=1045474
Yes, the patch uses the doublespeed_threshold value that was already
present in the mouse data structure, and I've updated the interrupt to
set/return that value. My formula is not interesting or anything, it's just
simple and still works qute nicely. The first thing I came up with, and
since it had the desired effect, I left it at that.
Cutemouse simply ignores any call to set_sensitivity when the value is
Logged In: YES
user_id=1045474
I've tested your suggestions. During these test I found the doublespeed threshold to be quite poor. Depending on cycles/app it doesn't feel nice. OTOH, capping the sensitivity at 100 (instead of completely ignoring sensitivity >100) makes Schleichfahrt feel like it felt on real DOS. Seems like that's what the MS driver does. Thus, I suggest adding
if (px > 100) px = 100;
if (py > 100) py = 100;
to SetSensitivity and leaving the rest as-is.