I just have a misgiving about the possibility of stuff being lost in translation:
1) 49-way 8 pins -> USB analog ("raw", "Progressive", "linear", "exponential")
2) -> mame internal analog
3) -> gamedriver 49-way 8 pins.
Actually, the hardware removes one level of translation.
Which one? I don't see how that could be possible.
In the sense of what the computer has to deal with. The first level translation is no longer necessary.
So the translation still happens. It's the
translation I'm worried about, not who does it.
And since the computer has
never done this step (not in official mame nor in mameAnalog+), your product is not removing it. You even say below the computer can't understand this
raw, err, original unmodified data. Heck, the whole reason for your product is to do this step (unless in a different mode of course).
For 49-way games, then the driver gets the mame core formated data, and translates it back to 8 bits that match the 8 pins on the joystick. IOW, it's translated to back to the original format, so the ROM can do the processing. (Translation 3)
This is the part that is most important. It also seems to be the part that is the most forgiving. All that needs to happen here is that the game sees 3 distinct levels of force in each of the primary directions. Anything beyond that is governed 100% by the joystick mechanics.
Well, the way the mame drivers for those three games are set up is pretty dumb. The levels have to be far enough apart so the division won't hide the difference, but not too far so the division will skip one of the levels. And this is
after mame applies it's OSD to core translation + acceleration. Which are after the first step. So not
any three levels, but three levels that pass the above criteria.
Forgiving, yes; any, no.
The analog operation is a nice bonus, and it can make some games playable that never had a chance on an 8-way. But it will never be ideal with something that has only 1/29th the resolution (typically).
Definately, never said differently.
<off=chest>
Oh BTW, and just my opinion (you can ignore if you want, Randy
), I don't like the term "raw" used as the name for one of the modes. "Raw" 49-way to me means 8 bits, one bit per output pin on the controller, matching exactly what the respective pin is outputing, four 4 bits per axis. Wiz49's "raw" mode sounds like SJC's "linear" mode, which is very different than the raw output of the 49-way stick (IOW it is processed data). And to me, that's not raw anymore. [shrug] Not that it really matters at all, and "What's in a name, a rose [blah][blah][blah]..", but everytime I see "raw" I think "data as if direct from stick" and then need to readjust to Randy's mode naming. Sorry, please ignore this paragraph, not important.
</off=chest feel=better>
Yeah, but you brought it up, so now we have to talk about it 
By your definition, the "raw" output from a 49-way is binary data. Things are either on or they are off in combinations a) that mean something to the application looking at them. These combinations essentially form this "grid" that everyone likes drawing on. b) The grid itself is actually the raw output of the stick. c) Now, each one of these blocks can be assigned a number, or you can look at the grid and assign a range in each of the 2-axes and divide it into pieces. edit: added strike through and italic lettering
The lines I struck through are your assumptions, not mine. The grid is not the raw data, the raw data is the 8 bits, period. I gave each sentence a letter and are addressed below.
a) The raw data doesn't always mean something to the app looking at it; I can't read polish and need it translated for it to mean something to me, possibly losing something in the translation. The translated polish is not raw data anymore.
b) The gird is not the raw data, it's an abstract vision of what the raw data represents.
c) I guess you can do whatever you want with the grid, but the only way to make it close to raw is to put the raw data (8 bits, in binary, hex, or other number) in the square that combination represents. Anything else is a translation or abstraction, aka not raw.
The computer has no way to think about the binary data as it has no native 49-way interface,
Yup, that's one of the main reasons I call this "raw", and your "raw49" not raw. Sort of like people shouldn't eat raw meat, the computer can't understand the raw 49-way info. You have to cook it to a different form so the computer understands it.
... but it can assign a range to each axis or set of opposing primary directions. Just as the circuit generates binary data based on the linear spacing of the optical sensors, it's "raw" progression, so too are the values selected along the range the computer understands.
In my books, that's called "cooking", aka "changing from original format", aka "not raw".
And the binary data from the controlller is not "based on the ... spacing", and almost not "generated": 6 pins come straight from the six sensors (3 per axis) and represent if that sensor is blocked or not, the other two (one per axis) are generated from the corresponding 3 to store which side of center the stick is (note that center is considered on one of those sides since it's only one bit per axis).
The digital form of output on the 49-way is mostly irrelevant when connecting it to the PC. It's the "raw" spacing of the sensors that is important because this must always be translated into a usable form for the PC. And if you don't perform the translation based on the spacing of the sensors, it is no longer "raw"
Cooked is cooked to me, whether breaded and deep fried (your "progressive49") or plain steamed (your "raw49").
Raw49 = Unmodified 49 way operation. It is only "linear" by the coincidence that the sensors are spaced as such. italics by urebel
RandyT
That's your definition. My def of raw is "unaltered
data", since your product is about
sending data.
Like I said, it's just semantics, but I'm afraid you'll get into the same problems that happen with disscussing mice if you use "Raw" (with more people than just me

). "Mouse" means "physical device moved on pad" and/or "any physical device that sends like data" and/or "the cursor on the screen" and/or "object/instance that applications get the mouse data from. It's those dang "and/or" that causes problems in some discussions as one person may be talking about parts 1-3, another is talking about part 4, and the rest think all things mentioned apply to all parts 1-4. Confusion, misunderstanding, and false data come out of the different meanings with the same word.
Just out of curiousity, what do you call the
raw, err, data direct from the joystick, before it goes through your controller? Maybe I could just use that and forget this whole raw/not raw part.
