Okay, maybe it won't turn out to be the ULTIMATE orb solution, but we're getting there...
Here's a control system for you:
Left hand Spaceball 4000FLX, right hand mouse. Could this control system be entirely constructed any more of pure distilled win? Well, actually jury's still out a bit, but it's looking very good.
The good news: the Spaceball 3003 and 4000FLX work with the adapter (I was able to play through a level of L4D using it, which is now my "acid test"). This, by the way, has a LOT of promise; the 12 buttons on the spaceball plus the mouse buttons means you have more controls available, which is good, and the mouse for fine-grained control means you can get orblike movement for moving around combined with fine-grained aiming for shooting. The Z axis for jumping and crouching may not turn out to be the best idea, but it sorta works. I wind up kneeling accidentally a lot.
It is pretty darn wobbly! And there's a "feel" issue I don't know how to describe with the rotation, which may just have to be played with. Right now the HID reports we construct say the axis goes from 0 to 1023, but the spaceball has a much larger range than the spaceorb, so I have to do some scaling. The weird part is the range is almost asymmetric (ie something like -8000 to 12000 or bizarre ranges). In practice this may not be a problem as we can clip the limits, but it does bring me to the bad news:
1) (software) I'm not sure we can do the old "curve" sensitivity thing. The Arduino is severely limited with regard to memory; you can cheat by putting things in flash, but you have to page them out (I didn't know this) which may be too slow. This may or may not be a problem as I think we can do all the scaling at run-time.
2) (hardware, could be a problem) occasionally the adapter misses a byte. If the spaceball is sending a bunch of zeros, it just occasionally misses one, which was a real surprise until I figured it out (spontaneously an axis would go to max and random buttons would press. Hurray!). I've taken the approach "well, if the packet ends early and I don't have enough characters, it's a bad packet and we just don't process it" which seems to be working OK and it's quite usable. However, because it shook my faith a bit, I am going to take just a little more time on the Arduino forum checking to see if this is a fault of the Arduino, my circuit, or the orb. I think the circuit will work OK as it is, but I want to make extra sure I'm not missing something obvious to other people.
3) (Minor) : right now the spaceball does not automatically initialize at startup (I don't think I can). It waits until the first press of button #1. Well, that's not so bad.
I'm not crazy about the amount of source code editing I'm doing for configuration, so there may be some cleaning to do, but this is certainly encouraging. And I think I really like the 4000 as a gaming device once I get the sensitivity and "feel" issues down. Don't make a mad rush to ebay in case this doesn't work out, but I think it has a lot of promise (and heck, if you see one for really cheap...).
So it may not be the ULTIMATE orb solution, but it's a pretty good step (and it must be said that I don't think any of these problems apply to the SpaceOrb proper except the sensitivity curve, which I may be able to work around).
-->VPutz