
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!

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.
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.
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)!

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.

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!

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.

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.
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!
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.
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.
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.
| Reference | Item | Count |
|---|---|---|
| PCB | Fabricate using Gerber files (order) | 1 |
| C1-C4 | 100nF capacitor | 4 |
| C5 | 10uF electrolytic capacitor | (1) |
| D1,D2 | 5mm LED | 2 |
| J1,J2 | Female DB9 right-angle connector | 2 |
| J3 | Male DB9 right-angle connector | 1 |
| J4,J5 | 2x3-pin straight header | 2 |
| JP2 | 3-pin straight header | 1 |
| Q1 | BC547 transistor (TO-92) | (1) |
| R1,R2 | 10k ohm resistor | 2 |
| R3,R4 | 220 ohm resistor | 2 |
| R5,R7 | 2k2 (2200) ohm resistor | (2) |
| R6 | 100k ohm resistor | (1) |
| R9 | 10k ohm resistor | (1) |
| RV1 | 10k ohm potentiometer (RM-065) | (1) |
| U1,U2 | 74HCT4053 or CD4053 (DIP-16) | 2 |
| U3 | NE555 (DIP-8) | 1 |
| U4 | NE555 (DIP-8) | (1) |
| SW1,SW2 | SPST momentary push button | 2 |
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 100nF | Capacitors_THT:C_Disc_D4.7mm_W2.5mm_P5.00mm | C1, C2, C3, C4 |
| 3 | 10k | Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R1, R2, R9 |
| 2 | 220 | Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R3, R4 |
| 2 | 2k2 | Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R5, R7 |
| 2 | 74HCT4053 | Housings_DIP:DIP-16_W7.62mm_Socket | U1, U2 |
| 2 | NE555 | Housings_DIP:DIP-8_W7.62mm_Socket | U3, U4 |
| 1 | 100k | Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R6 |
| 1 | 10k | Potentiometers:Potentiometer_Triwood_RM-065 | RV1 |
| 1 | 10uF | Capacitors_THT:CP_Radial_D5.0mm_P2.50mm | C5 |
| 1 | AUTOFIRE | Pin_Headers:Pin_Header_Straight_1x03_Pitch2.54mm | JP2 |
| 1 | B1_SEL | Pin_Headers:Pin_Header_Straight_2x03_Pitch2.54mm | J5 |
| 1 | B2_SEL | Pin_Headers:Pin_Header_Straight_2x03_Pitch2.54mm | J4 |
| 1 | BC547 | TO_SOT_Packages_THT:TO-92_Inline_Wide | Q1 |
| 1 | Joystick | RND:DSUB-9_Male_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mm | J3 |
| 1 | P1_LED | LEDs:LED_D5.0mm | D2 |
| 1 | P1_SEL | Buttons_Switches_THT:SW_PUSH_6mm | SW1 |
| 1 | P2_LED | LEDs:LED_D5.0mm | D1 |
| 1 | P2_SEL | Buttons_Switches_THT:SW_PUSH_6mm | SW2 |
| 1 | Port 1 | RND:DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mm | J1 |
| 1 | Port 2 | RND:DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mm | J2 |
| 1 | UP | Pin_Headers:Pin_Header_Straight_1x02_Pitch2.54mm | JP1 |
It measures 49.3 × 81.9 mm and has 2 copper layers, 1.6 mm thick.
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.
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.
Its repository states no licence, so its author keeps all rights: ask tebl before reusing the design.

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

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!



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


