Skip to the content
PCBKitNew board
2 layers49.3 × 81.9 mmC64-Joystick Switcher, the printed circuit board in 3D

C64-Joystick Switcher

tebl/C64-Joystick-Switcher21

Wanted a joystick switcher for my Commodore 64, so I built one by adapting C64 Mega Switcher for use with Atari-style joysticks. Supports secondary fire-button when using Sega Master System gamepads, even includes an auto-fire circuit.

Size
49.3 × 81.9 mm
Copper layers
2
Thickness
1.6 mm
Parts
30
Nets
34
Pads
142
Tracks, vias
608, 85
Pours
1
Routed
Yes
KiCad
KiCad 4
Created
25 Dec 2019
Updated
25 Feb 2023

Overview

C64-Joystick Switcher is an open-source printed circuit board by tebl, from the tebl/C64-Joystick-Switcher repository on GitHub. It is a 2-layer board of 49.3 × 81.9 mm with 30 parts on 34 nets, routed with 608 tracks and 85 vias.

It is built around the 74HCT4053D, NE555 and BC547. Its parts include 8 resistors, 5 capacitors, 5 connectors, 4 ICs and 2 diodes. It belongs with the retro computing and games and keyboards and input boards of this library.

Main components

3

README

README.md

C64 Joystick Switcher

