The kind of digital joystick that is typically used to build arcade cabinets, is either restricted to 4-way control or can be released to gain 8-way control. This in fact makes total sense as there are games, designed for 8-way controls, that become totaly unplayable with a 4-way restricted joystick (e.g. Supercobra or Scramble) and vise versa (e.g. Pacman, Quix).
That wasn't an issue in the good old 80's where each cabinet was dedicated and specialiced to exact one game. But today we have the luxury to play hundreds of those games within one cabinet thanks to emulation software and cheap but (sufficient) powerfull hardware.
The two parts when 3d printed will mount a flexible restrictor plate together with a small servo to the bottom of a typical digital arcade joystick.
With a slight modification of the emulation software it is possible to automatically derive the information about 4-way/8-way property of a game out of the selected games game-driver and turn the restrictor plate automatically to the right setup.
Instructions on YouTube:
Found a neat solution for electronic control with easy implementation. I'm currently tinkering with a Teensy 3.1 (something similar to Arduino) that can be programmed to exaclty look and behave like a Ultimark ServoStick controller. As a result any software that support the Ultimark will be capable to recognize and controll the teensy with the attached servo. In addition to the original controller the Teensy firmware will be capable to react on USB input and hardware controll buttons at the same time (no "one way" to hardware control). While the firmware is almost finished, I'm currently waiting for a signal level shifter (the Teensy runs on 3.3v signal level while the servo only recognizes 5v signals). If final tests are successfull, I will upload some video on YouTube that explains everything.
After some more testing it turned out that the SG90 servo is properly recognized and driven by the Teensy 3.1 without any level shifter. The servos 5v line has to be connected to the Teensy's VUSB connector, the servos ground to the Teensy's ground and the signal line to pin 20. Thats already sufficient to get the servo driven by ServoStik compatible software.
Additionally it is (optional) possible to attach two hardware switches to pin 18 (4-way) and pin 19 (8-way) for direct control. Software and hardware control can coexist at the same time. So if for example the software has driven the restrictor to 4-way orientation, a click on the pin 19 attached switch will override and turn it back to 8-way.
Furthermore two indicator LED's can also optional become connected to pin 16 (4-way) and pin 17 (8-way) to indicate the restrictor orientation that currently has been set (very helpfull once the joystick is installed into a cabinet).
The binary file that contains the Teensys firmware I wrote can be found as download to this thing (ToS428.hex). It can become uploaded to any Teensy 3.1 by using the Teensy uploader at https://www.pjrc.com/teensy/loader.html
Some instructual video will follow.
The power provided by the USB port is sufficient to drive the Teensy controller, the SG90 servo and (if attached) optional LED's. So no additional power supply neccessary.
Uploaded a video on YouTube for electonics and firmware setup:
IMPORTAND NOTE: The overall design (mechanical, electronical and firmware software) was totaly developed from scratch and independent from existing products. The designs are not compatible or interchangeable with existing products. In other words: the controller/firmware of this thing can only control the mechnics of this thing and can not be used as replacement for existing products. Only the electronics USB-interface was designed to become compatible with existing software implementations of emulators and emulator frontends for ease of use.
Cost estimate: 9 € for Joystick + 2 € for Servo SG90 + 19 € Teensy 3.1 + approx < 1 € wires/ 3d printed material = 31 € total