-------------------------------------------------------------------------------
NES Gamepad signalling
-------------------------------------------------------------------------------

Synthetically generated NES gamepad signalling.

SPI settings are always:

Clock polarity = 1
Clock phase    = 0
Bit order      = msb-first
Word size      = 8

Chip-select is not used and must not be assigned to any channel.

        ___
   GND |o  \
   CUP |o o| VCC
 OUT 0 |o o| D3
    D1 |o o| D4
       -----
NES Gamepad Connector

VCC   - Power 5V
GND   - Ground
CUP   - Shift register clock (CLK)
OUT 0 - Shift register latch (optional)
D1    - Gamepad data (MISO)
D3    - Data (unused)
D4    - Data (unused)

Data pins D3 and D4 are not used by the standard game pad but by special
controllers like the Nintento Zapper light gun.


Logic analyzer setup
--------------------

The logic analyzer used was a DreamSourceLab DSLogic Plus (at 10 MHz):

  Probe       NES gamepad
  -----------------------
  0           OUT 0
  1           D1
  2           CUP


a.sr
----

Button press of button 'A'.

MISO bits: 01111111
MISO data: 7F
Button States: A


b.sr
----

Button press of button 'B'.

MISO bits: 10111111
MISO data: BF
Button States: B


select.sr
---------

Button press of button 'Select'.

MISO bits: 11011111
MISO data: DF
Button States: Select


start.sr
--------

Button press of button 'Start'.

MISO bits: 11101111
MISO data: EF
Button States: Start


north.sr
--------

Button press of button 'North'.

MISO bits: 11110111
MISO data: F7
Button States: North


south.sr
--------

Button press of button 'South'.

MISO bits: 11111011
MISO data: FB
Button States: South


west.sr
-------

Button press of button 'West'.

MISO bits: 11111101
MISO data: FD
Button States: West


east.sr
-------

Button press of button 'East'.

MISO bits: 11111110
MISO data: FE
Button States: East


a_b.sr
------

Button press of button 'A' and 'B'.

MISO bits: 00111111
MISO data: 3F
Button States: A + B


b_select_west.sr
----------------

Button press of button 'B' and 'Select' and 'West'.

MISO bits: 10011101
MISO data: 9D
Button States: B + Select + West


no_button.sr
------------

Controller connected but no button pressed.

MISO bits: 11111111
MISO data: FF
Button States: No button is pressed


unconnected.sr
--------------

Gamepad not connected.

MISO bits: 00000000
MISO data: 00
Button States: Gamepad is not connected.