Skip to the content
PCBKitNew board
2 layers102 × 81.5 mmC64pico, the printed circuit board in 3D

This is a tiny emulated C64 running on a Raspberry Pi Pico! Full details of the build can be found at https://www.youtube.com/watch?v=hgLhGpbC6E4

Size
102 × 81.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
97
Nets
78
Pads
485
Tracks, vias
1,072, 148
Pours
2
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
8 May 2022
Updated
8 Nov 2022

Overview

C64pico is an open-source printed circuit board by silvervest, from the silvervest/c64pico repository on GitHub. It is a 2-layer board of 102 × 81.5 mm with 97 parts on 78 nets, routed with 1,072 tracks and 148 vias.

It is built around the ATMEGA328PB-AU, BQ24230RGTT and 1N5819WS, with the 3X6, CF4240FH0R0-05-NH and CPT-9019S-SMT-TR among its other parts. Its parts include 66 switches, 8 resistors, 3 capacitors, 2 ICs and 2 diodes. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

6

README

README.md

C64 Pico

This is a tiny emulated C64 running on a Raspberry Pi Pico! Full details of the build can be found at https://www.youtube.com/watch?v=hgLhGpbC6E4

It was designed to dangle around my neck from a lanyard while I was wandering the halls and sections of PAX Aus 2022. It measures 102x81x16mm!

Building

Wanna build one yourself? I go over the full build steps of this in the video linked above!

BOM

I've put together an interactive BOM that you can reference - simply checkout the repo and open ibom.html in your browser.

Most of the parts can be figured out from the BOM or schematic, or are generic enough to just pick whatever fits (like all the caps and resistors), but some are pretty specific - here's a few purchasing links from the various sellers I used during this build;

PCBs

I designed the board to be fabricated specifically at JLCPCB with their SMT assembly service, so it should be pretty straightforward to get those made up.

Follow JLCPCB's guide on generating their bom and pos files from Kicad, and the components that can be placed by their SMT assembly service already have the correct and matching LCSC part number associated. Only the back layer needs assembly.

Programming

The software provided for both the keyboard and MCUME modifications are not what I'd call "production-ready" either, and are really just a hack job. I might clean them up to be merged back one day, but probably not.

The keyboard code is in this repo underneath the keyboard directory, and can be programmed directly onto the ATmega328PB via ICSP headers using the Arduino software.

The RPi Pico code can be found in my fork of the MCUME repo under branch c64pico and you can follow the main instructions for building, installation and use.

Face and back plates

The faceplate is just a plain PCB, and the PCB design files can be provided to your fab like any other. I recommend getting it HASL gold covered for extra shiny.

The backplate was designed to be laser cut from 1.5mm-2mm acrylic. I had mine created by The Laser Cut Shop and the team there were excellent. I used the plotting function in KiCad to export DXF files for them to use.

Instructions

Once it's complete, pop your SD card with .PRG files available into the slot and switch it on.

Pick whatever program you'd like to open and press the FIRE joystick button "pew pew". By default, the built-in joystick is "plugged" into JOY1 port, and you can switch that between JOY1/JOY2 using F1/F3 keys. Most C64 games use JOY2, so you might need to experiment.

At the BASIC prompt, type LOAD and press RETURN. That will load the .PRG file contents into RAM. Once READY, type RUN and press RETURN.

Enjoy! It's a bit slow, and some games are buggy as hell. I love playing Nebulus and Choplifter :)

Development Photos

An early design, showing the overengineered reimplementation of the RP2040 Pico circuit and power management. It worked, but I didn't like it, so threw most of it out. You can also see I added full diodes into the keyboard for the hell of it.

Early Design

This was when I was writing the Arduino code for the keyboard and I2C protocol, and a test program running on the Pico decoding it and showing the output.

Testing the keyboard

Finally fully working, so I booted up my favourite C64 game - Nebulus! The screen and battery were still held on with washi tape here.

Nebulus crack screen

Also Burnin' Rubber because that game is awesome and runs at almost full speed with no bugs that I could find!

Burnin' Rubber

And of course, I've gotta run the classic 10print maze

10print maze

Acknowledgements

  • MCUME

    The base emulator at the guts of this, and was modified for my purposes.

  • PICOmputer

    Heavy inspiration taken from this project (and I stole the UDLR joystick layout)

