That kicks much ass.
Each of the eight bytes is a button mask indicating which of the eight physical play buttons will activate it.
On a TE Kitty, the physical buttons are:
0: X
1: A
2: Y
3: B
4: RB
5: RT
6: LB
7: LT
(up to down and left to right on the round 1 layout)
On the VLX kitty, the physical buttons are:
0: B
1: A
2: X
3: LT
4: Y
5: RT
6: LB
7: RB
(up to down and left to right on the default layout)
Each byte of the mapping field represents a single virtual button. For each of the bytes, if any of the physical buttons marked with a 1 are pressed, that virtual button is sent to the console as active. (Where possible, the virtual buttons are laid out in the same up to down, left to right order that we’d expect for a street fighter game on that console)
PS3/PC virtual buttons
0: Square
1: X
2: Triangle
3: Circle
4: R1
5: R2
6: L1
7: L2
So, on a TE Kitty, if the very first byte of the PS3 mapping (byte 0) is set to 00010001, then the square button will be pressed if either X or RB is pressed.
I’ll get to work compiling a list of the virtual buttons for the rest of the consoles.
EDIT: but I suppose I should mention the ‘on the fly’ mapping as well.
To enter into the OTF mapping mode, hold down the Turbo and Guide buttons, for a very long time. Seriously, like a full 15 seconds. Hold the stick in a direction so you can see the Guide lights while holding the Turbo and Guide buttons down, and you’ll see the lights turn off after the buttons have been held down long enough. Release the Turbo and Guide buttons and you’re in mapping mode.
The mapping mode will go through each of the eight virtual buttons in order. You press the button(s) you want to activate the virtual button and release; once they’re released, those buttons you pressed get saved for that virtual button and it moves on to the next virtual button. Once all eight have been assigned, the mapping is saved and it exits mapping mode back to normal play mode. Pressing Select (including Turbo on the TE Kitty) sets that virtual button to 0 so nothing activates it.
Easy example time: The virtual buttons for most supported console emulates what you’d expect for a Street Fighter layout if you press Jab, short, strong, forward, fierce, roundhouse, 4P, 4K. So doing that for PSX or PS3/PC modes would set it to the standard PSX layout, with R1 for Fierce, R2 for Roundhouse, etc.
Complicated example time. You want to set the buttons on your TE Kitty so Short (A) activates Square and X for a crouch-tech button, and Fierce (RB) to Square+Triangle+RB for an ultra/EX button, rest is standard Street Fighter layout.
You press and hold the Guide and Turbo and the stick until the Guide LEDs go out, and then release the Guide and Turbo buttons.
The first virtual button is Square, which we want to be activated by X (normal Jab), A (part of the crouch tech button), and RB (the fierce ‘three punch’ button), so press down all three buttons and release.
Press A (short) and release to assign X to the short button
Third virtual button is Triangle, used by Y (strong) and RB (fierce/three punch button), so press down both Y and RB and release.
Press and release B (forward) to assign Circle to the B button
Press and release RB to assign R1 to the RB button
Press and release RT to assign R2 to the RT button.
Press and release Select so that L1 isn’t assigned to any buttons
Press and release Select again so that L2 isn’t assign to any buttons.
Stick returns to normal operation after that last Select and saves the mapping to EEPROM.
I should also mention that the data in the eeprom can also be read back from the stick using the CLI to read them and save them to a separate file. The following command will read the data and save just the EEPROM data to file eeprom.hex:
fw_update -r -m eeprom -vid 0x6666 -pid 0x9001 -ox eeprom.hex
similarly, you can write just the eeprom data as well:
fw_update -w -m eeprom -vid 0x6666 -pid 0x9001 -ix eeprom.hex
And all of the data you could want on the fw_update program:
http://www.diolan.com/pic/bootloader_doc/fw_update_application.html