GitHub realdmx/c64_6581_sid_players — Cybernoid II in Deenen's MUSICFILE, the MoN SFX player, the Driller listing
A GitHub collection of "original and reverse-engineered music players for the C64", converted to the ACME assembler so that "every assembly file should produce a .sid file". Its Tel_Jeroen_MON/Tel_Jeroen_Cybernoid2.asm is the closest thing to documentation of the maniacs-of-noise driver: charles-deenen's MUSICFILE, with Dutch labels, carrying jeroen-tel's cybernoid-ii.
Key claims#
The repository
- README: "In the olden days, every budding musician wanting to make it in the business had no other choice but to program their own music player. … These are some sourcecode of the players used for many famous tunes. They have been recovered or reverse-engineered by various people." Some files "might not build until it's cleaned up"; pull requests welcome. MIT licence on the packaging (copyright "2023 dmx").
- Directories:
Bjerregaard_Johannes_MON(James Bond 3, Myth),Deenen_Charles_MON(SFX player, two test tunes),Ouwehand_Reyn_MON(Armada, Dutch Breeze),Tel_Jeroen_MON(Cybernoid II),Gray_Matt(Driller — the SIDin listing, s-sidin02-matt-gray-driller — and Dominator),Gray_Fred,Hubbard_Rob(Monty on the Run), plus Galway, Whittaker, Dunn, Kimmel, Bulka.
Tel_Jeroen_Cybernoid2.asm (1817 lines, 109 comment lines)
- Header:
; Cybernoid II / ; Music by Jeroen Tel / ; MUSICFILE V01-07-1988 / ; Programmed by Charles Deenen / ; The most advanced music player ever written for the commodore 64!PSID header: two songs, PAL, 6581, "1988 Hewson", load$1000,init/playentry points. - Tuning constants at the top (per-tune, in the source):
volume = $0f,vibtotzover = $30,pulserunspeed = $63,dubvoice = $0c,noisehitone = $fa,pulsearpwait = $01,gitarwait = $0f,spacelength = $00,spacewait = $60,wavearpwait = 2; zero page$40–$52(fx1sto…denom). - Per-voice state as 3-byte tables:
tabcount, begcount, nootcount, nootleng, wavesto, noothoogt, wavecount, hinotesto, lonotesto, glidetest, pulsestolo/pulsehisto, toneadd, vibstore1–3, tonearpcounter, arpieoklo/hi, filter, filtercount, repeatsto, stod404, newnote, tempglide, glidedelay, pulserunlo/hi, vibcounter, d400–d403 …— i.e. the driver keeps shadow copies of the SID registers per voice. - Routines, as commented in the code: "take step from track", "add tone", "set steplo+hi", "load note", "glideset", "set adsr values", Tonearpeggio, Vibrato routine, Tone glide, pulsegedoe (pulse business), Wavearpeggio, Pulsearpeggio, Tonesweep up, Filterklooi (filter fiddling), Strangefilter, Pulserun, Double voices, Space effect, Drumroutine, noisetik, then "tabellen" (tables).
- Tables:
snelheid(speed)2, 2per song;seqtabel= three sequences per song (seq0a–ctitle,seq1a–cgame over);sequence= pointers to 33 step tablesst00–st20;wavearp: $80,$10,$80,$10;pulsearp;drumtabel→dwa0/dto0,dwa1/dto1:dwa0 !by $0b(length 11) then waveforms$81,$81,$20,$20,$10,$10,$10,$10,$10,$10,$10,$10and pitch offsetsdto0: $34,$0a,$08,$06,$04,$05,$06,$05,$04,$05,$06,$05— a drum as a frame list of (waveform, pitch) (wavetable-programming);arp0–arp7:$02,$00,$03,$07/$02,$00,$04,$07/$02,$00,$05,$08/$02,$00,$05,$09/$02,$00,$03,$08/$02,$00,$04,$09/$02,$00,$03,$06andarp6 = $17followed by a 24-byte run$e9 … $ff,$00— minor, major, sus and other three-note stacks with a length byte in front, and one long descending sweep (chord-arpeggio);filterbytes→fb0–fb3, ten bytes each, e.g.fb0: $a0,$fe,$02,$ff,$80, fp0,$02,$22,$42,$62withfp0 = $10 + volume(filter mode nibble plus volume for$D418) (filter-programming);pulsetabel, four 8-byte entries such as$04,$0c,$02,$30, $04,$30,$06,$30(pulse-width-modulation). - Instruments are 8-byte rows with named columns
pulsehi, waveform, attdec, susrel, filcount, fx1, fx2, fx3and Dutch/English row comments:leeg(empty)$00 ×8;bass: $05,$41,$08,$89,$00,$53,$64,$80;bassdrm: $08,$11,$00,$a8,$f0,$00,$00,$10;snardrm: $08,$11,$00,$a9,$f0,$01,$00,$10;arp+filt: $04,$21,$00,$c8,$01,$00,$81,$85;melo-1: $0c,$41,$00,$b8,$00,$52,$22,$01;melo-2: $06,$41,$00,$e8,$02,$53,$74,$01;bassfilt: $03,$41,$07,$69,$00,$00,$51,$80;melo-3,tingel,omhoogt(upwards),$81lang,solo: $05,$41,$00,$b8,$03,$c5,$24,$01,basso,solo2— 19 rows (instrument-tables, instrument-design). vibtabwait(vibrato delays per instrument, e.g.$0c,$18),startlen($02 … $05, $06) andstarttabel($81,$81,$81,$81, $41,$11,$11,$81, $41,$81,$81,$81) — by their names and values a per-instrument start waveform and length, i.e. noise ($81) for the first frames of most instruments (reading of the source; the meaning is not commented — unverified). Compare the "1st frame waveform" of goattracker and hard-restart.- Sequences (
seq0a: !by $84,$01, $06,$07,$06,$07, $09,$07,$09,$07 … $84,$47,$12, $84,$16,$8e,$16,$89,$16 …): bytes below$80are step-table numbers, bytes with bit 7 set precede them — from the "add tone" code (and #%00011111) they carry transposes/commands (unverified) (orderlist). - A commented-out step (
;st1e) and remarks like; ($1d in orig)and; orig $75show the file was edited while being recovered from the original.
Deenen_Charles_SFX_Player.asm (958 lines): the MoN sound-effects driver in the same style — the second half of what VGMPF calls Deenen's "music driver ('Musicfile') and a sound effects driver" (s-vgmpf-maniacs-of-noise).
Practical takeaways#
- The MoN sound in numbers: pulse waveform
$41for bass and leads,$11(triangle) with$f0infilcountfor bass drum and snare,$21(sawtooth) for the arpeggio/filter instruments; drums as 11-frame waveform/pitch lists starting with two frames of noise; chords aslen, 0, 3, 7-style lists; a globalpulserunspeed,dubvoice(double voice) and a "space effect" as tune-wide constants. - Composing "in the driver" here means editing these tables in Turbo Assembler and re-assembling (turbo-assembler) — what the behind the notes videos show (s-cybernoid-behind-the-notes).
Relevance to the wiki#
Primary source for musicfile and cybernoid-ii; concrete MoN instrument, drum, arpeggio and filter data for the technique pages; the ACME Driller file is the machine-readable twin of s-sidin02-matt-gray-driller.
The rest of the collection#
The other 18 files were read on 2026-08-30 — Hubbard (s-realdmx-hubbard-player), Galway (s-realdmx-galway-rambo-player, s-realdmx-galway-arkanoid-player), Ocean/Dunn (s-realdmx-ocean-dunn-hughes-driver), Bjerregaard (s-realdmx-bjerregaard-player), Ouwehand (s-realdmx-ouwehand-mon-tunes), Deenen's test tunes (s-realdmx-deenen-test-tunes), Fred Gray / Kimmel / Whittaker (s-realdmx-fredgray-kimmel-whittaker), Audial Arts and FAME (s-realdmx-audial-arts-fame-players); the comparison is on sid-player-routine. Two readings marked unverified above (starttabel/startlen, the ≥ $80 sequence bytes) are settled in s-realdmx-deenen-test-tunes.
Pages touched#
musicfile · cybernoid-ii · jeroen-tel · charles-deenen · maniacs-of-noise · reyn-ouwehand · turbo-assembler · matt-gray-player · sid-player-routine · instrument-tables · instrument-design · wavetable-programming · chord-arpeggio · filter-programming · pulse-width-modulation · vibrato · hard-restart · orderlist · sound-effects