Homeentitytool

SIDId

aliases sidid, SIDId player identification, sidid.cfg
created 2026-08-30 · updated 2026-08-31

Lasse Öörni's player-identification tool: sidid.cfg holds byte-pattern signatures for about 1 300 named C64 players and editors, and sidid.nfo a note per entry with author, release year and a CSDb reference — which is how hvsc and other collections label the "player" of a SID file. Source: s-sidid-player-list.

Cheat sheet#

wiki pageSIDId names
soundmonitorSoundmonitor, (MusicMaster_1), (MusicMaster_2), (MusicMaster_TMM), (Huelsbeck_Digi_V1/V2); Chris_Huelsbeck for his later players
rockmonitor(Digitronix) (under Soundmonitor); Rockmonitor itself is a Soundmonitor signature
tfmxTFMX (1988), TFMX/MasterComposer (1990), TFMX/TimeComposer (1990)
matt-gray-playerMatt_Gray, (Andrew_Rodger) — a 1990 modification
musicfileMoN/Deenen with (MoN/Cyb2), (MoN/TTWII), (MoN/JTS), (MoN/RWE), (MoN/Bantam), (MoN/Deenen_Digi); MoN/FutureComposer = future-composer
johannes-bjerregaardBjerregaard, MoN/Bjerregaard, (Audiomaster_V1)
rob-hubbardRob_Hubbard, (Rob_Hubbard_Digi), Paradroid/HubbardEd, Jason_Page/RobTracker, Companion (the 1984 type-in his earliest SIDs used)
hubbard-playerRob_Hubbard — the driver itself; see the row above
galway-playerMartin_Galway, Martin_Galway_Digi — the Rambo loader and Arkanoid players
ocean-music-driverPaul_Hughes, MusDriver/Paul_Hughes ("Music Driver", pauliehughes.com); no Jonathan_Dunn entry
whittaker-player / david-whittakerDavid_Whittaker
fred-grayFred_Gray
jeroen-kimmelJeroen_Kimmel
bjerregaard-playerBjerregaard, MoN/Bjerregaard, (Bjerregaard); (Audiomaster_V1) is based on his Stormlord player
FAME (Adam Bulka)FAME — "1988 F.A.M.E. (Fallacious Antrophoid Music Entertainment)"
Audial Arts (François Prijt)Audial_Arts — "Zong Player"; (Audial_Arts_Digi), Audial_Arts/Cody, Audial_Arts/Cody_Digi
martin-galwayMartin_Galway, Martin_Galway_Digi
chordian (JCH)JCH_OldPlayer, JCH_NewPlayer V1–V20, JCH_Protracker, JCH_DigiPlayer
laxityVibrants/Laxity, Laxity_NewPlayer_V21, SidFactory/Laxity, SidFactory_II/Laxity (sid-factory-ii)

What a name keys on#

SIDId matches byte patterns, so every name in the table above is a claim about code, not about a composer. The realdmx collection publishes the sources or disassemblies behind eight of those rows (source: s-realdmx-sid-players), and for three of them the code names the idiom the signature keys on:

SIDId namethe code the signature keys onthe driver behind the name
Fred_Graythe note-trigger idiom sta V1CTRL,x / inc V1CTRL,xfred-gray's Mutants driver (1987 Ocean, loaded at $e000 under the KERNAL): no pattern interpreter at all — 26 hand-written section routines plus a resident sound-effect engine
David_Whittakerthe gate write stx SIDV1CTRL / inx / stx SIDV1CTRLthe Panther driver (1986 Mastertronic): a byte-command effects language with no instrument table (whittaker-player)
Jeroen_Kimmelits instrument-load code"Red's music player (C) 1989 J.Kimmel", a Turbo Assembler source with per-voice instrument tables and Hubbard-style drums (jeroen-kimmel)

(Source for all three: s-realdmx-fredgray-kimmel-whittaker. The byte patterns themselves are not published there; the ones the SIDin articles quote are on player-identification.)

