# SID 6581 Register Map — Quick Reference SID base address: $D400 (54272) All registers write-only except $D419–$D41C. ## Voice Registers | Offset | Addr | Dec | Voice | Name | Description | |--------|------|-----|-------|------|-------------| | +0 | $D400 | 54272 | 1 | FRELO1 | Freq low | | +1 | $D401 | 54273 | 1 | FREHI1 | Freq high | | +2 | $D402 | 54274 | 1 | PWLO1 | Pulse width low | | +3 | $D403 | 54275 | 1 | PWHI1 | Pulse width high (bits 3-0) | | +4 | $D404 | 54276 | 1 | VCREG1 | Control register | | +5 | $D405 | 54277 | 1 | ATDCY1 | Attack/Decay | | +6 | $D406 | 54278 | 1 | SUREL1 | Sustain/Release | | +7 | $D407 | 54279 | 2 | FRELO2 | Freq low | | +8 | $D408 | 54280 | 2 | FREHI2 | Freq high | | +9 | $D409 | 54281 | 2 | PWLO2 | Pulse width low | | +A | $D40A | 54282 | 2 | PWHI2 | Pulse width high | | +B | $D40B | 54283 | 2 | VCREG2 | Control register | | +C | $D40C | 54284 | 2 | ATDCY2 | Attack/Decay | | +D | $D40D | 54285 | 2 | SUREL2 | Sustain/Release | | +E | $D40E | 54286 | 3 | FRELO3 | Freq low | | +F | $D40F | 54287 | 3 | FREHI3 | Freq high | | +10 | $D410 | 54288 | 3 | PWLO3 | Pulse width low | | +11 | $D411 | 54289 | 3 | PWHI3 | Pulse width high | | +12 | $D412 | 54290 | 3 | VCREG3 | Control register | | +13 | $D413 | 54291 | 3 | ATDCY3 | Attack/Decay | | +14 | $D414 | 54292 | 3 | SUREL3 | Sustain/Release | ## Filter and Global Registers | Offset | Addr | Dec | Name | Description | |--------|------|-----|------|-------------| | +15 | $D415 | 54293 | SIGVOL | Filter cutoff freq low (bits 2-0) | | +16 | $D416 | 54294 | FRESHI | Filter cutoff freq high byte | | +17 | $D417 | 54295 | RESON | Resonance (7-4) / filter routing (2-0) | | +18 | $D418 | 54296 | SIGVOL | Filter mode (7-4) / volume (3-0) | | +19 | $D419 | 54297 | POTX | Paddle X (READ-ONLY) | | +1A | $D41A | 54298 | POTY | Paddle Y (READ-ONLY) | | +1B | $D41B | 54299 | RANDOM | Voice 3 oscillator (READ-ONLY, random) | | +1C | $D41C | 54300 | ENV3 | Voice 3 envelope (READ-ONLY) | ## Control Register Bits (VCREG) | Bit | Name | Description | |-----|------|-------------| | 7 | NOISE | Noise waveform | | 6 | PULSE | Pulse waveform | | 5 | SAW | Sawtooth waveform | | 4 | TRI | Triangle waveform | | 3 | TEST | Test bit (disables osc) | | 2 | RING | Ring modulation | | 1 | SYNC | Sync to previous voice | | 0 | GATE | 1=start AD, 0=start Release | ## ATDCY (Attack/Decay) | Bits | Range | Description | |------|-------|-------------| | 7-4 | 0-15 | Attack rate | | 3-0 | 0-15 | Decay rate | ## SUREL (Sustain/Release) | Bits | Range | Description | |------|-------|-------------| | 7-4 | 0-15 | Sustain level (15=max) | | 3-0 | 0-15 | Release rate | ## Filter Mode Register ($D418) Bits | Bit | Name | Description | |-----|------|-------------| | 7 | 3OFF | Disconnect voice 3 from output | | 6 | HP | High-pass filter | | 5 | BP | Band-pass filter | | 4 | LP | Low-pass filter | | 3-0 | VOL | Master volume (0-15) | ## Frequency Formula ``` Register = (Hz × 16777216) / ClockHz NTSC: ClockHz = 1,022,730 Register = Hz / 0.0609594 PAL: ClockHz = 985,248 Register = Hz / 0.0587721 ``` ## Note Frequencies (NTSC hex register values) | Note | Freq | Hex | | Note | Freq | Hex | |------|------|-----|-|------|------|-----| | C3 | 130.8 | $086C | | C4 | 261.6 | $10D9 | | D3 | 146.8 | $0975 | | D4 | 293.7 | $12EA | | E3 | 164.8 | $0A9B | | E4 | 329.6 | $1537 | | F3 | 174.6 | $0B40 | | F4 | 349.2 | $1680 | | G3 | 196.0 | $0C91 | | G4 | 392.0 | $1921 | | A3 | 220.0 | $0E16 | | A4 | 440.0 | $1CCC | | B3 | 246.9 | $0F9C | | B4 | 493.9 | $1F38 | | C5 | 523.3 | $21B3 | | C6 | 1046.5 | $4366 |