After studying SNES docs, Anomie's docs, and Higan/Game-Music-Emu source code for days, I wrote up a flowchart for the structure of the SNES echo and FIR filter system. Can anyone verify that it's correct? Especially the FIR filter part?
http://bin.smwcentral.net/u/22354/snes-echo2.out.png
Note that _echoPointer, echoOffset, echoHistory, and calculateFir are references to Higan source code. EON is a flag (bits), EFB, EDL, and ESA are mono, and MVOL and EVOL are stereo registers.
EDIT: Note that ECEN flag must be enabled in order to write to the echo buffer.
Source material:
Nintendo docs: http://pikensoft.com/old/docs/Super_Famicomm_sound_manual_%28Ledi%29.txt
Anomie docs: https://37.muncher.se/bot/apudsp.txt
Higan source: https://gitlab.com/higan/higan
Repost of http://www.smwcentral.net/?p=viewthread&t=83780
http://bin.smwcentral.net/u/22354/snes-echo2.out.png
Note that _echoPointer, echoOffset, echoHistory, and calculateFir are references to Higan source code. EON is a flag (bits), EFB, EDL, and ESA are mono, and MVOL and EVOL are stereo registers.
EDIT: Note that ECEN flag must be enabled in order to write to the echo buffer.
Source material:
Nintendo docs: http://pikensoft.com/old/docs/Super_Famicomm_sound_manual_%28Ledi%29.txt
Anomie docs: https://37.muncher.se/bot/apudsp.txt
Higan source: https://gitlab.com/higan/higan
Repost of http://www.smwcentral.net/?p=viewthread&t=83780