Martin_Galway is the case where both halves are documented. The signature SIDin #3 quotes for the galway-playerLDY #$00 / LDA ($xx),Y / CMP #$C0 / BCC — keys on the interpreter's fetch loop, and dmx87's reverse-engineering of the Rambo II loader shows why that is the right place to look: the player is three per-voice interpreters over byte streams in which everything below $c0 is a note and everything from $c0 up is a three-byte opcode. The same file marks the limit of the method — the music can EXEC arbitrary 6502 code and re-point the play vector (that is how the loader's morse-code intro works), so what runs a frame later need not be the routine that was identified (source: s-realdmx-galway-rambo-player; derived).

Two rows the cheat sheet could previously only name also get their players: FAME is Adam Bulka's "Sound Routine f 4.1.0", dated in its own header to 27.07.1988, 2.29 pm; Audial_Arts is François Prijt's "zong player" v1.0 and v2.0 of 1991 for Audial Arts / Flash Inc. — v1 cut out of an editor build (its variables sit outside the player, next to leftover keyboard-editor state), v2 self-contained (source: s-realdmx-audial-arts-fame-players).

One name, a family of players#

The same sources show what a single signature name has to swallow. This is not a defect of the list — it is what "the same player" means in practice, and the reason signatures wildcard everything that moves:

  • Rob_Hubbard. McSweeney's disassembly says in its header that the driver "was used (with small modifications) for his first approx. 30 tunes", and the collection's two files already differ: Monty on the Run has one tempo constant where Commando reads a per-song tempo table, Commando adds a pulse-low-byte modulation flag, and its "skydive" flag increments the frequency high byte where Monty's decrements (source: s-realdmx-hubbard-player; hubbard-player).
  • Paul_Hughes / MusDriver/Paul_Hughes. The two Ocean sources are one driver compiled two ways: Daley Thompson '88 pauses its modulators on the last frame of every note and has bend on voice A only, Ocean Loader 5 has neither restriction — handlers are compiled in or out per game to fit a 5 632-byte budget (source: s-realdmx-ocean-dunn-hughes-driver; ocean-music-driver).
  • Bjerregaard. James Bond 3 and Myth share command ranges, track format, frequency table and six byte-identical instrument rows, yet JB3 packs instrument bytes into nibbles and reaches its programs through pointer tables with $FE/$FF sentinels where Myth uses whole-byte offsets (source: s-realdmx-bjerregaard-player; bjerregaard-player).
  • David_Whittaker is one name over two unrelated engines: sidin #2 describes Lazy Jones as raw two-voice frequency lists with equal note lengths and no effects, while Panther two years later is a full three-voice command language — same author, nothing shared (source: s-realdmx-fredgray-kimmel-whittaker).

;RECOGNITION BYTES CHANGED! is worth pausing on. It is a line in johannes-bjerregaard's own 1989 source, in the ;IMPROVEMENTS: list he kept between commissions — so a working composer tracked which bytes of his player identified it, in the same file as the job sheet for a maniacs-of-noise commission (source: s-realdmx-bjerregaard-player).

The name credits the driver's author, not the composer#

The Paul_Hughes row with no Jonathan_Dunn entry looks like a gap and is not one: Ocean's own sources are headed "Orchestration, blood, sweat & tears by Jonathan Dunn / Oh wow (paroxism!) programming by Paul Hughes", so a tune jonathan-dunn wrote is correctly labelled with the driver he wrote it in (source: s-realdmx-ocean-dunn-hughes-driver). The reverse case is johannes-bjerregaard: both his sources in the collection are Maniacs of Noise commissions — one carries the job sheet as its header — but the code shares nothing with MoN's own driver, which is why they identify as his player and not as MoN/Deenen (source: s-realdmx-bjerregaard-player).

