SIDKick
SIDKick -- the first complete SID 6581/8580-drop-in-replacement that you can build yourself
Install / Use
/learn @frntc/SIDKickREADME
SIDKick is a versatile sound device for C64s and C128s: it serves as a drop-in replacement for the SID 6581/8580 sound chips, and at the same time provides Sound Expander-emulation (Yamaha OPL-based FM sound), a MIDI interface and can control LED stripes. It is based on a Teensy 4.1 and makes no compromises with regard to quality: the emulation is based on reSID and fmOPL. It also comes with a few extras.
Currently its features include:
- dual 6581 and/or 8580 emulation based on reSID 0.16 or reSID 1.0 (configurable)
- 2nd-SID address at $d400, $d420, $d500, $d420 + $d500 simultaneously, $de00, $df00
- Sound Expander/FM emulation based on fmOPL (at $df00), support for OPL sample playing technique
- paddle/mouse support
- built-in configuration menu (launch with "SYS 54301" or "SYS 54333", also from C128-mode)
- built-in PRG launcher (via menu)
- 10 different profiles, switchable on-the-fly via an optional button (otherwise via menu), optional "SAM speech synthesis" telling you which one is selected
- MIDI interface emulation and breakout connector (DATEL, Sequential, Namesoft and compatible interfaces based on the MC6850 UART IC, addresses at $de0x) [^1]
- LED-stripes (WS2812b) support with several display modes (peak meter, color cycling, ...) [^1]
- sound output via Teensy MQS (PWM) or high-quality using a PT8211/TM8211-DAC, filters, and an operational amplifier
- output available at connectors (stereo) or routed through the mainboard (mono)
[^1]: available with firmware version 0.2+.
<p align="center" font-size: 30px;>| SIDKick 0.4s | SIDKick PCB 0.4s and 0.4 (rendering) | SIDKick PCB 0.3 and 0.3s (rendering) | | :--: | :--: | :--: | |<img src="https://raw.githubusercontent.com/frntc/SIDKick/master/Images/SIDKick_v04_photo.jpg" height="180"> | <img src="https://raw.githubusercontent.com/frntc/SIDKick/master/Images/SIDKick_v04.jpg" height="180"> | <img src="https://raw.githubusercontent.com/frntc/SIDKick/master/Images/SIDKick_v03.jpg" height="180"> |
| Built-in configuration tool | | :--: | | <img src="https://raw.githubusercontent.com/frntc/SIDKick/master/Images/SIDKick_menu_02a.jpg" height="180"> <img src="https://raw.githubusercontent.com/frntc/SIDKick/master/Images/SIDKick_menu_02b.jpg" height="180">
</p>Videos by emulaThor showcasing the LED-stripe support can be found here.
<br />How to build a SIDKick:
PCB Revisions and Variants
First of all, there are two variants of the PCB: for C64 longboards (v0.3 and v0.4, left in images above) and for C64 shortboards (v0.3s and v0.4s, right). I prepared the latter as the SIDKick+Teensy combination otherwise barely fits below the keyboard in flat C64c cases unless you use low-profile sockets and pin headers (1). All 4 PCB-versions fit into a C128; installation in a C128D requires removing a standoff below the power supply and gently lifting it (same as with other dual SID options).
<img align="right" height="120" src="https://raw.githubusercontent.com/frntc/SIDKick/master/Images/SIDKick_flat.jpg">(1) SIDKick height, space below keyboard in flat C64s: it was brought to my attention that there are SIDKick-relocation-boards, but I recommend to avoid adapters and better use low-profile pin headers and sockets. The photo on the right (courtesy of Jood) shows height reduction by low-profile sockets and pins. Possible headers/sockets include Boom Precision Elec pinheaders (cheap), Aliexpress (cheap), preci-dip sockets, Mill-Max headers, Fischer Elektronik headers, and similar products.
<br>Of both variants there are two revisions: the latest one (v0.4) is a single-sided PCB using smaller IC footprints and provides easy-to-reach 3.3V and GND pins. Both revisions (v0.3 and v0.4) provide extension pins for the SAM button, MIDI, and LED-stripe extensions.
Note, all PCBs provide the same functionality.
Here you can find the BOM and assembly information for SIDKick v0.3, SIDKick v0.3s. SIDKick v0.4, SIDKick v0.4s.
If you plan to use the (lower quality) MQS-output only, you can skip all SMD-parts outside of the SID-/Teensy-sockets (C101-109, R101-107, U2, U6).
PCB ordering
If you want to support my projects, feel free to order the PCBs from PCBWay:
- SIDKick 0.4
- SIDKick 0.4s
- MIDI breakout
- If you don't have an account at PCBWay yet: register via this link and get "$5 of New User Free Credit".
The Gerber files for PCB-production are also available in this repository if you want to order from another PCB manufacturer.
Build instructions
The first step when building the SIDKick is soldering the surface-mount components (top side first). Next solder the pin header for the SID-socket on the bottom of the PCB. I recommend to put them into a breadboard to properly align and hold them in place (as you can see on the image 4 pins on the left side can be left out). After soldering the pin headers, cut the protruding tips. Lastly, solder the socket for the Teensy (again, fixate the pin connector strips to align them) and the connectors for DAC and/or MQS output, address/IO lines and (optional) extension header.
<p align="center" font-size: 30px;> <img src="https://raw.githubusercontent.com/frntc/SIDKick/master/Images/SIDKick_build1.jpg" height="120"> <img src="https://raw.githubusercontent.com/frntc/SIDKick/master/Images/SIDKick_build2.jpg" height="120"> <img src="https://raw.githubusercontent.com/frntc/SIDKick/master/Images/SIDKick_build3.jpg" height="120"> <img src="https://raw.githubusercontent.com/frntc/SIDKick/master/Images/SIDKick_build4.jpg" height="120"> </p> <img align="right" height="160" src="https://raw.githubusercontent.com/frntc/SIDKick/master/Images/SIDKick_MIDI_Render.jpg">The MIDI-breakout PCB consists of two parts: the actual breakout, and a very small "IRQ"-PCB which is installed inside the C64/C128. I recommend to break/cut the two pieces apart before beginning the assembly. The breakout requires an optocoupler (H11L1 or 6N138) for the MIDI-in circuitry, and only few additional standard components. It follows the schematics provided for Teensy-MIDI and mt32-pi. Pay attention to the different resistor values depending on whether a H11L1 or 6N138 is used (printed on the PCB). You have to choose the voltage for the optocoupler by closing the solder jumper: the H11L1 runs at 3.3V, for the 6N138 you can use 3.3V (out of specs, but normally works) or 5.0V. In my tests either optocoupler/voltage worked fine.
The BOM and assembly information is here. Note, the edge connector is not required (nor connected to anything) and only meant to provide means to firmly attach the breakout, e.g. to the tape or user port.
For LED-stripes there is nothing to build, see the install-options below.
<br />Installing SIDKick
Pay attention to correctly orient and insert the Teensy and the SIDKick (see backside of PCB for markings) into the SID-socket of your C64 or C128. The installation procedure is the same for PAL or NTSC C64/C128 as, starting with version 0.2, the SIDKick-firmware auto-detects what system it is running on.
You can choose to emulate a single SID only. If you want to use a second SID, MIDI, or FM emulation, you need to connect additional cables to get the signals to the SIDKick as they are not available at the SID socket:
Installing additional cables in C64
| SIDKick pin | C64 (see images for alternative locations) | |----------|:-------------| | A5 | CPU Pin 12 (required for $d420 and FM) | | A6 | CPU Pin 13 (required for FM) | | A7 | CPU Pin 14 (optional) | | A8 | CPU Pin 15 (required for $d500) | | IO1/2 | expansion port pin 7 and 10 $de00 and $df00 addresses |
Installing additional cables in C128
| SIDKick pin | C128 |
|----------|:-------------|
| A5 | CPU Pin 12 (required for $d420 and FM) |
| A6 | CPU Pin 13 (required for FM) |
| A7 | MMU (U7, MOS 8722) pin 47 (required for $d500) |
| A8 | U3 pin 14 (required for $d500) |
| IO1/2 | expansion port pin 7 and 10 $de00 and $df00 addresses |
The photographs show various (other) locations where these signals can be tapped, e.g. A5 to A8 and IOx are conveniently available on some mainboards (see photo of ASSY 250469) and at the ROMs (not shown on the photos: on the 250469 at the kernal ROM 251913 at pin 5 and 29, for examp
Related Skills
node-connect
347.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
