Skip to content

Latest commit

Β 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SIDapticus – enjoy your SIDs with peace of mind

Play .sid files on real SID chips – without killing them.

Live Demo Software License Hardware License Docs License Target MCU Chips Supported

Protection isn't a feature. Protection is architecture.

Overview

SIDapticus is a laboratory reference prototype and a proof-of-concept hardware protection architecture designed to safely drive original MOS 6581 / 8580 SID sound chips using an ESP32-S3 microcontroller.

It is a standalone hardware and software platform built around authentic SID playback and safety-first hardware design. Powered by an ESP32-S3, SIDapticus recreates the Commodore 64 execution environment required to run SID player code. This includes a cycle-accurate 6510 CPU emulator together with the supporting C64 subsystems needed for faithful SID playback, while genuine SID chips produce the sound exactly as they were designed to.

Multiple layers of hardware protection, controlled power sequencing, dedicated power conditioning, and an isolated audio path keep valuable vintage hardware safe from the electrical hazards that have claimed so many SID chips over the years.

Important

Reference Prototype Notice
The hardware implementation in this repository represents a laboratory testbench built on a breadboard to validate protection circuitry and cycle-exact timing. It is not a consumer plug-and-play kit, as a dedicated PCB has not yet been produced.


Welcome screen
Welcome screen of SIDapticus UI.

More screenshots and UI overview – check the User Guide.

For deep technical details – see Advanced Internals.

🎧 Live Demo

Listen to the audio demonstrations by visiting the demo page:

https://hankdraco.github.io/sidapticus-demo

The demo includes interactive A/B audio comparisons, allowing you to switch instantly between different recordings while listening.


Note

Laboratory Implementation
The circuit detailed in this repository is implemented on a breadboard as a physical reference testbench. It serves to validate the CERN-OHL schematics and multi-layer protection logic prior to PCB fabrication. For schematics and hardware architecture, refer to Hardware Setup and Hardware Details.


Key Features

  • Safety-first design – multiple independent hardware protection layers engineered specifically for genuine SID chips
  • Real SID playback – supports original MOS 6581/8580 chips as well as modern replacements
  • Cycle-accurate 6510 emulation – executes SID player code on a dedicated ESP32-S3 core synchronized to the PHI2 clock
  • PSID & RSID support – including sample-based tunes and Dual SID playback
  • Analog audio path – isolated, low-noise analog audio path with configurable stereo modes
  • User experience - web interface with drag & drop playback, Wi-Fi provisioning, mDNS and OTA firmware updates
  • NetSID Server mode – use SIDapticus as a network SID device for compatible software
  • Fully open source – hardware, firmware and documentation released under open licenses

Why SIDapticus?

The inherent fragility of original SID chips, combined with aging Commodore 64 power supplies, has become one of the biggest challenges in preserving these irreplaceable devices. While modern replacement power supplies are widely available, there has never been a dedicated platform whose primary purpose is to let original SID hardware operate safely outside the Commodore 64 itself.

SIDapticus was created to fill that gap.

Rather than treating electrical protection as an additional feature, the entire project was designed around it. The hardware architecture, power distribution, protection circuitry, software, and even the Commodore 64 execution environment all exist to support one objective: allowing genuine SID chips to perform exactly as they were designed to, under carefully controlled and electrically safe operating conditions.


Table of Contents


SID Chip Safety – The Foundation of the Project

SIDapticus incorporates an extensive set of protection mechanismsβ€”from power sequencing and active bleeders to crowbar circuits on every railβ€”specifically engineered to safeguard fragile legacy silicon from power faults and improper voltage spikes.

  • Power sequencing – V_LOGIC (5V) always turns on before V_ANALOG (9V/12V).
  • Active bleeders – upon power-off, they instantly discharge capacitors on the analog rails.
  • Overvoltage crowbar – all rails (5V, 9V, 12V) are monitored and protected by a fail-safe crowbar circuit.
  • Pull-down resistors – on /RES and PHI2 during ESP32’s Hi-Z state (reset).
  • Brownout monitoring – MCP130 puts the ESP32 into reset state and cuts analog power if V_LOGIC drops below 4.5β€―V.

