This is a review of a pair of gamepads produced sometime in the 90s by Zoltrix, both referred to as the Z-Boxer. Some materials also use ZX-Boxer, but I will stick with Z-Boxer due to the label on the back of each. One model is a native Gameport gamepad, which is suitable for classic DOS gaming. The other is USB-based, and can be used on more modern machines. Both use the exact same button layout, which is similar to the Sega Saturn (minus Start button). They consist of a D-Pad with 8 action buttons.
Zoltrix itself is a Chinese hardware company, but they appear to have moved on to different product lines. There is no mention of these Gamepads on their current site, but around the year 2000 they had a small page on them. There also appears to be a ho-hum Joystick called the ZX-Fighter.
The Gameport model is a true, native, gameport controller and does not use any special "digital" protocol. As such, it can be used natively in DOS games, but only has four true buttons, labelled A, B, C, D. The gamepad also has four additional turbo buttons, labelled TA, TB, TC and TD, which are placed a bit haphazardly. At least each button has a turbo version (whether or not use you use them), but it's weird that the C and D buttons end up in the trigger spots. Honestly, I would have preferred a GBA-style layout, with two of the primary buttons in those positions instead.
The D-Pad is actually quite good, despite looking a bit plain. It properly rocks around a central pivot, and is quite precise for any general gaming. If you have nightmares of hitting accidental diagonal motions with the Gravis Gamepad, rest assured that this gamepad does not have that problem.
The USB model has a full set of unique buttons, labelled A-C, X-Z and L + R, much like the Saturn. However, the button numbering does not fully follow that convention, instead the sequence of buttons is: A, B, X, Y, C, Z, L, R. This is likely to be compatible with assumed layouts from existing games, which may be designed for only four face buttons. Regardless, it is odd.
Speaking of odd, the joystick also reports itself as a Galy Galy USB Joystick, but I can't find any more information on where this might have come from.
The D-Pad is the same as the Gameport model, but does not report a central position by default:
This means the gamepad must be calibrated, which is a rarity on USB gamepads. On Windows, this is a minor nuisance, as the joystick control panel still provides calibration options. On Linux, joystick calibration seems to be hit-or-miss. I calibrated using jstest-gtk, but many games seem to disregard those settings. Other operating systems, such as MacOS, have no such luck. This gamepad is essentially unusable on those machines.
The gameport model is reasonably simple compared to modern controllers, consisting entirely of individual resistors, diodes, capacitors and transistors with nary a microcontroller in sight. This pad is split into two circuit types: the D-Pad and the buttons. Each circuit is repeated either twice (for X/Y axis on D-pad) or four times (for each of the four unique buttons).
The following is a circuit diagram of the D-pad interface for the gameport joystick. The color choice is entirely arbitrary, and is used to clearly illustrate which wires are connected (same color) and which are not. The same scheme is used later for the board image at the bottom of the section.
The traditional PC gameport interface is primarily designed for analog input, so the circuit above needs to simulate what is normally expected by the computer. A usual analog joystick would have a potentiometer for each X/Y axis. One end of the pot is connected to +5 V, the 'wiper' (variable portion) is connected to the axis input pin, and the far side of the pot is left unconnected. The PC interface does not have a traditional ADC to reduce costs, but instead times how long a capactor can charge based on the current path from 5V on the far side of the pot.
Since a digital d-pad is nothing like this, the circuit instead uses three different resistor combinations to simulate "up", "neutral" or "right" positions along the axis. With the UP direction pressed, there is a direct path between 5 V and the pin. On my DOS gameport test program this looks almost like a solid 5V with a few blips.
In the neutral position, the quick path is cut off, so current flows at least through the first 51 kΩ resistor. Additionally, the way the circuit is configured, if the down button is NOT pressed, current can flow through the transistor, so the net resistance is just the common 51 kΩ. This takes a moderate amount of time (~550 µs) to reach about 3 V before resetting the measurement.
When the down button is pressed, the transistor path is blocked, so current must flow through both 51 kΩ resistors, for a total of 102 kΩ of resistance. This takes the longest, at about 1200 µs/1.2 ms before reaching the same cutoff as the neutal case.
The button circuit is both extremely simple, and rather complex. First, let's see what we are dealing with:
The standard button A is directly connected between the pin and ground. For normal buttons, that's all that is needed; so what's the rest of it?
Turbo functionality. Since this gamepad has no microprocessor, the combination of transistors, capacitors and resistors serves one single purpose: to generate a square wave:
The entire output of the circuit is on the other side of the TA switch. When that button is pressed, the square wave is sent to the computer to press/release the button rapidly and generate that classic turbo fire action. The diode is honestly not really needed, but it prevent odd current paths when both buttons are held.
See below for a scope trace of pressing, releasing, then holding the turbo button:
Constrast that with a regular pressing/release sequence of the normal button I recorded on the same time scale:
I know, that's a pretty good square wave on its own. I was a bit too rythmic with my sample data, I guess.
That's basically all there is to say about the buttons; any complexity is from the turbo functionality. For more information on the overall PCB, please see following the GIMP image with both layers aligned. You can use the transparency adjust to see more details on either layer, as needed.
The USB model uses the general-purpose CY7C63000A microprocessor to handle the USB protocol, with a few resistors, capacitors and transistors for the rest of the circuit.
The D-Pad circuit is dissapointingly similar to the gameport circuit (shown for up/down axis):
Similar to gameport joysticks, the micro-controller uses timing to determine the resistance in the circuit path. In this case, it appears to be keeping the pin held to ground as an output, then periodically switching to input mode to time how quickly the pin reaches a threshold due to resistance between the pin and the 5 V line. Here is a scope trace showing periodic polling when connected to my computer while a joystick test program is running:
With the UP direction pressed, there is a direct 2.2 kΩ path between 5 V and the pin, which is likely just there to limit current draw in this scenario. As with the gameport pad, it takes very little time (< 10 µs) to reach the threshold and stop the reading.
The neutral position is identical to the gameport joystick, with an effective resistance of 51 kΩ. This takes a moderate amount of time (~62 µs) to reach about 2.5 V before being cut off.
The down position is also identical, with a total of 102 kΩ of resistance. This takes the longest, at about 125 µs before reaching the same cutoff as the neutal case.
What does this mean for the calibration issues? Absolutely nothing! The actual circuit behaviour looks fairly ideal. The timing for the down case is about double the neutral case, and the up case is so fast it overshoots the 2.5 V threshold. It appears the calibration issues are simply due poor coding on the microcontroller side, which we have no (practical) way to investigate further.
If interested in other parts of the wiring, see the following the image with both layers of the PCB aligned for more information. As above, use the transparency adjust to see more details.
The Z-Boxer is an entirely average game controller, which wouldn't be worth a second glance if it weren't for the dearth of good gameport gamepad options. As a result, the gameport version is an easy recommendation for retro DOS gaming, since it has a much better D-Pad than almost any other device I've seen.
The USB version is considerably harder to recommend, primarily because of the calibration issue. It's comfortable enough to use, but the calibration problems either add additional complications (on Windows), or render it unusable on other operating systems. Nowadays, there are plenty of better USB controller options, so I'd suggest passing on this particular device.