Giter VIP home page Giter VIP logo

c64-mega-switcher's Introduction

C64 Mega Switcher

With 8bitdo starting recent productions of new quality wireless controllers for the Sega Mega Drive/Genesis, I thought it was time to look into adapting the usage of these with the Commodore 64. Normally a controller of this type would be HARMFUL to your C64 WITHOUT using of a suitable adapter, a great one was made by SukkoPera a while back and I've taken a lot of inspiration as well as lifting a couple of the kicad footprints from his OpenC64MegaDrivePadAdapter. What this project aims to add into the mix is a way of swapping the active port your joystick is connected to at the press of a button, that way you don't have to fiddle around with cables every time you try out a game that for some reason insists on having the joystick in the other port!

I could probably have made one that was a lot smaller by using SMD, or possibly even a lot more dynamic one by the use of an AVR at it's core, but I wanted one that was easy to build and does not require any other skills than pointing the hot end of a soldering iron to the requisite parts. Hopefully it'll be something anyone can build and have fun with!

Revision B with 8bitdo M30

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, the lead free makes to job a lot harder if you're new to the hobby.

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. 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 and then filling in the screw 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, usually I keep the metal anchors as they keep the connector from wriggling around too much.

I recommend putting something underneath the board, so that it isn't flexing too much when pressing the buttons. Nylon standoffs cut to size, extreme amounts of layered tape - you decide what works best for you and whatever leftovers you can find in the parts-bin!

Components

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, just press the button for the port you want to use instead. The module supports alternate fire, in other words the second button that was found on the ill-fated Commodore 64 Games System console - this works, but I've so far only tested it with Robocop 2 on cartridge.

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 B button for UP, then you have to REMOVE the jumper enabling D-PAD UP!
  • In essence, just make sure to only jumper once per vertical or horizontal line of jumpers. Personally I use C as the primary fire button, B is jumpered as alternate fire for the few titles that support secondary fire buttons. If in doubt, refer to the image at the top.

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, plan on usually waiting 3-4 weeks though). Parts listed in parenthesis are optional and is only used for the secondary fire button, so you can safely skip these unless you want the whole thing built in one go (BC547 can be substituted with a 2N2222 connected the wrong way around).

Reference Item Count
PCB Fabricate using Gerber files (order) 1
C1-C3 100nF capacitor 3
D1,D2 5mm LED 2
D3-D12 1N4148 diode 10
R1,R2 10k ohm resistor 2
R3,R4 220 ohm resistor 2
R5,R7 2k2 ohm resistor (2)
R6 100k ohm resistor (1)
Q1 BC547 TO-92 transistor (1)
U1 74HCT4053 or CD4053 DIP-16 2
U3 NE555 DIP-8 1
SW1,SW2 SPST momentary push button 2
JP1 2-pin straight header 1
J1,J2 Female DB9 right-angle connector 2
J3 Male DB9 right-angle connector 1
J4,J5 2x2-pin straight header 2

c64-mega-switcher's People

Contributors

tebl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

rainisto jsanpe

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.