SkillAgentSearch skills...

SIDKick

SIDKick -- the first complete SID 6581/8580-drop-in-replacement that you can build yourself

Install / Use

/learn @frntc/SIDKick

README

<p align="center" font-size: 30px;> <img src="Images/SIDKick_logo.png" height="120"> <br> <b> .- the first complete SID replacement plus FM and MIDI device that you can build yourself -. </b><br><br> </p>

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:

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

View on GitHub
GitHub Stars200
CategoryDevelopment
Updated3d ago
Forks17

Languages

C

Security Score

85/100

Audited on Mar 30, 2026

No findings