Skip to the content
PCBKitNew board
6 layers101.8 × 80.5 mmSN-64, the printed circuit board in 3D

Snes games on the n64 or m64

Size
101.8 × 80.5 mm
Copper layers
6
Thickness
1.2 mm
Parts
410
Nets
530
Pads
1,894
Tracks, vias
7,065, 1,453
Pours
5
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
29 Sep 2026
Updated
21 Oct 2026

Overview

SN-64 is an open-source printed circuit board by FantomZap, from the FantomZap/SN-64 repository on GitHub. It is a 6-layer board of 101.8 × 80.5 mm with 410 parts on 530 nets, routed with 7,065 tracks and 1,453 vias.

It is built around the TLV62569DBVR-TP, SN74LVC4245APWRE4 and TPS3700DDCR, with the SN74LVC1G07DBVR, SN74LVC1G06DBVR and SN74LVC1T45DBVRE4 among its other parts. Its parts include 160 capacitors, 122 resistors, 32 ICs, 9 transistors and 6 inductors. It belongs with the retro computing and games boards of this library.

Main components

8

README

hardware/sn64/README.md

SN 64 KiCad schematic draft

Open sn64.kicad_pro in KiCad 10, then open the schematic. The root (rev 0.4-r3, A2) holds both cartridge connectors and five child sheets, wired by same-name root labels (the shared net-name contract in system-integration.md):

  • page 2: the USB programmer child sheet (exports USB_VBUS, USB_3V3, USB_CC1/CC2, jtag_tck/tms/tdi/tdo, TARGET_VREF; R101/R102 DNP because the power sheet's TUSB320 presents Rd);
  • page 3: the SNES cartridge interface child sheet (rev 0.3.1-cart: 5 V/3.3 V translators, reset/IRQ/CIC paths, per-pin CIC data translators; see notes);
  • page 4: the FPGA child sheet (rev 0.5-fpga, no HDMI pins, designators 4xx: LFE5U-85F CABGA381 with all 381 balls assigned, W25Q128JVSIQ configuration flash, JTAG, SN74CB3Q3384A N64 bus switches; see notes). Its pin table also generates interfaces/fpga-pin-map.csv and fpga/constraints/sn64_board.lpf;
  • page 5: the power child sheet (designators 3xx: host/USB eFuse priority mux, TUSB320, TPS63070 5V_PRE, three TLV62569 FPGA rails, default-off cartridge eFuse and interface switch, monitors; see notes);
  • page 6: the clock/cartridge-audio child sheet (draft 0.2-av, designators 7xx: Si5351A + 25 MHz crystal, 25 MHz FPGA oscillator, PCM1808 I2S-master cartridge-audio ADC; the HDMI output of draft 0.1-av was removed on 2026-09-29; see notes).

The PDF is a review export of all six pages; the round-3 export was not visually inspected (no rasteriser available). Project-local libraries hold the symbols KiCad does not ship. It is not a complete electrical design or a manufacturing package.

The SNES socket now lives on its own small board: ../sn64-socket/ (generated by tools/split_socket_board.py; design note mechanical-architecture.md). On this main board, J2 is the 2x40 2.00 mm joint header. Check both boards with tools/verify_socket_joint.py (and --negative-test).

Board (first draft, 2026-09-29): sn64.kicad_pcb is generated by tools/build_main_pcb.py: 6 layers, 1.2 mm, PCBWay-compatible rules, the SummerCart64 lower outline extended to 70 mm above the tongue shoulders, all 410 parts imported with their 530 nets and a connectivity-pulled placement inside block zones (N64 interface at the bottom, FPGA centred with its decoupling underneath, translators under the top joint header with their resistor arrays beneath them, power/USB left, clock/audio right; small passives on the bottom side). DRC after placement (rebuilt 2026-09-29 without the HDMI parts): 0 real errors; the only reports are the USB-C receptacle pads at the board edge (by design; rule exception in sn64.kicad_dru) and the N64 fingers' shared solder-mask opening (SummerCart64 footprint).

Routing draft (2026-09-30): the tracked board now carries a first autorouted draft (notes): FPGA rotated 180° so its N64 bank faces the bus switches, 240 dog-bone fan-out vias, GND plane on In1, 3.3 V plane on In3, 1.1 V island on In4, signals routed by KiCadRoutingTools (Rust A*, run 2), 157 plane vias, outer GND pours. DRC: no shorts, crossings, clearance or hole violations. Still open: 75 signal/power nets (95 connections, mostly in the translator row) and 219 plane pads without a via (validation/pcb-open-connections.json). Tools: tools/prepare_route.py, tools/add_plane_vias.py, tools/finish_route.py, tools/fab-pcbway.txt. Rerunning build_main_pcb.py --force regenerates the placement and discards this routing. Renders: top, bottom. Nothing is routed yet; the placement is a starting point, not a reviewed layout.

What is present

ItemContents
J150-contact N64 edge, intended for both original N64 and M64
J2Full 62-contact SNES/SFC female socket, including outer contacts and analog audio
USB child sheetJ101 JAE USB-C, DNP CC resistors (the power sheet's TUSB320 presents Rd), data/CC ESD arrays, AP2112K-3.3 bridge regulator, FT232HL revision C, 12 MHz crystal, optional DNP EEPROM, SN74AXC4T774 JTAG isolation and J102 target-side service header
Symbol libraryEditable native KiCad symbols, numbered from the checked pin maps
Footprint librarySanni female-socket and SummerCart64 N64 edge references; local USB component footprints including the reused JAE receptacle geometry
Pin mapsN64, SNES and USB circuit nets
FPGA, power, A/V sheetsSee the page list above; authored by add_fpga_sheet.py, add_power_sheet.py and add_av_clock_sheet.py (deterministic, refuse to overwrite without --force), checked by verify_fpga_sheet.py, verify_power_sheet.py and verify_av_clock_sheet.py
ValidationExported netlist, ERC report, per-sheet checks (interface 31, USB 69, cartridge 20, FPGA 14, power 23, A/V 27) and the root connectivity check (4 checks over 141 contract names)

GND is the only net that directly crosses the USB/host-connector boundary. HOST_3V3, HOST_12V, SNES_5V_CART, USB_VBUS, USB_3V3 and TARGET_VREF are distinct nets. USB_VBUS also feeds the power sheet's default-off USB input (U302, enabled only when the TUSB320 U301 reports at least 1.5 A and USB_3V3 is present); TARGET_VREF comes from FPGA_3V3 through R414 on the FPGA sheet and is not a USB target-power output. The N64 edge reaches the FPGA only through the host-gated bus switches; N64_AUDIO_L/R and the reserved edge contacts stay unconnected. _N in net names denotes active low; the cartridge symbols retain the source maps' slash notation.

Connector pins deliberately have the ordinary passive connector type. The CSV and electrical notes, rather than these pin types, define endpoint direction and special handling. ERC cannot establish drive ownership, voltage tolerance or timing at these pending interfaces.

The USB bridge uses MPSSE JTAG with ACBUS6 controlling the translator's pulled-up, default-disabled /OE. The documented host command must include --status-pin 14. Its target JTAG nets now reach the ECP5's dedicated JTAG balls on the FPGA sheet (round 3); the configuration flash is loaded through the FPGA. The programming architecture records blank-EEPROM startup, power isolation, persistent-loading requirements and the remaining tests. Connector and crystal notes record the source geometry and provisional 11 pF crystal load capacitors.

Reused geometry and its limits

The SNES footprint retains all 62 pads, 2.5 mm ordinary pitch, two 7.5 mm gaps per row, 5 mm row separation, 1.524 mm pads and 0.762 mm drills. A specific purchasable socket, body dimensions and mounting details still need approval before board layout.

The N64 footprint preserves all 50 source pads, 2.5 mm pitch and 1.5 x 7 mm copper dimensions. Pads 1-25 remain on B.Cu and 26-50 on F.Cu. Its origin corresponds to source board coordinates (150,125), so pads are at local Y=6 mm. Six retained Edge.Cuts segments form the open lower connector profile, ending at local (±32.25,0) with its bottom at Y=10.5 mm. Do not duplicate these cuts when extending the board outline. The footprint does not include a complete board perimeter, mounting holes, layer stack or bevel. Those are separate controlled dimensions in the geometry record. No generic KiCad board thickness should be treated as the connector thickness.

See THIRD_PARTY.md, cartridge provenance and USB provenance for sources, modifications and retained licenses. All 24 USB footprint pad objects also match the source geometry in the footprint review. The copies of upstream footprints are reference assets, not a fit-tested SN 64 board.

Validation and reproducibility

KiCad 10.0.6 exports the six-page schematic to XML and PDF. The round-3 PDF was not visually inspected (no rasteriser on this machine); earlier two-sheet exports were. The saved ERC report contains zero errors and 10 warnings: 5 isolated_pin_label on the reserved N64 edge labels (N64_AUDIO_L/R, N64_KEY1/KEY2_RESERVED, N64_VIDEO_SYNC_RESERVED) and 5 pin_to_pin (cartridge U206 unused B4-B8 on the flagged GND). On the integrated root: verify_cart_interface.py 20/20 (negative 6/6), verify_power_sheet.py 23/23 (negative 11/11), verify_av_clock_sheet.py 30/30 (negative 12/12), verify_fpga_sheet.py 12/13 (negative 10/10; the failing check is efuse_fault_n, a 5V_PRE divider on ball K4, an open owner decision in system-integration.md), verify_root_connectivity.py 4/4 (negative 4/4). The schematic is incomplete and is not an ERC-clean release. Rerun checks as circuitry changes.

The independent validation script checks the exported connector pin/net assignments against the separately researched maps, rejects accidental cross-domain connections, and compares both footprints against the original downloaded sources. The corresponding result and review record the result and remaining limitations.

The saved reports record 30 cartridge-interface checks passed and 69 USB checks passed, with zero failed checks (the USB set now also checks the DNP CC resistors and the CC/VBUS/USB_3V3/JTAG/TARGET_VREF exports). The USB validator independently exports the schematic and compares it with fixed manufacturer pin tables, checking all USB component pins, rail separation, CC/data/ESD connections, bridge support, JTAG directions and disabled startup. See its result and review. These are static checks; no USB enumeration, clock measurement, suspend-current measurement, programming, cold boot, electrical protection or compatibility test has been performed on SN 64 hardware.

To regenerate review files after editing, run these from this directory with KiCad's CLI on PATH:

powershell
kicad-cli sch export netlist --format kicadxml -o validation/sn64.xml sn64.kicad_sch
kicad-cli sch export pdf -o exports/sn64-interface-draft.pdf sn64.kicad_sch
kicad-cli sch erc --format json --output validation/erc.json --exit-code-violations sn64.kicad_sch

The per-sheet and root checks, from the repository root with KiCad's Python (each also takes --negative-test, except the interface and USB validators):

powershell
$py = 'C:\Program Files\KiCad\10.0\bin\python.exe'; $cli = 'C:\Program Files\KiCad\10.0\bin\kicad-cli.exe'
& $py hardware/sn64/tools/verify_interfaces.py --source-root . --kicad-cli $cli
& $py hardware/sn64/tools/verify_usb_programmer.py --kicad-cli $cli
& $py hardware/sn64/tools/verify_cart_interface.py --kicad-cli $cli
& $py hardware/sn64/tools/verify_fpga_sheet.py --kicad-cli $cli --lattice-csv <ECP5U-85 pinout CSV> --datasheets <dir>
& $py hardware/sn64/tools/verify_power_sheet.py --kicad-cli $cli
& $py hardware/sn64/tools/verify_av_clock_sheet.py --project hardware/sn64 --kicad-cli $cli
& $py hardware/sn64/tools/verify_root_connectivity.py --kicad-cli $cli

The initial authoring script, create_interface_draft.py, uses KiCad's Python and downloaded upstream sources. It refuses to replace an existing schematic unless explicitly passed --force. Once circuit editing begins, edit the native KiCad files; do not regenerate the initial sheet over the circuit work.

add_usb_programmer.py records how the initial USB sheet was authored from the reference designs and installed KiCad libraries. It also refuses to replace its sheet without --force; use native KiCad editing for subsequent development. Regeneration requires --source-root <original-project-with-downloads> and --kicad-share <KiCad-share-directory>, and intentionally replaces the entire USB child sheet when forced.

Remaining integration

Required in the first revision: a side-mounted USB-C data/programming port and matching enclosure opening, supporting initial firmware/FPGA loading, updates and recovery without successful host-console boot. The bridge and service-access circuit now exists; the complete programming path remains pending target integration and testing. Final side-port placement, cable access and shell clearances remain mechanical work.

  1. Build the power budget for the FPGA, memory, digital A/V and real cartridges on both hosts. The M64 reference annotates a 500 mA cartridge limiter; that is not a guaranteed SN 64 allowance. There is no 5 V N64 edge supply. Select input power, no-backfeed paths and default-off protected cartridge power from the actual budget.
  2. Adapt the sd2snes translator circuit using the reuse review. Reverse address/strobe ownership for a console endpoint; define enable, read/write turnaround and power-off behavior for the exact part. Separately implement IRQ/reset, CIC, expansion and analog audio.
  3. Integrate the reusable SNES FPGA core, physical cartridge bridge and N64 endpoint. Select FPGA/package and memory only after resource, I/O, clock and timing evidence. Connect the USB programmer to the selected target and persistent configuration storage, define programming power/boot straps and package the loading/recovery software. Add health monitoring and A/V, then review the complete schematic.
  4. Place and route a PCB with the verified mechanical constraints; develop the FreeCAD enclosure around that assembly. Produce PCBWay files after electrical review and prototype/fit validation.

These are stages of the full specification. PAL, protection, save integrity, telemetry, factory testing and all remaining specification targets are retained. Video and audio go to the console over the cartridge bus (console video path); the adapter has no output of its own. No PCB layout, FPGA bitstream, working adapter, print-ready shell or PCBWay manufacturing release is included in this revision.

Parts

410
QtyValueFootprintReferences
59100nFC_0603_1608MetricC104, C105, C106, C107, C108, C109, C110, C111, C112, C113, C114, C201, C202, C203, C204, C205 +43
48100nF 16V X7RC_0402_1005MetricC401, C402, C403, C404, C405, C406, C407, C408, C409, C410, C411, C412, C413, C414, C415, C416 +32
2410kR_0603_1608MetricR105, R107, R112, R113, R114, R209, R210, R211, R212, R213, R216, R217, R220, R221, R329, R360 +8
14100kR_0603_1608MetricR205, R218, R219, R302, R303, R304, R305, R306, R322, R323, R324, R325, R327, R333
1333 (4x0603, tune)R_Array_Convex_4x0603RN201, RN202, RN203, RN204, RN205, RN206, RN207, RN208, RN209, RN210, RN211, RN212, RN213
1222uF 10VC_0805_2012MetricC316, C317, C318, C320, C321, C322, C324, C325, C326, C328, C329, C330
1110uF 10V X5RC_0603_1608MetricC421, C422, C423, C428, C431, C434, C438, C442, C446, C450, C453
94.7kR_0402_1005MetricR401, R402, R403, R404, R407, R410, R411, R412, R413
8BSS138BKSOT-23Q301, Q302, Q303, Q304, Q305, Q306, Q307, Q308
7100k 1%R_0603_1608MetricR308, R310, R313, R315, R318, R320, R365
74.7kR_0603_1608MetricR206, R207, R208, R701, R702, R712, R715
7SN74LVC4245APWRTSSOP-24_4.4x7.8mm_P0.65mmU201, U202, U203, U204, U205, U206, U207
633R_0603_1608MetricR108, R109, R110, R111, R214, R215
6MountingHole_2.5mmMountingHole_2.5mmH1, H2, H3, H4, H5, H6
6TPS3700DDCRSOT-23-6U310, U311, U312, U313, U314, U315
40RR_0603_1608MetricR703, R704, R706, R707
410kR_0402_1005MetricR408, R409, R416, R418
41kR_0603_1608MetricR203, R204, R326, R340
4SN74LVC1G07DBVRSOT-23-5U210, U211, U212, U407
31.2nFC_0603_1608MetricC303, C306, C309
310uFC_0805_2012MetricC716, C718, C720
31uF 25VC_0805_2012MetricC304, C307, C310
32.2kR_0603_1608MetricR106, R201, R202
32.2uH FNR4030S2R2MTL_Changjiang_FNR4030SL302, L303, L304
36.8pF C0GC_0603_1608MetricC319, C323, C327
3SN74CB3Q3384APWRTSSOP-24_4.4x7.8mm_P0.65mmU402, U403, U404
3TLV62569DBVRSOT-23-5U305, U306, U307
3TPS259470LRPWRTexas_RPW0010A_VQFN-HR-10_2x2mmU302, U303, U309
21.5nF 25VC_0603_1608MetricC302, C305
210uF 10VC_0805_2012MetricC232, C233
210uF 25VC_0805_2012MetricC312, C313
211pF C0G (tune)C_0603_1608MetricC115, C116
21kR_0402_1005MetricR406, R419
21nF C0GC_0603_1608MetricC722, C724
21uF 10VC_0603_1608MetricC102, C332
21uF 25V X7RC_0805_2012MetricC723, C725
2200R_0603_1608MetricR711, R714
222uF 25VC_1206_3216MetricC314, C315
2232k 0.1%R_0603_1608MetricR331, R357
24.7uF 10VC_0603_1608MetricC101, C103
244.2k 0.1%R_0603_1608MetricR332, R356
2470R @ 100MHzL_0603_1608MetricL101, L102
25.1kR_0603_1608MetricR713, R716
25.1k 1%R_0603_1608MetricR101, R102
2SN74LVC1G06DBVRSOT-23-5U213, U214
2SN74LVC1T45DBVRSOT-23-6U215, U216
2USBLC6-2SC6SOT-23-6U101, U102
10R_0402_1005MetricR414
11.5uH PNR4020-1R5ML_APV_PNR4020L301
1100R_0603_1608MetricR341
1100kR_0402_1005MetricR415
1100k 0.1%R_0603_1608MetricR334
1102k 0.1%R_0603_1608MetricR339
1114k 0.1%R_0603_1608MetricR337
1115k 0.1%R_0603_1608MetricR345
112.288MHz CJO05-122883320B30Oscillator_SMD_Abracon_ASE-4Pin_3.2x2.5mmX702
1120k 0.1%R_0603_1608MetricR335
112kR_0603_1608MetricR104
112k 1%R_0603_1608MetricR103
1150k 1%R_0603_1608MetricR312
12.37k 0.1%R_0603_1608MetricR352
12.55k 1%R_0603_1608MetricR311
1215k 1%R_0603_1608MetricR314
125MHz 10pFCrystal_SMD_3225-4Pin_3.2x2.5mmY701
125MHz CJO05-250003320B30Oscillator_SMD_Abracon_ASE-4Pin_3.2x2.5mmX701
1267k 1%R_0603_1608MetricR307
1277k 0.1%R_0603_1608MetricR351
1287k 0.1%R_0603_1608MetricR348
1287k 1%R_0603_1608MetricR317
12N7002SOT-23Q201
13.16k 0.1%R_0603_1608MetricR349
13.32k 1%R_0603_1608MetricR321
13.74k 0.1%R_0603_1608MetricR346
13.79k 0.1%R_0603_1608MetricR355
130.1k 0.1%R_0603_1608MetricR359
133R_0402_1005MetricR405
133.6k 0.1%R_0603_1608MetricR344
133kR_0402_1005MetricR417
1357k 1%R_0603_1608MetricR319
1361k 0.1%R_0603_1608MetricR336

The 351 most common of 410 parts.

Questions

How big is the SN-64 PCB?

It measures 101.8 × 80.5 mm and has 6 copper layers, 1.2 mm thick.

What parts does the SN-64 use?

410 parts, built around the TLV62569DBVR-TP, SN74LVC4245APWRE4, TPS3700DDCR and SN74LVC1G07DBVR. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the SN-64 KiCad files?

From the FantomZap/SN-64 repository on GitHub, at the commit this page was made from: the board is hardware/sn64/sn64.kicad_pcb and its schematic hardware/sn64-socket/sn64-socket.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the SN-64 design in my own project?

Its repository states no licence, so its author keeps all rights: ask FantomZap before reusing the design.

Similar boards

  • 6 layers450 × 235 mmBaseline, the printed circuit board in 3D

    Baseline

    DeadlySIn777/Controller

    Unfinished CNC controller motherboard: native KiCad sources, rules, DSN and global routing review

    2,723 parts
  • 4 layers140 × 120 mmPianoMatrice, the printed circuit board in 3D

    PianoMatrice

    manvalan/MuonScope

    Piano di rivelazione MuonScope con 16 fotodiodi VBPW34S in matrice 4×4 a passo 10 mm, per il bus MIKILAB REV5.1.

    490 parts
  • 4 layers154 × 81 mmSystem candidate, the printed circuit board in 3D

    System candidate

    bernardopg/ps28-modern-amp

    Infinity Primus PS28 amplifier modernization: TPA3255 engineering, validation and safety-gated workflow

    269 parts1
  • 4 layers175 × 185 mmPower, the printed circuit board in 3D

    Power

    pratham-cloud-ctrl/Project-SCCI-RH

    A digital spinal cord-computer interface concept: research, eight KiCad boards, nRF5340 firmware and FreeCAD assemblies.

    160 parts
  • 4 layers159.6 × 161 mmShack interface, the printed circuit board in 3D

    Shack interface

    PE1RGU/hf-antenna-switch

    Remote HF antenna switch: 3 radios x 4 antennas (path to 8), outdoor relay unit with a hardware safety chain, controlled over Cat6 from a shack interface. KiCad 10, open hardware, designed together with an AI.

    290 parts2CERN-OHL-S-2.0
  • 4 layers32 × 49 mmDaFO, the printed circuit board in 3D

    DaFO

    ywhs05/DigitalToFiberOpticConverter-PCB

    Circuito que recibe señales digitales y las convierte a fibra óptica.

    32 partsMIT
  • 6 layers149 × 39 mmNegative startup physical, the printed circuit board in 3D

    Negative startup physical

    AxelMcKenna/AFX-1000

    RMX-1000-inspired effects processor for macOS, AU and VST3, built on a shared C++20 engine. Standalone Daisy Seed 3 hardware with two main PCBs and a custom housing is in development.

    267 parts1
  • 4 layers95 × 58 mmEsp32Tap, the printed circuit board in 3D

    Esp32Tap

    scottmsilver/treddy

    Controlling my procor-9.3x treadmill

    94 parts2