More about safety β†’


Audio Signal Path

  • Operating modes: stereo, wide mono, β€œLeft on both” (no 6β€―dB loss)
  • Significantly mitigated hum, buzz, and ESP32 digital switching interference
  • Capacitors: Nichicon, Panasonic FM
  • Virtual ground generated by a dedicated op-amp
  • Audio routing via H11F1 optocouplers

More about audio β†’


6510 & C64 Emulation

A cycle-accurate 6510 emulator running on a dedicated core of the ESP32, isolated from FreeRTOS, synchronized to the PHI2 clock.

Highlights:

  • All 256 opcodes (including undocumented / illegal instructions) and full BCD support
  • Branch timing (2/3/4 cycles) with page-crossing detection
  • Read-Modify-Write (RMW) with dummy-writes – exactly like the original 6510
  • Full memory banking ($01), VIC-II (PAL/NTSC, raster IRQ), CIA timers and interrupts

Full emulator details β†’


Modern Connectivity & UX

  • Web-based UI – C64-style blue screen, player raster time visualization, authentic fonts
  • Wi-Fi provisioning – no hard-coded credentials
  • mDNS – accessible at http://sidapticus.local
  • OTA updates – no USB cable needed
  • Two operation modes:
    • Player – native .sid playback (PSID, RSID, sample-based tunes)
    • NetSID Server – NetSID protocol support for remote clients (e.g. ACID64)

More about software β†’


Hardware Flexibility

  • Jumpers to select the analog voltage (9V / 12V) independently for each of the two SID sockets
  • Support for mixed models – e.g. one 6581 + one 8580
  • Digi-Fix switch (hardware-level β€œdigi-fix”)
  • Compatible with original MOS/CSG chips and modern replacements (ARMSID, SwinSID, etc.)

More about hardware configuration β†’


Quick Start (Reference Testbench Setup)

Note

SIDapticus supports both Quad SPI (ESP32-S3-N8R2) and Octal SPI (ESP32-S3-N16R8) variants.

Caution