I was watching MsMadLemon on Youtube the other day and she was making an autofire circuit, so naturally I wanted to build one too! Starting with the C64 Mega Switcher for the Commodore 64 (when you want to use Sega Genesis or Mega Drive Controllers instead), I stripped away some parts to clear space for the autofire parts, redesigned it a couple of times and then finally sketched out the whole thing again in order to figure out all the ways it didn't work. The last one thankfully worked, so now it's open and available for anyone with fingers they are willing to risk burning with a soldering iron (don't do that by the way, it hurts)!

C64 Joystick Switcher

Building the switcher

Soldering together the few components should be easy going as long as you have access to reasonable tools, personally I'm using a cheap soldering station with adjustable temperature so no need to go expensive if you don't have to. Use 60/40 soldering tin of reasonable quality, but stay away from the lead-free stuff unless you have experience working with it.

Bare PCB

Start by studying the PCB, both sides and perform dry fits to see that you have an idea of where everything goes since removing things is always a lot harder than getting it right in the first place (match orientation to symbols, see gallery images for reference if you're unsure). The diodes are installed standing, the stripe goes into the board so that it is laying directly against the board - a hint for making these look pretty, is wrapping one of the wires around a small screwdriver to get the loops looking almost identical!

DB9 connector

The female DB9 connectors used for port 1/2 comes with a metal shroud, this comes off when you remove the two screws that would be in the way anyway (see image above for reference). Given that the C64 ports are made out of plastic, the metal shroud is not needed though you could possibly keep it by gluing it to the connector if you really wanted to, alternatively you could also fill the mounting holes with solder to keep them together afterwards. Do a testfit of the connectors with the C64 before soldering them to the board, this is recommended in order to avoid adding any stress to the C64 board.

Connected to C64

Other than that, just take your time when doing the assembly - start by installing the smallest components first and then work your way up from there. Before actually plugging in anything into any antique computers, do a thorough visual inspection for any accidental solder-bridges. As a finishing note, I recommend putting something under the PCB to help support when pushing the buttons.

Using the switcher

Firmly insert the switcher into the C64, making sure that it is inserted the whole way and fits firmly without feeling loose. When playing a game, if you encounter a game that expects a joystick inserted into the other port you can use the switches to change the currently active port.

WARNING!

  • Do NOT move any of the jumpers while the computer is switched on, doing so may cause damage to it. Always power off first!
  • Do NOT jumper so that more than one button/direction does the same thing, for example: if you jumper the B1 button for UP, then you have to REMOVE the jumper enabling D-PAD UP!
  • Do NOT use with actual Sega Genesis or Mega Drive controllers, if you want to use one of those - use C64 Mega Switcher instead.

You can use any common Atari-style joystick such as the Competition Pro and Zipstick, they are the ones I've tested with and currently also have in my collection. You can use the secondary fire button if you have one wired with this capability, most commonly the pinout is compatible with the Sega Master System gamepad. An auto-fire circuit has been added to the module, this can be handy if your controller does not include this functionality.

Schematic

The supplied KiCad files should be sufficient as both a schematic and as a starting point for ordering PCBs (basically you could just zip the contents of the export folder and upload that on a fabrication site), the schematic is also available in PDF-format and this is what you'll need to print and work your way through this things don't work as expected after assembly.

BOM

Most parts should be easy to get a hold of from your favourite local electronic component shop, but given that I don't have access to such shops where I live so everything was based on whatever I could get cheapest from ebay/AliExpress (free shipping most places, but plan on waiting 3-4 weeks though). Pin headers are bought as strips with 40 pins, single or double rows, that you break into the specified sizes. Any amounts given in paranthesis are for optional functionality, mainly autofire and capability to utilize the secondary fire button if you have one.

ReferenceItemCount
PCBFabricate using Gerber files (order)1
C1-C4100nF capacitor4
C510uF electrolytic capacitor(1)
D1,D25mm LED2
J1,J2Female DB9 right-angle connector2
J3Male DB9 right-angle connector1
J4,J52x3-pin straight header2
JP23-pin straight header1
Q1BC547 transistor (TO-92)(1)
R1,R210k ohm resistor2
R3,R4220 ohm resistor2
R5,R72k2 (2200) ohm resistor(2)
R6100k ohm resistor(1)
R910k ohm resistor(1)
RV110k ohm potentiometer (RM-065)(1)
U1,U274HCT4053 or CD4053 (DIP-16)2
U3NE555 (DIP-8)1
U4NE555 (DIP-8)(1)
SW1,SW2SPST momentary push button2

Parts

30
QtyValueFootprintReferences
4100nFCapacitors_THT:C_Disc_D4.7mm_W2.5mm_P5.00mmC1, C2, C3, C4
310kResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2, R9
2220Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR3, R4
22k2Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR5, R7
274HCT4053Housings_DIP:DIP-16_W7.62mm_SocketU1, U2
2NE555Housings_DIP:DIP-8_W7.62mm_SocketU3, U4
1100kResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR6
110kPotentiometers:Potentiometer_Triwood_RM-065RV1
110uFCapacitors_THT:CP_Radial_D5.0mm_P2.50mmC5
1AUTOFIREPin_Headers:Pin_Header_Straight_1x03_Pitch2.54mmJP2
1B1_SELPin_Headers:Pin_Header_Straight_2x03_Pitch2.54mmJ5
1B2_SELPin_Headers:Pin_Header_Straight_2x03_Pitch2.54mmJ4
1BC547TO_SOT_Packages_THT:TO-92_Inline_WideQ1
1JoystickRND:DSUB-9_Male_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mmJ3
1P1_LEDLEDs:LED_D5.0mmD2
1P1_SELButtons_Switches_THT:SW_PUSH_6mmSW1
1P2_LEDLEDs:LED_D5.0mmD1
1P2_SELButtons_Switches_THT:SW_PUSH_6mmSW2
1Port 1RND:DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mmJ1
1Port 2RND:DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mmJ2
1UPPin_Headers:Pin_Header_Straight_1x02_Pitch2.54mmJP1

Questions

How big is the C64-Joystick Switcher PCB?

It measures 49.3 × 81.9 mm and has 2 copper layers, 1.6 mm thick.

What parts does the C64-Joystick Switcher use?

30 parts, built around the 74HCT4053D, NE555 and BC547. 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 C64-Joystick Switcher KiCad files?

From the tebl/C64-Joystick-Switcher repository on GitHub, at the commit this page was made from: the board is C64 Joystick Switcher.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the C64-Joystick Switcher design in my own project?

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

Similar boards

  • 2 layers49.3 × 81.5 mmC64-Mega Switcher, the printed circuit board in 3D

    C64-Mega Switcher

    tebl/C64-Mega-Switcher

    Adapter for using Sega Mega Drive/Genesis controllers on a C64, with builtin port switcher so no more cable switching!

    34 parts20
  • 2 layers82.6 × 40.6 mmAmiga Mouse Switch, the printed circuit board in 3D

    Amiga Mouse Switch

    tebl/Amiga-Mouse-Switch

    An attempt at building an automatic Amiga Mouse/Joystick switch (when used with Amiga port 1) - pushing the button changes the device connected. No more two-cable Merengue for me on the Amiga 500, forever more!

    25 parts11
  • 2 layers213 × 65.1 mmSizif512, the printed circuit board in 3D

    Sizif512

    UzixLS/zx-sizif-512

    ZX Spectrum CPLD-based clone for rubber case

    214 parts195MIT
  • 4 layers65.4 × 111.6 mmGinger, the printed circuit board in 3D

    Ginger

    mrehkopf/Ginger

    Socket shift, CPU switch, Clockports for Amiga mITX "Denise"

    30 parts12
  • 6 layers65 × 55.8 mmAES42HAT, the printed circuit board in 3D

    AES42HAT

    s13n/AES42HAT

    A digital audio interface in the shape of a Raspberry Pi Hat for AES42 microphones and more.

    232 parts1
  • 2 layers41.5 × 31.4 mmEjercicio 2, the printed circuit board in 3D

    Ejercicio 2

    CursoKicadFIUNER/PracticaKicad

    Repositorio de curso Kicad en la FIUNER 2016

    16 parts
  • 2 layers90.8 × 22.9 mmDrawdio, the printed circuit board in 3D

    Drawdio

    UC3Music/drawdio

    UC3Music version of the Drawdio, originally designed by Jay Silver

    30 parts15