Cite as
SNESdev Wiki, “S-DSP registers”
Original
https://snes.nesdev.org/wiki/S-DSP_registers
sha256
39b6c0f8f6d54046d107f3bc4879f450f553d8ad2154efda61de7aa92d84aaa5
Version
oldid 1428
Archived
https://web.archive.org/web/20260214173504/https://snes.nesdev.org/wiki/S-DSP_registers
Accessed
2026-11-08
Licence
CC0 (the wiki's footer, "Content is available under CC0 Public Domain unless otherwise noted")
Credit
SNESdev Wiki editors (snes.nesdev.org); see the page history.
Notes
Read from revision 1428 (2026-02-01, the latest), held by the Wayback capture of 2026-02-14. Used for the sound chip's echo registers (EVOLL/EVOLR, EFB, EON, FLG, ESA, EDL, the FIR taps) and the main volume.

Cited on

No page cites it yet.

Claims (5)

The songs set the echo themselves, through four commands in their track data. $F5 sets which voices echo and the left and right echo volumes; $F6 sets the flag that disables echo writes; $F7 sets the echo delay, the feedback, and one of four 8-tap filters; $F8 slides the two echo volumes to new values over a given number of ticks. A change of delay first zeroes both echo volumes, the feedback, and the echo voices, disables echo writes, and then writes the new delay. The echo buffer starts at $D000 − $800 × the delay and is $800 bytes long per step of delay, so it ends at $D000, where the songs' pointer table begins (computed). The sound program starts with a delay of 1, 512 samples, and a main volume of $60 on both sides. The first filter is the identity filter, which leaves the echo unchanged.EON - Echo enable ($4D)EVOLL, EVOLR - Echo volume ($2C, $3C)EFB - Echo feedback ($0D)FLG - Flags register ($6C)EDL - Echo delay ($7D)EDL - Echo delay ($7D)ESA - Echo start address ($6D)MVOLL, MVOLR - Main volume ($0C, $1C)FIRx - Echo FIR filter coefficients ($xF)FIRx - Echo FIR filter coefficients ($xF)Code
In the first US release, the game loads samples into audio RAM a list at a time and keeps a 255-byte map from each sample's number to its slot. It points the sound chip's sample directory at $3200, 4 bytes a slot (the sample's start and its loop point), and puts sample data from $3300. A list of 29 samples loads once, the first time either of the two routines that ask for it runs; after it, each song's own list loads in its place, starting where the 29 end, unless the same list is already loaded. For each sample the game sends its data, then its directory entry, and writes its slot into the map, which it then copies to audio RAM at $04E0. The driver's instrument command reads that map.DIR - Sample directory page ($5D)Code
In the first US release, the sound driver reads each track as bytes: from $81 up a note, followed by its length, where the note byte plus the track's transpose picks the entry in a table of 61 pitches; $80 a rest; and below $80 one of 49 commands, $00 to $30, through a jump table. A note writes the voice's volume, pitch, sample, and envelope to the sound chip and keys the voice on. The rows give each command's length in bytes, as its handler moves the track on, and what it sets; four of the commands set parameters for effects the driver runs each tick, whose use isn't read here.S-DSP global register summaryS-DSP voice register summaryCode
In the first US release, every song gets the same echo buffer and delay: when it restarts, the driver sets the sound chip's echo delay to 4, which makes an 8,192-byte buffer (computed), and its buffer to start at $DF00, and clears the 8,192 bytes from there (computed). It also sets echo volume, feedback, and every voice's echo bit to 0, and starts the song with echo writing off. A song turns echo on with its own commands: $15 gives the feedback and the echo volume and turns writing on, $16 and $17 set echo per voice, and $18 the filter.S-DSP global register summaryEDL - Echo delay ($7D)FLG - Flags register ($6C)Code
In the first US release, sound effects play on the same eight voices as the music: the driver runs 16 tracks, the music's eight and eight for effects, and effect track 8 + n uses voice n. An effect that starts takes its voice over, turning its noise and echo bits off; while it plays, the music track for that voice keeps its place, and a music note on that voice writes nothing to it. When the effect ends the voice goes back to the music, with its echo bit set again if the music had turned echo on.S-DSP global register summaryCode