Zoltrix Z-Boxer Review (USB and Gameport versions)

Overview of both USB and Gameport models

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.

Gameport Model

Gameport Model front Gameport Model top Gameport Model rear

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.

USB Model

USB Model front USB Model top USB Model rear

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:

USB Model joystick test

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.

What's Inside

Gameport Model

Gameport Model PCB component side Gameport Model PCB trace side

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).

D-Pad

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.

Gameport Up/Down circuit

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.

Scope showing timing for Up button pressed

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.

Scope showing timing for no button pressed

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.

Scope showing timing for Down button pressed

Buttons

The button circuit is both extremely simple, and rather complex. First, let's see what we are dealing with:

Gameport Button circuit

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:

Scope showing turbo 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:

Scope showing turbo button pressed sequence

Constrast that with a regular pressing/release sequence of the normal button I recorded on the same time scale:

Scope showing button pressed sequence

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.

USB Model

USB Model PCB component side USB Model PCB trace side

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):

USB Up/Down circuit

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:

Scope showing periodic polling

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.

Scope showing timing for Up button pressed

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.

Scope showing timing for no button pressed

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.

Scope showing timing for Down button pressed

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.

Conclusions

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.

Comments

There are no comments yet.

Add a Comment
Comment Atom Feed