Decoding Genesis Controllers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Synlor- 27th February 2005 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The Genesis
controller is quite simple because it just multiplexes 2 buttons
onto 1 line, making decoding fairly simple.
History: V. 0.1 First document
Equipment: Disclaimer: I am not responsible of what you do with these
directions, nor responsible for what it can do to your dreamcast,
vmu, or anything else that is in your possession.
How it works: Now you may be wondering on how that could work, and the answer
is quite easy. There is one pin on that chip that is known as the
select pin. This pin determines which of the 2 lines should be
outputted on the final line by either being high or low. For
example, the A and B button are sent to the console by 1 wire. When
this select line is at +5 volts (high) the status of the B button is
outputed. When it is low (ground) the status of the A button is sent
to the console. The genesis acts as active low, so in the previous
example it would work like this. With the select line high, and the
B button not being pressed, the output would be +5 volts. If the B
button is pressed than the output would be low (ground). Now when
the select line is low, and the A button is pressed, the output is
once again high. And once again when the button is pressed it is
low. We can decode the controller by raising and lowering the select
line and reading each output.
Here is a visual example of this: The following table is which buttons go with which pin on the
Genesis connector, and how they react with the select line: Program: Download: Interfacing: This table shows which pins on the PIC represent each button
(active low): |