An adapter to connect a classic C64/Amiga joystick to "The C64" (or a PC) through USB. It's implemented using an LPC1549 controller and based on my C64 USB adapter.
The case I selected is a PACTEC CNS-0407. It's actually meant for RS232
and RJ11/RJ45, but works quite well for an USB-B connector. It's e.g. available from Mouser.
However, I needed 3D printed extensions for SMD pushbuttons to reach the top of the case. The additional (mode selection/ISP) button is completely 3D printed.
The FreeCAD and STL files for these 3D models are included in the repository.
I used a CAD drawing to cut a stencil from paperboard to drill the holes (DXF file is in the repository).
The adapter supports up to three buttons on the DB9 connector and has six buttons on its own. The upper two buttons represents the two triangular buttons "TL" and "TR" on the original "The C64" joystick while the lower four buttons represent the buttons A,B,C and menu.
The 3rd button (or "TL") from the DSUB connector and on the adapter are ORed. So if you have a third button on the joystick, you can use either button at any time as button 3 ("TL").
To switch between Amiga mode (where all buttons are low active, i.e. switch to ground) and C64 mode (where buttons 2 and 3 are high active as they are connected to POTX/POTY on the SID), press the additional button for one second. One of the LEDs indicates if the C64 mode is active (LED on) or not (LED off). Note that that the last setting is stored in an internal EEPROM, so it's automatically used until you switch mode again. Also note that the button on the PCB is actually the ISP (in system programming) button. So if you press it while powering on the device, it will not connect as HID joystick but as USB drive where you can change the firmware by deleting the "bin" file and copying another bin to it. Use this with care though and only reprogram binaries meant for this specific device.
To work on a "The C64" without any modifications, the HID descriptor mimics that of the "The C64" joystick.
All files related to this project can be found in the BitBucket
This is a spare time project I did without any commercial interest.
Everything is released under the Creative Commons CC-BY license.
In a nutshell this means that you can do share, modify and use everything released under this license even for commercial projects.
You just need to give me appropriate credit, indicate what changes you made and agree not to try to force a more restrictive license on my work.
See the CC BY license for details.