David Whittaker's player (the Panther driver) cheat sheet
From David Whittaker's player (the Panther driver) · print · built 2026-08-31
Reference
Cheat sheet#
All from the Panther disassembly (source: s-realdmx-fredgray-kimmel-whittaker).
Track = list of pattern addresses, !wo 0 loops it; the three tracks have different lengths (53 / 65 / 53 entries). Pattern = byte stream; FLAGS is cleared at every note, so arpeggio, slide and drum must be re-issued per note.
| byte | meaning |
|---|---|
$00–$7f | note (index into a 95-entry table, $0116 = C-0); ends the step |
$80–$93 | command (below) |
$b8–$bf | tempo = value − $b7 (1–8 frames per tick) |
$c0–$cc | arpeggio list 0–12 |
$d0 aa ss | ADSR follows (two bytes) |
$e0–$ff | duration = value − $df (1–32 ticks) |
| command | effect |
|---|---|
$80 | hold the current note for another duration (no retrigger) |
$81 / $82 | vibrato off / on |
$83 v | volume / mode byte |
$84 lo,hi,delay / $85 | slide down / up: after delay frames the step accumulates every frame (a quadratic sweep) |
$86 / $87 | bend down / up one semitone per tick |
$88 | end of pattern |
$89 speed,depth | vibrato parameters |
$8a / $8b / $8c / $8d | waveform noise / pulse / sawtooth / triangle |
$8e | drum: on odd frames control $80 (noise) with the frequency high byte + $31 |
$8f n | pulse width high byte |
$90 min,max,speed | pulse bounce between two high bytes |
$91 | stop music |
$92 / $93 | triangle + ring modulation / pulse + sync |
Arpeggio lists (one step per frame; any byte ≥ $54 restarts): $00,$03,$07,$88 · $00,$04,$07,$88 · $00,$03,$07,$0c,$88 · $00,$04,$07,$0c,$88 · $07,$0c,$0f,$88 · $07,$0c,$10,$88 · $03,$07,$0c,$88 · $04,$07,$0c,$88 · $00,$0c,$88 · $00,$04,$88 · $00,$03,$88 · $00,$05,$88 · $00,$07,$88 (chord-arpeggio).
"Instruments" as they appear in the data: PC_PULSE,$90,$02,$08,$28,$d0,$0a,$40 (pulse bouncing between $02xx and $08xx at speed $28, AD $0a, SR $40); $92,$90,$02,$08,$14,$89,$7f,$fe,$82,$d0,$df,$00,$ff,$84,$80,$00,$01 (ring-triangle, pulse bounce, deep vibrato, slide down — a siren); $8d,$89,$28,$50,$82,$d0,$0d,$70 / $f7,$c0,$3c,$e7,$c1,$3a (triangle, vibrato, then 24 ticks of a minor arpeggio on $3c and 8 of a major one on $3a); $be,$d0,$00,$00,$ff,$80,$88 (tempo 7, ADSR $00/$00, 32 ticks, hold — a silent pattern).