Hello all,
I finally got around to implementing the echo processing pipeline in my FPGA SPC player. It's working extremely well and I'm getting binary identical output to Blargg's SPC emulator. It's pretty awesome how much fidelity the echo feature adds to the tracks. I thought the tracks sounded really good without the echo feature, but with the echo feature they sound amazing.
The echo processing pipeline in the SNES S-DSP chip is really difficult to implement properly. Conceptually/behaviorally its pretty easy to understand how it works at a high-level but the devil is in the details. The bit manipulation is a MAJOR p.i.t.a. to keep straight. In some ways its even worse than the standard per-voice pipeline bit manipulation - as hard as that is to believe. Mostly because it's super easy to screw it up and even easier to think that you've got it down perfect when you really don't. Also, you can implement the whole thing and it will sound right for lots of games but there are a huge number of multiplication overflow corner cases that will end up not being right.
Here are some sample tracks recorded directly off my FPGA...
Chrono Trigger
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_ct-304_wo_echo.mp3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_ct-304_w_echo.mp3
Donkey Kong Country
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_dkc-05_wo_echo.mp3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_dkc-05_w_echo.mp3
Final Fantasy 4
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_ff4-01_wo_echo.mp3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_ff4-01_w_echo.mp3
Seiken Densetsu 2
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_sd2-03_wo_echo.mp3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_sd2-03_w_echo.mp3
Seiken Densetsu 3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_sd3-214_wo_echo.mp3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_sd3-214_w_echo.mp3
Seiken Densetsu 3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_sd3-314_wo_echo.mp3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_sd3-314_w_echo.mp3
Does anyone know of a few other tracks that make heavy use of the echo feature. That is, a track where the echo feature is extremely noticeable? They would be useful for more testing.
Also note that I do _not_ have the 8-tap FIR implemented yet, I only have the echo output, echo buffer, and echo feedback loop without the FIR block installed. I'll implement the FIR as soon as I've verified my echo pipeline with lots more test tracks.
I finally got around to implementing the echo processing pipeline in my FPGA SPC player. It's working extremely well and I'm getting binary identical output to Blargg's SPC emulator. It's pretty awesome how much fidelity the echo feature adds to the tracks. I thought the tracks sounded really good without the echo feature, but with the echo feature they sound amazing.
The echo processing pipeline in the SNES S-DSP chip is really difficult to implement properly. Conceptually/behaviorally its pretty easy to understand how it works at a high-level but the devil is in the details. The bit manipulation is a MAJOR p.i.t.a. to keep straight. In some ways its even worse than the standard per-voice pipeline bit manipulation - as hard as that is to believe. Mostly because it's super easy to screw it up and even easier to think that you've got it down perfect when you really don't. Also, you can implement the whole thing and it will sound right for lots of games but there are a huge number of multiplication overflow corner cases that will end up not being right.
Here are some sample tracks recorded directly off my FPGA...
Chrono Trigger
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_ct-304_wo_echo.mp3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_ct-304_w_echo.mp3
Donkey Kong Country
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_dkc-05_wo_echo.mp3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_dkc-05_w_echo.mp3
Final Fantasy 4
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_ff4-01_wo_echo.mp3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_ff4-01_w_echo.mp3
Seiken Densetsu 2
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_sd2-03_wo_echo.mp3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_sd2-03_w_echo.mp3
Seiken Densetsu 3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_sd3-214_wo_echo.mp3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_sd3-214_w_echo.mp3
Seiken Densetsu 3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_sd3-314_wo_echo.mp3
https://dl.dropboxusercontent.com/u/36237540/SNES/jwdonal/2015_07_12_sd3-314_w_echo.mp3
Does anyone know of a few other tracks that make heavy use of the echo feature. That is, a track where the echo feature is extremely noticeable? They would be useful for more testing.
Also note that I do _not_ have the 8-tap FIR implemented yet, I only have the echo output, echo buffer, and echo feedback loop without the FIR block installed. I'll implement the FIR as soon as I've verified my echo pipeline with lots more test tracks.