Before SIDId: pattern searching and the Lostack database (2003–04)#

  • The idea behind sidid.cfg was worked out in public in sidin #3 and #5: Stefano Tognon showed how to find a player from a byte sequence with every relocatable address wildcarded (Perl patterns for the galway-player, the matt-gray-player and JCH NewPlayer v1–v3), then documented Lada 'Ray' Lostak's engine database — about 450 engines, each a Player { Name=… ID=offset:value … } block with 3–16 IDs, optional Messages and the memory positions of the current track and pattern (OrderPos, SecPos), derived from the C64 tool Advanced Music Searcher (AMS 5.0.415), released under the GPL and read by Lostak's own player at unreal64.net. Simon White's scanner could check the whole hvsc against it "in less than 5 seconds", and the stated goal was to identify the engine of more than 90 % of HVSC tunes (sources: s-sidin03-pattern-searching-1, s-sidin05-pattern-searching-2). The method and the format are on player-identification; the editors themselves were being collected at the same time in hvmec.
  • Where the reference binaries come from. hvmec, started by Tognon in 2004, is the supply line for the method: collect the editors and their player routines so a signature can be made from a known sample — "you can use the players for founding the right pattern for the pattern searching engine project". Its tree splits into Editor and Tracker by whether note duration is declared explicitly, and each editor's several player routines get a directory of their own beside the version directories — "you know that JCH editor can use different player routines", which is why one editor needs twenty JCH_NewPlayer entries rather than one (source: s-sidin05-hvmec).
  • The JCH version numbers check out against the author's paper. JCH's scanned 1980s notes name NewPlayer 10.G0 ("packer and relocator"), 15.G7, and 17.G1 — "the hard restart implementation in NewPlayer 17.G1" — the same NN.GN scheme as SIDId's JCH_NewPlayer V1–V20 and Lostack's JCH 02/NEWPLAYER V17.G1. The signature list preserves a version history its author was keeping on paper at the time (source: s-chordian-player-editor-notes; hard-restart, jch-editor).

Release history (2006) and adoption#

  • SIDId 1.0x, September 2006: "a small DOS utility letting you know which playroutine is used in a SID file. You can add playroutine signatures manually to sidid.cfg" — 1.01 an AND function, 1.02 multiscan, 1.03 listing of unidentified files and scanning of whole directories, 1.04 search for one player, 1.05 no recursion, 1.06 a directory argument, -c for the config file and the SIDIDCFG variable (source: s-sidin-news-digest).
  • Players picked it up: XSIDPLAY2 2.0.0 (2008, "SidId v1.7 support"), ACID 64 Player Pro 3.0.0 (May 2009, a SidID search in the properties menu) and Sidplay/w 2.6 (December 2011, "latest sidid.cfg included", Ctrl-P shows the detected player) (source: s-sidin-news-digest).

What an identification does not give you#

The name tells you the engine, not how to call it. Tognon's 2008 rip of The Trivia Arcade is the counter-example: the music has three entry points instead of the +0 init / +3 play convention, and the game drives it from a chain of raster interrupts at lines $01, $41, $6E and $C3 — four calls per frame. Establishing that took breakpoints on the three entry points and on the IRQ vector at $0314 in vice's monitor, and a $D012 log at each call; no signature would have said it (source: s-sidin12-ripping-trivia-arcade; multispeed, sid-player-routine).

To verify#

  • (unverified) What distinguishes SIDId's MoN/Bjerregaard from plain Bjerregaard. The two sources the wiki has are Maniacs of Noise commissions in Bjerregaard's own driver (s-realdmx-bjerregaard-player), which does not explain a separate name; sidid.nfo's note for the entry, or a tune labelled with it, would settle it.
  • (unverified) Whether SIDId's Audial_Arts covers both "zong player" versions or only one — the two differ enough (v1 keeps its variables outside the player) that a single pattern need not match both (source: s-realdmx-audial-arts-fame-players).

hubbard-player · galway-player · ocean-music-driver · whittaker-player · bjerregaard-player · hvsc · sid-player-routine · siddump · tracker-scene-history · player-identification · hvmec · fred-gray · jeroen-kimmel · jonathan-dunn

Sources#

s-sidid-player-list · s-sidin03-pattern-searching-1 · s-sidin05-pattern-searching-2 · s-sidin-news-digest · s-realdmx-sid-players · s-realdmx-fredgray-kimmel-whittaker · s-realdmx-audial-arts-fame-players · s-realdmx-hubbard-player · s-realdmx-galway-rambo-player · s-realdmx-ocean-dunn-hughes-driver · s-realdmx-bjerregaard-player · s-sidin05-hvmec · s-chordian-player-editor-notes · s-sidin12-ripping-trivia-arcade

source file wiki/entities/sidid.md · 2 unverified · graph