The bench's parts list

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); NES controller-port bridge, v2b: drawing package TM-NESB-002 rev A (PDF).

Generated by tools/parts.py from tools/draw-schematics.py, which is the same file that draws the schematics. Nothing here is typed except the status column: a drawing cannot know what is in a drawer.

The console, the Pi, the scope, the relay contacts and the port connectors are drawn on the sheets with conn=True, which marks a thing the bench CONNECTS TO rather than a part to buy, and this list skips them for that reason. So everything below is something that has to exist in a drawer before a sheet can be built.

What to gather

Every distinct part across every sheet, with where it is.

partstatusnote
74HCT04on handSN74HCT04N, the tube that arrived 2026-09-09
74HC165on handthe TI bag. v2b needs a second one
100nFon handv2b runs seven
1kon handR2, the clock pin's series element, placed 2026-09-15
100pFon handC4, the clock pin's filter, placed 2026-09-15
Arduino UNO R3 (ATmega328P)on handthe pile
74HC595on handthe box of 30
100Ron handthe trigger
PC817 moduleon handmodule, for the reset pads
relay module, 5 V coilon hand5 V coil with an opto input
LM1881NTO ORDERthe one real order. An old National part, mostly resellers now: buy two
680kcheckLM1881 RSET. One resistor
74HCT165on handthe C6 sheets' register. HCT there because the C6 drives it at 3.3 V
74LVC245on handC6 sheets only; no UNO sheet uses one any more
ESP32-C6-DevKitC-1 v1.2on handDevKitC-1 v1.2, the alternative build
10kon handpad adapter only; fitted on the P4 build 2026-09-27. The first part fitted there was 10 ohms: read the bands
TP4056 + protectionto orderpad adapter only
MCP1700-3302 LDOto orderpad adapter only
slideto orderpad adapter only, the power switch
powerto orderpad adapter only, the battery
+330Rcheckpad adapter only, the LED
ESP32-WROOM-32 devkiton handthe 30-pin devkit on the breadboard, the BLE build since 2026-09-30

bench-v1b

Build this first. The UNO bridge, one port, everything at 5 V.

refparton the sheet
U174HCT04 at +5V2.0 V threshold: safe on NMOS OUT0
U274HC165 at +5V (the TI bag)H shifts out first
C1100nF+5V to GND
C2100nF+5V to GND
C3100nF+5V to GND
R21kCON_CLK to CP
C4100pFCP to GND
A1Arduino UNO R3 (ATmega328P)5 V logic, 16 MHz
U374HC595 at +5Vone RCLK edge = one byte
R1100RTRIG to EXT_TRIG

bench-v1b-head

v1b sheet 3: the head's hands, reset and power from the Pi (bring-up 6.2 and 6.3).

refparton the sheet
OK1PC817 moduleopen collector across the reset button
K1relay module, 5 V coilMEASURED: GPIO27 high powers the console

bench-v2b

Build this second. Two ports on one SPI chain, sync counted, still one UNO.

refparton the sheet
U174HCT04 at +5V4 spare inputs to GND
U274HC165 at +5VH shifts out first
U674HC165 at +5VH shifts out first
C1100nF+5V to GND
C2100nF+5V to GND
C3100nF+5V to GND
C4100nF+5V to GND
C5100nF+5V to GND
C6100nF+5V to GND
A1Arduino UNO R3 (ATmega328P)serial 115200 to the Pi
U574HC595 at +5Vport 1's byte, shifted in second
U774HC595 at +5Vport 2's byte, chained from U5
U8LM1881N at +5V5 V outputs: no 245 needed
C7100nFVIDEO to VID_AC
R2680kRSET to GND
C8100nFRSET to GND
R1100RTRIG to EXT_TRIG

bench-v1

The ESP32-C6 alternative to v1b. Not the build.

refparton the sheet
U174HCT04 at +5V5 spare inputs to GND
U274HCT165 at +5VH shifts out first
C1100nF+5V to GND
C2100nF+5V to GND
U374LVC245 at 3V35V tolerant inputs, A to B
C3100nF3V3 to GND
U4ESP32-C6-DevKitC-1 v1.2RISC-V, BLE 5, Wi-Fi 6
R1100RTRIG to EXT_TRIG
OK1PC817 moduleopen collector across reset
K1relay module, 5 V coilopto in, active low

bench-v2

The C6 alternative to v2b. Not the build.

refparton the sheet
U174HCT04 at +5V4 spare inputs to GND
U274HCT165 at +5VH shifts out first
U674HCT165 at +5VH shifts out first
U574HC595 at 3V3port 1 byte
U774HC595 at 3V3port 2 byte, chained
C1100nF+5V to GND
C2100nF+5V to GND
C3100nF3V3 to GND
C4100nF3V3 to GND
U8LM1881N at +5Vcomposite sync out
C6100nFVIDEO to VID_AC
R2680kRSET to GND
C7100nFRSET to GND
U374LVC245 at 3V3six lines down to 3V3
U4ESP32-C6-DevKitC-1 v1.2RISC-V, BLE 5, Wi-Fi 6
R1100RTRIG to EXT_TRIG

pad-adapter

The original pad as a wireless HID device. A separate project.

refparton the sheet
R110kPAD1_D0 to 3V3
R210kPAD2_D0 to 3V3
U1ESP32-C6-DevKitC-1 v1.2NimBLE HID; no USB device
U2TP4056 + protectionLiPo charger module
U3MCP1700-3302 LDOor the devkit's own 3V3 from VBUS
SW1slideMODE_SW to GND
SW2powerVBAT to VBAT_SW
LED1+330RLED to GND

pad-ble

The C6 design, superseded. One pad, one pullup, the C6 on USB power; the board never accepted a flash, see pad-ble-p4.

refparton the sheet
R110kPAD1_D0 to 3V3
U1ESP32-C6-DevKitC-1 v1.2NimBLE HID keyboard; no USB device controller
C1100nF3V3 to GND

pad-ble-p4

The one to build. The same circuit on the board that actually flashes: a Waveshare ESP32-P4-Module-DEV-KIT, wired at header P6.

refparton the sheet
R110kPAD1_D0 to 3V3
C1100nF3V3 to GND

pad-ble-esp32

The BLE build, on the board with a radio of its own. The same circuit on a classic ESP32-WROOM-32 devkit, pins D25, D26 and D27; the C6 died and the P4 cannot do BLE.

refparton the sheet
R110kPAD1_D0 to 3V3
U1ESP32-WROOM-32 devkit30 pins; the labels are the board's own silkscreen; D is GPIO
C1100nF3V3 to GND

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