License

CERN OHL v2 Strongly Reciprocal

Parts

97
QtyValueFootprintReferences
410kResistor_SMD:R_0402_1005MetricR2, R5, R11, R12
4MountingHole_PadMountingHole:MountingHole_2.2mm_M2_PadH1, H2, H3, H4
21k5Resistor_SMD:R_0402_1005MetricR3, R4
21uFCapacitor_SMD:C_0402_1005MetricC1, C2
10x0Silvestron Components:SW_SPST_PTS647SW1
10x1Silvestron Components:SW_SPST_PTS647SW9
10x2Silvestron Components:SW_SPST_PTS647SW17
10x3Silvestron Components:SW_SPST_PTS647SW25
10x4Silvestron Components:SW_SPST_PTS647SW33
10x5Silvestron Components:SW_SPST_PTS647SW41
10x6Silvestron Components:SW_SPST_PTS647SW49
10x7Silvestron Components:SW_SPST_PTS647SW57
110Resistor_SMD:R_0402_1005MetricR10
1100nCapacitor_SMD:C_0402_1005MetricC3
11N5819WSDiode_SMD:D_SOD-323D3
11x0Silvestron Components:SW_SPST_PTS647SW2
11x1Silvestron Components:SW_SPST_PTS647SW10
11x2Silvestron Components:SW_SPST_PTS647SW18
11x3Silvestron Components:SW_SPST_PTS647SW26
11x4Silvestron Components:SW_SPST_PTS647SW34
11x5Silvestron Components:SW_SPST_PTS647SW42
11x6Silvestron Components:SW_SPST_PTS647SW50
11x7Silvestron Components:SW_SPST_PTS647SW58
12x0Silvestron Components:SW_SPST_PTS647SW3
12x1Silvestron Components:SW_SPST_PTS647SW11
12x2Silvestron Components:SW_SPST_PTS647SW19
12x3Silvestron Components:SW_SPST_PTS647SW27
12x4Silvestron Components:SW_SPST_PTS647SW35
12x5Silvestron Components:SW_SPST_PTS647SW43
12x6Silvestron Components:SW_SPST_PTS647SW51
12x7Silvestron Components:SW_SPST_PTS647SW59
13k6Resistor_SMD:R_0603_1608MetricR1
13x0Silvestron Components:SW_SPST_PTS647SW4
13x1Silvestron Components:SW_SPST_PTS647SW12
13x2Silvestron Components:SW_SPST_PTS647SW20
13x3Silvestron Components:SW_SPST_PTS647SW28
13x4Silvestron Components:SW_SPST_PTS647SW36
13x5Silvestron Components:SW_SPST_PTS647SW44
13x6Silvestron Components:SW_SPST_PTS647SW52
13x7Silvestron Components:SW_SPST_PTS647SW60
14x0Silvestron Components:SW_SPST_PTS647SW5
14x1Silvestron Components:SW_SPST_PTS647SW13
14x2Silvestron Components:SW_SPST_PTS647SW21
14x3Silvestron Components:SW_SPST_PTS647SW29
14x4Silvestron Components:SW_SPST_PTS647SW37
14x5Silvestron Components:SW_SPST_PTS647SW45
14x6Silvestron Components:SW_SPST_PTS647SW53
14x7Silvestron Components:SW_SPST_PTS647SW61
15x0Silvestron Components:SW_SPST_PTS647SW6
15x1Silvestron Components:SW_SPST_PTS647SW14
15x2Silvestron Components:SW_SPST_PTS647SW22
15x3Silvestron Components:SW_SPST_PTS647SW30
15x4Silvestron Components:SW_SPST_PTS647SW38
15x5Silvestron Components:SW_SPST_PTS647SW46
15x6Silvestron Components:SW_SPST_PTS647SW54
15x7Silvestron Components:SW_SPST_PTS647SW62
16x0Silvestron Components:SW_SPST_PTS647SW7
16x1Silvestron Components:SW_SPST_PTS647SW15
16x2Silvestron Components:SW_SPST_PTS647SW23
16x3Silvestron Components:SW_SPST_PTS647SW31
16x4Silvestron Components:SW_SPST_PTS647SW39
16x5Silvestron Components:SW_SPST_PTS647SW47
16x6Silvestron Components:SW_SPST_PTS647SW55
16x7Silvestron Components:SW_SPST_PTS647SW63
17x0Silvestron Components:SW_SPST_PTS647SW8
17x1Silvestron Components:SW_SPST_PTS647SW16
17x2Silvestron Components:SW_SPST_PTS647SW24
17x3Silvestron Components:SW_SPST_PTS647SW32
17x4Silvestron Components:SW_SPST_PTS647SW40
17x5Silvestron Components:SW_SPST_PTS647SW48
17x6Silvestron Components:SW_SPST_PTS647SW56
17x7Silvestron Components:SW_SPST_PTS647SW64
1ATmega328PB-APackage_QFP:TQFP-32_7x7mm_P0.8mmU1
1BQ24230RGTTPackage_DFN_QFN:VQFN-16-1EP_3x3mm_P0.5mm_EP1.68x1.68mm_ThermalViasU2
1CF4240FH0R0-05-NHSilvestron Components:ILI9341J5
1CPT-9019S-SMTBuzzer_Beeper:Buzzer_CUI_CPT-9019S-SMTLS1
1DOWNSilvestron Components:SW_SPST_PTS647SW67
1FIRESilvestron Components:SW_SPST_PTS647SW70
1GREENLED_SMD:LED_0603_1608MetricD2
1ICSPConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ3

