The circuit is built around an Arduino Nano and two analog multiplexers.
Potentiometer Inputs
Interface with analog joystick is borrowed from "Low Priced MasterPlay clone adapter" and uses two resistors and a capacitor on each axis to convert the digital directionals into equivalent charging current that provides charging time for minimum, medium and maximum position on each axis.
Table below describes the possible states to apply on H (half) and F (full) lines to obtain the possible states of X and Y axes.
H | F | Charging Resistance | Positon |
---|---|---|---|
Open | Open | 47k + 47k | Down/Right |
High | Open | 47K | Middle/Center |
Dont' care | High | 0 | Up/Left |
Cav (Vpot) input is monitored and provides the same behaviour as a Joystick so the games will always detect the device as a Joystick and not as a Trackball. A Zener diode and a current limiting resistors are added to the input of the AVR as the Cav Voltage can reach up to 6.4 Volts.
Keypad Emulation
Keypad presses are emulated by activating a pair of analog multiplexers. Only 1 (one) keypress can be simulated at a time. When there is no key pressed the "output" multiplexer is inhibited.
6 button controllers uses the MODE key on the right shoulder to alternate functions assigned to the buttons, according with the following layout:
3 button controllers use the keys C, C+B and C+B+A to switch between alternate functons and yet provide full keyboard coverage.