RC2024/10 Report #1

Hello friends! After following the Retro Challenge for a few years, I decided to take part in this year’s edition (RC2024/10)!

This post is an introduction to the project and also my first progress report. Please subscribe to this blog series’ Atom feed to receive the next reports.

Project introduction / idea

As a fan of synthesizers, my idea is to implement a “high-fidelity” SID (MOS6581 and MOS8580 chips, popularly used as “sound card” for Commodore home computers) replacement using a modern STM32G4 microcontroller, based on reSID (the SID emulator used by VICE - the Versatile Commodore Emulator). Please note that in this context, “high fidelity” means "as computationally precise as possible" and not “something that sounds exactly the same as the original chip”! :-)

I named the project RCSID, and a Git repository (pretty much empty) is already available: https://github.com/rafaelmartins/rcsid

I don’t know yet if I’ll be implementing a DIP-like replacement for actual chips in Commodore home computers or just implement the “engine” to be used standalone in new projects, but if time permits, I may create a RC2014 sound module similar to SID-Ulator using this device.

There’s nothing 100% new here, but I’m taking this as an opportunity to learn more about these chips!

Current status

I started the work by looking at the reSID codebase, and the current state of it is not very “promising.” There are several different forks of the codebase, and apparently each fork is based on a different state of the original code. Even the “official” git repository maintained by the original author claims to be incomplete, and suggests using the VICE fork as the base for new projects, and so I did. However, the VICE fork also suggests using the “original version” for new projects. Sounds pretty much like a “chicken and egg” problem…

My Git repository contains the reSID code from VICE, which as far as I can tell, is reSID-1.0pre2with a lot of patches from their community. So far, so good…

While I write this post, I’m porting the reSID codebase to build using CMake instead of autotools, since I already have some infrastructure to develop STM32 projects using CMake.

In parallel, I’m investigating what is the best STM32G4 microcontroller for the task, based on the I/O requirements. Since I have some STM32G431KBT6 (as well as some NUCLEO boards based on it, for another project) at home, I’ll try to fit the project on that as much as possible, at least for starters. :-)

Stay tuned!