The 88 most common of 97 parts.

Questions

How big is the C64pico PCB?

It measures 102 × 81.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the C64pico use?

97 parts, built around the ATMEGA328PB-AU, BQ24230RGTT, 1N5819WS and 3X6. 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 C64pico KiCad files?

From the silvervest/c64pico repository on GitHub, at the commit this page was made from: the board is c64pico.kicad_pcb and its schematic c64pico.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the C64pico design in my own project?

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

Similar boards

  • 4 layers77.1 × 63.8 mmPauline, the printed circuit board in 3D

    Pauline

    jfdelnero/Pauline

    Pauline Floppy disk dumper and Floppy drive emulator

    160 parts25
  • 2 layers48 × 65.5 mmOpen telegraph, the printed circuit board in 3D

    Open telegraph

    animesh-chouhan/open-telegraph

    A pocket-size Morse key. One button, one RGB LED, an ESP32-S3, and a battery. Plug it in over USB-C or pair it over Bluetooth and it types Morse into any device as a standard keyboard. Fully open, down to the copper.

    52 parts5CERN-OHL-S-2.0
  • 4 layers150 × 137.1 mmController, the printed circuit board in 3D

    Controller

    CircuitGuy943/Sabre-Integrated-flight-controller

    (🚧) A "Jack of all trades" custom flight controller board. With support for both power and control and the ability for custom firmware

    282 parts2GPL-3.0
  • 2 layers59.7 × 127.3 mmWasserkocher, the printed circuit board in 3D

    Wasserkocher

    dmatscheko/water_kettle

    ESP32-S3 running ESPHome on a custom KiCad PCB for the base of a SEVERIN WK 3479 water kettle

    67 parts
  • 2 layers69 × 112.2 mmUltraPCB KiCAD, the printed circuit board in 3D

    UltraPCB KiCAD

    enliktjioe/three-workshops

    HfK Bremen - Three Workshops course from Ralf Baecker

    52 partsGPL-3.0
  • 4 layers60 × 80 mmWisp, the printed circuit board in 3D

    Wisp

    huulanka/wisp

    Open-source ESP32 room climate monitor — CO2, VOC, humidity, temperature and light sensing with custom PCB, MQTT/HomeKit integration, and OTA firmware updates. Full hardware + software, from schematic to BOM.

    91 partsMIT
  • 4 layers163.1 × 116.8 mmOpenParol, the printed circuit board in 3D

    OpenParol

    OpenParol/OpenParol-Board

    Open-source project for a 6-DOF robotic arm controller

    242 partsGPL-3.0
  • 4 layers50 × 88.5 mmARC PFC, the printed circuit board in 3D

    ARC PFC

    RTU-HPR/ARC_PFC

    RTU High Power Rocketry Team's ARC Project Primary flight computer

    141 parts