Before applying power or inserting any chips, strictly follow the step-by-step safety sequence in GETTING_STARTED.md. Failure to do so may result in permanent hardware destruction.

  1. Review technical requirements – see the schematics and protection architecture details in HARDWARE_SETUP.md and HARDWARE_DETAILS.md.

  2. Set up or inspect the testbench on a breadboard strictly according to the KiCad schematics and signal specifications.

  3. Flash the firmware via USB (web tools or python -m esptool) – see GETTING_STARTED.md.

    • Option 1: Flash pre-built binary (no ROMs required)
      Download the appropriate sidapticus_<MODEL>_factory.bin file from Releases – choose the version matching your ESP32-S3 module (N8R2 or N16R8). See GETTING_STARTED.md for detailed how-to.
    • Option 2: Build from source (ROMs required)
      See GETTING_STARTED.md – you'll need to provide C64 ROM files.
  4. Apply 15 V DC power to the verified reference protection circuit.

  5. Connect to Wi-Fi – the device will enter provisioning mode (SOFTWARE_SETUP.md#wifi-and-provisioning).

  6. Open http://sidapticus.local in your browser, upload a .sid file, and test playback.

Tip

If you don't have any .sid files yet, grab the High Voltage SID Collection at hvsc.c64.org – it's the definitive archive.

Note

This repository provides a laboratory reference testbench rather than a finished consumer PCB. Replicating the physical circuit requires technical proficiency, precise wiring, and strict adherence to voltage verification protocols.


Detailed Documentation

For a comprehensive guide to building, configuring, and understanding the system, please refer to the main documentation entry point:

πŸ‘‰ Documentation Overview Guide (Start here)

Alternatively, you can jump directly into specific guides matching your current task:

πŸ”Ή For Users – Get Started and Use the Device

If you wish to inspect, validate, or replicate the reference hardware testbench, begin with the setup protocol:

  • πŸš€ GETTING_STARTED.md – Your main step-by-step walkthrough. Follow this guide from start to finish for initial flashing, Wi-Fi provisioning, testbench validation, and safety voltage checks.

For specific topic references or detailed feature lookups, consult the dedicated manuals:

  • πŸ“± SOFTWARE_SETUP.md – Deep-dive reference for Wi-Fi provisioning details, mDNS resolution, and OTA update workflows.
  • πŸ”Œ HARDWARE_SETUP.md – Complete hardware reference (jumper configs for 9V/12V, filter caps, digi-fix, status LED, and pinouts).
  • πŸŽ›οΈ USER_GUIDE.md – Web UI reference (operating the player, audio modes, memory monitor, and browser-based controls).

βš™οΈ For Advanced Users & Developers – Understand and Modify

  • HARDWARE_DETAILS.md – Hardware safety deep dive: multi-stage 78xx voltage regulator cascades, MCP130 power sequencing, TL431 + BT151 crowbar protection, TTL logic compatibility, and BOM overview.
  • SOFTWARE_DETAILS.md – Software architecture breakdown: dual-core FreeRTOS distribution, custom cycle-accurate 6510 CPU emulation engine, VIC-II/CIA environment synchronization, and NetSID protocol server.
  • EMULATOR_INTERNALS.md – Cycle-by-cycle breakdown of the 6510 emulation engine in SIDapticus: opcode dispatch, the next_cycle state machine, and the interrupt mechanism.
  • ADVANCED_INTERNALS.md – Bare-metal hardware exploitation: Unicore isolation, handling the 64 KB ESP32-S3 SRAM1 memory banking contention stall, and single-cycle GPIO bus manipulation.

⚠️ Troubleshooting & Limitations

  • KNOWN_ISSUES.md – Hard truth about multi-timer CIA limits, hardware execution budget constraints (240 Xtensa cycles), and their practical implications.

Note

While every effort has been made to ensure technical accuracy and rigor across all specifications, community review is always welcome. If you notice an error, omission, or opportunity for clarification, feel free to open an Issue.


Hardware Assembly & Liability Notice

THE PROJECT IS PROVIDED "AS IS", FOR EDUCATIONAL AND HOBBYIST PURPOSES ONLY,
WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
AND NONINFRINGEMENT.

Scope of Documentation: This repository contains the complete KiCad schematics and
firmware for SIDapticus. It does not include step-by-step build guides,
component-level tutorials, or physical assembly manuals. Construction and parts
sourcing are entirely the user's responsibility.

Technical Requirements: Replicating this system requires solid experience in
electronics, including proper component selection and analog noise filtering.
Accurate physical assembly is necessary to maintain signal integrity.

Disclaimer of Liability: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE PROJECT OR THE USE OR OTHER
DEALINGS IN THE PROJECT. The author assumes absolutely no responsibility or
liability for any hardware damage, component failure, personal injury, or improper
performance, regardless of cause.

Licensing

SIDapticus is released under open-source licenses for its software, documentation, and hardware design files:

  • Software & Documentation: MIT License (MIT)
    You are free to use, copy, modify, merge, publish, distribute, and sublicense the code and documentation for any purpose, including commercial applications, provided that the original copyright and permission notices are preserved. β†’ LICENSE-MIT

  • Hardware design files: CERN Open Hardware Licence Version 2 - Permissive (CERN-OHL-P v2)
    You may build, modify, distribute, and manufacture the hardware for any purpose, provided that you preserve the original copyright notices and give proper attribution. β†’ LICENSE-CERN-OHL-P-2.0

  • Third-Party Components: This repository includes third-party components (such as fonts, libraries, or other assets) distributed under their own license terms. β†’ THIRD_PARTY_LICENSES.md

Note

The summary above is provided for convenience only. The license texts themselves are the legally binding documents.

Attribution

You are free to use, modify, or build upon this project. If you do so, a credit line would be appreciated – for instance, "based on SIDapticus" or "fork of SIDapticus". These are just suggestions; any clear indication of the original source is welcome.


SIDapticus Β· Crafted with love for SID

About

Designed to protect original MOS 6581/8580 SID chips while delivering authentic playback. Powered by ESP32-S3 with a C64 playback engine built around cycle-accurate 6510 emulation, Dual SID stereo, NetSID support, and a modern Web UI.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages