If the Super Scope is going out of alignment on some games, then they must be polling PIO manually, or having something else latch the counters or something. I'll see if I can get the speed hit below 1-2% when SS/Justifiers are disabled; if I can do that, I'll latch when needed, rather than ~700 cycles in advance.
I already mentioned the issue with joypads, but I'll elaborate.
Joypads return a position, -32768 to +32767, for each axis. Mice return the distance travelled since the last poll, in exact pixels. Even for high-speed mice, you typically can't move more than -300 to +300 pixels in 1/60th of a second.
Right now, I don't differentiate between the two internally. Joypads would need to scale that down by ~200x, mice by ~5x or so, to get the thing to move at a reasonable rate for a 256x224 screen.
In truth, I don't know what a good value would be, and I imagine it changes based on the video output size, the user's mouse speed settings, etc etc. I don't know how to handle it properly for all cases.
I also mentioned the auto-mouse-assignment thing. I can fix that the same way I prevent auto-assignment of enter / spacebar. I'm just kind of burned out at the moment.
Hmm, am I gonna have to draw a mouse graphic now? :P
Would be nice :)
Though we'd also want Super Scope / Justifier if you do that -- those would be really tough. And I don't even want to see what you come up with for the Exertainment ;)
We could leave them off, though. I imagine most know what a mouse looks like, and I believe it's relatively safe to auto-assign buttons 0 and 1. Same for Justifier with trigger/start. But Super Scope will need something, few people have mice with 4+ buttons.
Another idea is to auto-assign everything except SS pause+turbo, put those to keyboard or mouse clicks. But then that sucks for dual Justifiers (or dual mice). That pretty much will require two mice (and something like ManyMouse), or a way to map either analog controller axis and/or mice. We could always just leave dual Justifier / mouse mode disabled. I doubt that many people want to play Lethal Enforcers in 2-player mode (or 1-player mode, for that matter). And it would make configuration a lot easier for people.
But I have to admit, it really sucks playing with an analog stick. Games like Mario Paint fly swatting is ~10x harder this way. It might just be a good idea to leave dual Justifier mode hidden and always use the mouse. At least it'll be emulated internally.
Also, I can draw any kind of cursor. I chose red because of the fact that the light guns can't detect red, so it's the least likely color to appear in those games. But if someone wants to make a fancier one with more colors, we can do that too. Just keep in mind the really low resolution.