TOKN KB32 SPECULATION AND USAGE
NEWS/UPDATES:
1 Aug 05 - Initial webpage release.
DISCLAIMER:
This is not meant as an endorsement of the KB32. The KeyWiz Eco generally costs less and runs rings around it in terms of performance. You could realistically use a KeyWiz for a 4-player, 3-button each panel with no chance of ghosting except on the coin and start inputs (which would be stealth-shifted).
The best the KB32 can support is 4-players and two buttons each. IMHO, the I-PAC/2 is a better choice for two-player support, since you don't have to fool with diodes or ghosting. For 4-player support, the four extra inputs come in handy, but no more than you could do with a well-executed keyboard hack, in fact, that's a large part of the basis for the theory behind this page.
Having said that, the KB32 is significantly better than the KB16 for most applications, and since this theory is complex, I felt like I should document it.
SUMMARY/OVERVIEW:
I don't actually have a KB32, but I will assume the same thought process went into the design as the KB16. If this it true, it is about the equivalent of a keyboard hack but without blocking to stop ghosting on the admin keys. In other words, the unit can be considered a dual 8x2 matrix encoder and should have the following max configs (without resorting to diodes):
1 Joystick and
14 action buttons, with 14 admin buttons,
(admin buttons will cause ghosting).
2 Joysticks and 6 action buttons each, with 12 admin buttons (admin
buttons will cause
ghosting).
3 Joysticks and 3 action buttons each, 1 additional non-ghosting input
(Escape) and 10
admin buttons, (admin buttons will cause ghosting).
4 Joysticks and 2 action buttons each, with 8 admin buttons (admin
buttons will cause
ghosting) (You have enough buttons for coin and start, or other
functions, but not both,
however, my page on Eliminating
Coin and Start Buttons could
be useful here).
Assuming it is made the same as the KB16, I again recommend setting alternate inputs as your action buttons. Also, the KB32 has some advantages on admin buttons and ghosting. Admin buttons can be accidentally triggered by ghosting, but the ghosting should not "cross banks" of the encoder. Therefore, when possible, I recommend setting the really annoying buttons (TAB, Tilde, Pause, Escape, etc.) on Bank two, and the other buttons (Coin, Start) on Bank one. Wired this way, you have no possibility of a coin or start input accidentally ending your game. You may get unintended "extra" coin inputs if coin or start is pressed along with action keys, but this is a minor annoyance. Tab, Tilde, and Pause inputs could end your game, but you are less likely to press these in the heat of gameplay.
USAGE:
I don't have an actual unit and was unable to verify the actual setup, but it should be safe to make the following assumptions based on the KB16:
Assuming the unit is built similarly to the KB16, the first, third, fifth, and seventh and remaining "odd" inputs comprise Row A of the upper Bank IDE header and the even pair of inputs comprise Row B. The same theory would apply to the lower Bank IDE header.
KEY CONCEPTS:
EXAMPLES:
I will use the following color coding to make it easier to see what is going on. Aqua represents the Player 1 buttons. Yellow represents the Player 2 buttons. Green represents the Player 3 buttons. White represents the Player 4 buttons. Red represents the troublesome admin buttons and Pink represents the non-troublesome admin buttons.
Here are the physical connections to minimize ghosting for each scenario above. (The encoder will need reprogramming to match these configuration) These are only suggestions and other options are definitely possible:
Upper Bank | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | Column 7 | Column 8 |
Row A | Joy 1 Up | Joy 1 Left | P1B1 | P1B2 | P1B7 | P1B8 | P1B9 | P1B10 |
Row B | Joy 1 Down | Joy 1 Right | Admin 1 | Admin 2 | Start 1 | Start 2 | Coin 1 | Coin 2 |
Lower Bank | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | Column 7 | Column 8 |
Row A | P1B3 | P1B4 | P1B5 | P1B6 | P1B11 | P1B12 | P1B13 | P1B14 |
Row B | Admin 3 | Admin 4 | Admin 5 | Admin 6 | Tilde | Tab | Pause | Escape |
In this configuration, pressing any two of the Upper Bank Row A Action buttons along with a Row B action button, could generate a Ghost Admin 1 or 2 or Coin or Start input, but will not exit the game. Pressing any two of the Lower Bank Row A Action buttons along with a Row B action button, could generate a Row B ghost input, but this is unlikely to happen.
This is not a very realistic scenario, but it is a possible one. Depending on requirements, it is entirely possible to put the joystick inputs on the lower bank to use two less troublesome admin button and provide two additional non-troublesome ones.
Upper Bank | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | Column 7 | Column 8 |
Row A | P1B3 | P1B4 | P2B3 | P2B4 | P1B5 | P1B6 | P2B5 | P2B6 |
Row B | Admin 1 | Admin 2 | Admin 3 | Admin 4 | Start 1 | Coin 1 | Start 2 | Coin 2 |
Lower Bank | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | Column 7 | Column 8 |
Row A | Joy 1 Up | Joy 1 Left | Joy 2 Up | Joy 2 Left | P1B1 | P1B2 | P2B1 | P2B2 |
Row B | Joy 1 Down | Joy 1 Right | Joy 2 Down | Joy 2 Right | Tilde | Tab | Pause | Escape |
In this configuration, pressing any two of the Upper Bank Row A Action buttons along with a Row B action button, could generate a Ghost Admin 1 or 2 or Coin or Start input, but will not exit the game. Pressing any two of the Lower Bank Row A Action buttons along with a Row B action button, could generate a Row B ghost input, but this is unlikely to happen.
For this scenario, I decided to move the joystick inputs to the bottom bank to free up additional non-troublesome admin buttons, although I am not sure what you would use them for.
Upper Bank | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | Column 7 | Column 8 |
Row A | Joy 3 Left | P1B2 | P1B3 | P2B2 | P2B3 | P3B1 | P3B2 | P3B3 |
Row B | Joy 3 Right | Start 1 | Coin 1 | Start 2 | Coin 2 | Admin 1 | Start 3 | Coin 3 |
Lower Bank | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | Column 7 | Column 8 |
Row A | Joy 1 Up | Joy 1 Left | Joy 2 Up | Joy 2 Left | Joy 3 Up | P1B1 | P2B1 | Escape |
Row B | Joy 1 Down | Joy 1 Right | Joy 2 Down | Joy 2 Right | Joy 3 Down | Tilde | Tab | Pause |
At this point, we are using almost all of the inputs, so everything is pretty fixed in how it can be set-up. A nice feature of this set-up is that we are able to put Escape on the main row, and have it ghost with Pause, so the only way to accidentally exit would be to have Pause and another troublesome admin button pressed along with one of the P1 or P2 Button 1's. This layout also demonstrates how I like to have the Coin and Start Buttons paired with the corresponding players action buttons b/c you are unlikely to hit these at the same time.
Upper Bank | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | Column 7 | Column 8 |
Row A | Joy 1 Up | Joy 1 Left | Joy 2 Up | Joy 2 Left | P1B1 | P1B2 | P2B1 | P2B2 |
Row B | Joy 1 Down | Joy 1 Right | Joy 2 Down | Joy 2 Right | Start 1 | Coin 1 | Start 2 | Coin 2 |
Lower Bank | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | Column 7 | Column 8 |
Row A | Joy 3 Up | Joy 3 Left | Joy 4 Up | Joy 4 Left | P3B1 | P3B2 | P4B1 | P4B2 |
Row B | Joy 3 Down | Joy 3 Right | Joy 4 Down | Joy 4 Right | Start 3 | Coin 3 | Start 4 | Coin 4 |
This is a very basic layout and uses all the inputs. There is very little chance for ghosting, and when it occurs the worst that could happen is extra start and coin presses. There is no way to press Pause or Escape, but for a desktop control panel, you could use the pass-thru keyboard for this.
Upper Bank | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | Column 7 | Column 8 |
Row A | Joy 1 Up | Joy 1 Left | Joy 2 Up | Joy 2 Left | P1B2 | P2B2 | P3B2 | P4B2 |
Row B | Joy 1 Down | Joy 1 Right | Joy 2 Down | Joy 2 Right | Coin1 | Coin 2 | Coin 3 | Coin 4 |
Lower Bank | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | Column 7 | Column 8 |
Row A | Joy 3 Up | Joy 3 Left | Joy 4 Up | Joy 4 Left | P1B1/Start 1 | P2B1/Start 2 | P3B1/Start 3 | P4B1/Start 4 |
Row B | Joy 3 Down | Joy 3 Right | Joy 4 Down | Joy 4 Right | Tilde | Tab | Pause | Escape |
This is a very interesting set-up. It requires you to configure MAME™ so that Start and Button 1 for each player use the same input, but this causes surprisingly few problems and frees up the four extra admin buttons we wanted for Pause and Escape.
Upper Bank | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | Column 7 | Column 8 |
Row A | Joy 1 Up | Joy 1 Left | Joy 2 Up | Joy 2 Left | P1B2 | P2B2 | P2B6 P3B2 |
P2B3 P4B2 |
Row B | Joy 1 Down | Joy 1 Right | Joy 2 Down | Joy 2 Right | Coin1 | Coin 2 | Coin 3 | Coin 4 |
Lower Bank | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | Column 7 | Column 8 |
Row A | P1B4 Joy 3 Up |
P1B5 Joy 3 Left |
P2B4 Joy 4 Up |
P2B5 P3B3 Joy 4 Left |
P1B1/Start 1 | P2B1/Start 2 | P1B6 P3B1/Start 3 |
P1B3 P4B1/Start 4 |
Row B | Joy 3 Down | Joy 3 Right | Joy 4 Down | Joy 4 Right | Tilde | Tab | Pause | Escape |
Hope this helps some users of the KB32 !!! As always, feel free to send me any questions/comments.