The bench cheat sheet

Printable: NES controller-port bridge, v1b: drawing package TM-NESB-001 rev P (PDF); v1b as built, the checks called out on the photograph (PNG).

Generated by tools/cheatsheet.py. The pin numbers and signals are read out of the schematic, the harness colours out of the lab log, the breakout leads out of the bring-up tool's own table, and each chip's wiring out of the netlist. The only authored text is what each pin does on the part, which is the datasheet's, kept in one place in that tool and refused if the schematic names a pin differently. The same rows are sheets of the drawing package (tools/make-package.py). The head's hands (the Pi's jumpers, the PC817 and the relay) have their own: cheat-sheet-head.md.

Sheet: bench-v1b.

The controller port: pin, NES harness, breakout

Pin numbers are the ones moulded into this console's port housing and the signals are the schematic's, MEASURED 2026-09-09 (the supply is on 5, not 7). Harness colours from the lab log, step 1.1 (2026-09-08). Breakout leads rung out 2026-09-09 with the cable out of the console; the pad half of the cut carries the same five colours. Use the lead, not the colour rule.

pinsignalNES harnessbreakout leadon the bridge
1GNDbrownyellowthe GND rail
2CLKredblueR2-1, A1 D2 (INT0)
3OUT0orangeblackU1-1, A1 D5 (T1)
4D0yellowgreenU2-9
5+5Vwhiterednot used: the bridge runs from the UNO's 5 V
6n/cbluenot carried
7n/cpurplenot carried

The power and reset breakout

Five ways straight through, colour for colour with the front panel's harness (docs/lab/06-breakout-map-power-reset.jpg), metered 2026-09-17. No way is ground: the front panel is grounded by its pad and housing.

pinNES harnessbreakout leadwhat it is
1brownbrownpower switch
2redredpower switch
3orangeorangereset, + side (4.40 V)
4yellowyellowreset, - side, and LED
5whitewhiteLED

The head's four jumpers

Four Dupont leads off the Pi's header, no breakout (2026-09-10). Header positions are the Pi's own numbering. No wire from here to the console: the Pi's ground reaches it through the UNO's USB cable only.

Pi pinpos.torole
GPIO1711PC817 module INPUT +reset, 100 ms high
GPIO2713relay module INpower: high is on
5V2relay module VCCthe coil's supply
GND6PC817 IN-, relay GNDthe one ground lent

The UNO ribbon

Nine Dupont wires from the UNO's digital header, colour per pin as read off the header (2026-09-11). The net and the far end come from the schematic.

UNO pincolournetto
D2blueCON_CLKJ1-2, R2-1
D3greenTRIGR1-1
D5yellowCON_OUT0J1-3, U1-1
D6orangePAD_LATCHJ2-3
D7redPAD_CLKJ2-2
D8brownPAD_D0J2-4
D10blackRCLKU3-12
D11whiteMOSIU3-14
D13greySCKU3-11

The scope: channels and the trigger

As wired 2026-09-15, each probe's landing given as a board column so it can be put back. Probe grounds on the right board's GND rail, which is the console's ground; probes on 10x. The DS1054Z has no external trigger input (MEASURED 2026-09-15), so the bridge's TRIG takes CH1, the channel held for the master clock until the mainboard is probed. Step 6.1 of the bring-up arms the scope on CH1 and fires TRIG at a latch.

inputsignalprobe onwhy
CH1TRIGR1 on the middle board: the resistor in row a from column 9 (the green D3 lead's housing) to column 6 (the red lead to the scope)the trigger: 2.5 V rising at latch T, 5.4 V for 874 us (MEASURED 2026-09-15); the master clock's channel later, by turns
CH2CON_OUT0 (latch)U1 pin 1: right board column 34, the side toward U2 (rows f to j)one pulse per poll, 3.6 us wide, 60.06 a second; a new lead 2026-09-15 evening
CH3composite videothe console's video out, through the splitterthe picture the poll lands in
CH4CON_D0U2 pin 9: right board column 18, the rails side (rows a to e)the byte the console reads back, pressed LOW: high through the eight bits for 00, low for ff (MEASURED 2026-09-15 23:00, which is how the two probes were told apart)
EXT TRIGnonenot on this scopethe DS1054Z has no external trigger input (MEASURED 2026-09-15: source EXT refused; the rear BNC is Trig Out)

U1: 74HCT04 at +5V

Hex inverter, six independent gates. HCT inputs switch at TTL levels (high from 2.0 V), which is why it sits on the console's NMOS OUT0 line: OUT0 high loads the register, so its inversion is the 165's active-low load. One gate is used. The other five inputs are CMOS and must not float: tie each spare A input to GND and leave its Y open.

pinnameon the parton this bench
11Agate 1 inputCON_OUT0: J1-3, A1 D5 (T1)
21Ygate 1 output, the inverse of 1A/PL: U2-1
32Agate 2 inputthe GND rail
42Ygate 2 outputno connection
53Agate 3 inputthe GND rail
63Ygate 3 outputno connection
7GNDgroundthe GND rail
84Ygate 4 outputno connection
94Agate 4 inputthe GND rail
105Ygate 5 outputno connection
115Agate 5 inputthe GND rail
126Ygate 6 outputno connection
136Agate 6 inputthe GND rail
14VCCsupply, 4.5 to 5.5 V; 100 nF to GND at the pinthe +5V rail

U2: 74HC165 at +5V (the TI bag)

8-bit parallel-in, serial-out shift register: the pad's 4021 in a 74 package. While /PL is low the eight inputs A to H are copied into the stages as they are (it is transparent, so the byte must be settled before the load). With /PL high, each rising edge of CP shifts one place toward QH and pulls DS in at A. QH shows stage H, so H is the first bit out and A the eighth, which is why the pad's order A, B, Select, Start, Up, Down, Left, Right is wired H down to A. /CE high holds the clock off.

pinnameon the parton this bench
1/PLparallel load, active low: inputs copied in while low/PL: U1-2
2CPshift clock, rising edge, when /CE is lowCP: R2-2, C4-1
3Eparallel input E, the fourth bit outQ_START: U3-3
4Fparallel input F, the third bit outQ_SEL: U3-2
5Gparallel input G, the second bit outQ_B: U3-1
6Hparallel input H, the first bit out (QH after a load)Q_A: U3-15
7/QHinverted serial outputno connection
8GNDgroundthe GND rail
9QHserial output: stage HCON_D0: J1-4
10DSserial in: shifts into A after the eighth clockthe GND rail
11Aparallel input A, the eighth bit outQ_RIGHT: U3-7
12Bparallel input B, the seventh bit outQ_LEFT: U3-6
13Cparallel input C, the sixth bit outQ_DOWN: U3-5
14Dparallel input D, the fifth bit outQ_UP: U3-4
15/CEclock enable, active low: high inhibits CPthe GND rail
16VCCsupply, 2 to 6 V; 100 nF to GND at the pinthe +5V rail

U3: 74HC595 at +5V

8-bit serial-in, parallel-out shift register with an output latch. Each rising edge of SRCLK shifts SER in at QA's stage; the stages are invisible until a rising edge of RCLK copies all eight into the output latch at once, which is what makes a byte atomic to the console: the 165 never sees a half-written byte. /OE low turns the outputs on; /SRCLR low clears the shift stages (not the latch). QH' is the eighth stage, for chaining a second 595.

pinnameon the parton this bench
1QBlatched output BQ_B: U2-5
2QClatched output CQ_SEL: U2-4
3QDlatched output DQ_START: U2-3
4QElatched output EQ_UP: U2-14
5QFlatched output FQ_DOWN: U2-13
6QGlatched output GQ_LEFT: U2-12
7QHlatched output HQ_RIGHT: U2-11
8GNDgroundthe GND rail
9QH'stage H unlatched: serial out for a chained 595no connection
10/SRCLRshift register clear, active low: tie high to runthe +5V rail
11SRCLKshift clock, rising edge: SER into A, A into B, and onSCK: A1 D13 SCK
12RCLKlatch clock, rising edge: all eight stages to the outputsRCLK: A1 D10
13/OEoutput enable, active low: low drives QA to QHthe GND rail
14SERserial data in, sampled on SRCLK's rising edgeMOSI: A1 D11 MOSI
15QAlatched output AQ_A: U2-6
16VCCsupply, 2 to 6 V; 100 nF to GND at the pinthe +5V rail

Pulled at build time from nes-bench/docs/cheat-sheet.md; the repository is the one copy. The reports use some working words of their own: Words the reports use.