Martin Galway's music source files from 1980's Commodore 64 games

· coding · Source ↗

TLDR

  • Martin Galway has released the 6510 assembly source files for his Commodore 64 game music, including two generations of SID player drivers, for study and modification.

Key Takeaways

  • The repo covers two distinct player generations: the 1st Generation (1984-mid 1987, used on Wizball) and the 2nd Generation (debuted on Athena, later used on Times Of Lore and Insects In Space).
  • Galway acquired the copyright from Infogrames after original work-for-hire; he now owns the music and code and explicitly permits reassembly and modification with attribution.
  • The stated goal is for developers and musicians to read, analyse, and understand how the SID music players were architected, not just to archive the melodies.
  • Assembly directives like DSP (displacement) and ORG (origin) are used throughout, exposing how the driver manages memory layout on the 6510.

Hacker News Comment Review

  • Commenters emphasize that the musical substance is inseparable from low-level SID register manipulation: per-frame filter cutoff sweeps, ring mod gating between voices, and ADSR retriggering mid-note are the actual “music”, not the note data alone.
  • Attempts to translate the source into modern live-coding environments like Tidal Cycles or Strudel JS are feasible but lossy; the melody becomes recognizable but the timbral detail that defines Galway’s sound is baked into the driver loop.
  • The releases span landmark titles (Wizball, Parallax, Green Beret, Rambo, Cosmic Bakery), and several commenters with firsthand C64 experience treat the driver architecture as a historically significant engineering artifact worth studying for constraint-driven synthesis techniques.

Notable Comments

  • @the_data_nerd: “SID drivers are basically tiny tracker engines running 50hz interrupts on the c64” – argues .sid format preserves the 6510 driver code but pattern notation throws away the real sound.
  • @Luc: Identifies the undocumented DSP assembler directive as likely meaning ‘displacement’, working alongside ORG to position code in memory.

Original | Discuss on HN