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