SPCs that make heavy use of Echo feature
Moderator: Moderators
Forum rules
- For making cartridges of your Super NES games, see Reproduction.
SPCs that make heavy use of Echo feature
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/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Donkey Kong Country
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Final Fantasy 4
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Seiken Densetsu 2
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Seiken Densetsu 3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Seiken Densetsu 3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... 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/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Donkey Kong Country
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Final Fantasy 4
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Seiken Densetsu 2
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Seiken Densetsu 3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Seiken Densetsu 3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... 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.
Last edited by jwdonal on Tue Aug 11, 2015 1:10 am, edited 1 time in total.
-
KungFuFurby
- Posts: 264
- Joined: Wed Jul 09, 2008 8:46 pm
Re: SPCs that make heavy use of Echo feature
I nominate for your testing pleasure...
...in retrospect, I could also just quickly make one that allows the echo to fully decay with no FIR tap filters involved.
- Addams Family (the entire soundtrack, and you even have a few variations in the EDL!)
- Fire Striker (Staff Roll)
- Itou Hatasu Rokudan no Shougi Doujou (the entire soundtrack)
- Harapeko Bakka/Hungry Dinosaurs (the entire soundtrack)
- Super Mahjong 3: Karakuchi (Lose and Win... and yes, expect the echo to cut off, too)
- The Simpsons ~ Bart's Nightmare (Indiana Bart and the echo version of Collect Paper)
- Yume Meikyuu: Kigurumi Daibouken (Fantastic Towers, The Strange World of Dreams, Peaceful Victory, Time to Wake Up!)
...in retrospect, I could also just quickly make one that allows the echo to fully decay with no FIR tap filters involved.
Re: SPCs that make heavy use of Echo feature
Kick ass! I'll make recordings of these later tonight after work and post them here. Thanks again for the help KungFuFurby!
Re: SPCs that make heavy use of Echo feature
Okay, so both of the Simpsons tracks totally broke my SPC player. Haha. However, I'm not sure if it's actually a bug. I'm wondering if it might just be because I don't have the FIR filter implemented yet. I don't know for sure since I haven't done any actual debugging yet.
The Simpsons ~ Bart's Nightmare
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_BAD.mp3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_BAD.mp3
All of the other tracks worked fine. Specifically, "The Strange World of Dreams" is extremely unique and interesting in the way it uses the echo region. I don't know if you noticed, but it starts out with the echo feature enabled and running the echo buffer at the end of memory, but then in the next (different sounding) part of the tune it switches the echo buffer off, but _reads_/plays the data in the echo buffer as non-echoing normal data. Crazy.
The Addams Family
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Hungry Dinosaurs
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Super Mahjong 3: Karakuchi
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Yume Meikyuu: Kigurumi Daibouken
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
The Simpsons ~ Bart's Nightmare
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_BAD.mp3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_BAD.mp3
All of the other tracks worked fine. Specifically, "The Strange World of Dreams" is extremely unique and interesting in the way it uses the echo region. I don't know if you noticed, but it starts out with the echo feature enabled and running the echo buffer at the end of memory, but then in the next (different sounding) part of the tune it switches the echo buffer off, but _reads_/plays the data in the echo buffer as non-echoing normal data. Crazy.
The Addams Family
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Hungry Dinosaurs
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Super Mahjong 3: Karakuchi
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
Yume Meikyuu: Kigurumi Daibouken
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... o_echo.mp3
https://dl.dropboxusercontent.com/u/362 ... w_echo.mp3
-
KungFuFurby
- Posts: 264
- Joined: Wed Jul 09, 2008 8:46 pm
Re: SPCs that make heavy use of Echo feature
Oh, snap! That's my mistake... The Simpsons: Bart's Nightmare uses the FIR filter feature. Hey, at least I got your first set of testing files for that particular echo feature.
Re: SPCs that make heavy use of Echo feature
You really know how to pick some awesome tracks for testing. One of the Addams Family tracks revealed a bug in my code that none of the other 37 tracks I tested found. Thanks a lot for these! I will be implementing the FIR filter soon... Feel free to suggest more tracks that require the FIR in order to work properly. I'll start out with The Simpsons tracks though.
-
KungFuFurby
- Posts: 264
- Joined: Wed Jul 09, 2008 8:46 pm
Re: SPCs that make heavy use of Echo feature
I really don't know which SNES games would even contain the use of FIR tap filters... we'll start here.
https://app.box.com/s/2f5abf1edc0b7b0bddae
https://app.box.com/s/a6ts9b1u5z3ie7firiyt
And a couple more to add to the mix (also mine, but these allow you to test your echo decay to the fullest extent because they're non-looping... and the echo doesn't get cut off)...
https://app.box.com/s/hbubl3nz2rwyyji14jhynnynv6kqb0xv
https://app.box.com/s/dp4icjlewljzev7g78tqptft83r32sux
- Ren and Stimpy ~ Time Warp (Big House Blues, Tocatta and Fugue, Continue & Game Over, Night on Bald Mountain)
https://app.box.com/s/2f5abf1edc0b7b0bddae
https://app.box.com/s/a6ts9b1u5z3ie7firiyt
And a couple more to add to the mix (also mine, but these allow you to test your echo decay to the fullest extent because they're non-looping... and the echo doesn't get cut off)...
https://app.box.com/s/hbubl3nz2rwyyji14jhynnynv6kqb0xv
https://app.box.com/s/dp4icjlewljzev7g78tqptft83r32sux
Re: SPCs that make heavy use of Echo feature
I just finished implementing the FIR last night and The Simpsons tracks are now correct. I'll post some wav files very soon! Thanks for the track tips!
Also, for future reference for anyone else looking here, nearly every single track in Star Ocean requires the FIR filter to be implemented in order to work properly. Otherwise, you'll get the same "escaping" effect that you hear in The Simpsons tracks.
Also, for future reference for anyone else looking here, nearly every single track in Star Ocean requires the FIR filter to be implemented in order to work properly. Otherwise, you'll get the same "escaping" effect that you hear in The Simpsons tracks.
Re: SPCs that make heavy use of Echo feature
Now that I think about it, I've come up with an approximation for those who don't feel ready to fully implement FIR just yet. Internally multiply the feedback level (EFB, $0D) by the sum of FIR values ($0F, $1F, ..., $7F) and divide by 128. How do the Bart's Nightmare and Star Ocean tracks sound with this FIR hack?
Re: SPCs that make heavy use of Echo feature
Cool idea. I'll let you know and post the results but it won't be until much later tonight after work. Thanks!
Re: SPCs that make heavy use of Echo feature
Here's the results of my FIR implementation. Seems to be working perfectly.
Cheetahmen - Jungle
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
Jingle with Magic 1
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
Jingle with Magic 2
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
Ren and Stimpy - Toccata and Fugue
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
The Simpsons - Collect Paper
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
Star Ocean - Calm Disrupted
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
Thanks for the track tips KFF!
The Simpsons - Collect Paper
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... es_mod.mp3
I'm actually going to go ahead and implement that logic in my code permanently if I ever disable the FIR. That way I can still listen to all the tracks without them escaping.
Once I get all the code polished up then all that's left is the noise generator! Then I'll be 100% done! W00t!
Cheetahmen - Jungle
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
Jingle with Magic 1
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
Jingle with Magic 2
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
Ren and Stimpy - Toccata and Fugue
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
The Simpsons - Collect Paper
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
Star Ocean - Calm Disrupted
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
Thanks for the track tips KFF!
It actually worked really well. It doesn't sound exactly the same of course but it certainly keeps the tracks from escaping. Take a listen...tepples wrote:Now that I think about it, I've come up with an approximation for those who don't feel ready to fully implement FIR just yet. Internally multiply the feedback level (EFB, $0D) by the sum of FIR values ($0F, $1F, ..., $7F) and divide by 128. How do the Bart's Nightmare and Star Ocean tracks sound with this FIR hack?
The Simpsons - Collect Paper
https://dl.dropboxusercontent.com/u/362 ... ho_fir.mp3
https://dl.dropboxusercontent.com/u/362 ... es_mod.mp3
I'm actually going to go ahead and implement that logic in my code permanently if I ever disable the FIR. That way I can still listen to all the tracks without them escaping.
Once I get all the code polished up then all that's left is the noise generator! Then I'll be 100% done! W00t!
Re: SPCs that make heavy use of Echo feature
Thanks. This confirms my hypothesis that Bart's Nightmare "bakes" its echo feedback amount into the FIR filter rather than using the EFB register. Taking the sum of all FIR values calculates the limit of the FIR's gain as frequency decreases toward DC (0 Hz). While the filter in Bart's Nightmare has a gain less than unity, some games go the other way. Fullsnes states that some games use the filter [-1,8,23,36,36,23,8,-1], reportedly an example in the official docs. Its sum is 132, slightly greater than unity DC gain (128), and games using it rely on EFB to attenuate it.jwdonal wrote:It actually worked really well. It doesn't sound exactly the same of course but it certainly keeps the tracks from escaping.tepples wrote:Internally multiply the feedback level (EFB, $0D) by the sum of FIR values ($0F, $1F, ..., $7F) and divide by 128. How do the Bart's Nightmare and Star Ocean tracks sound with this FIR hack?
-
KungFuFurby
- Posts: 264
- Joined: Wed Jul 09, 2008 8:46 pm
Re: SPCs that make heavy use of Echo feature
You rang on the noise generator? I've got a couple of tracks for you to test that magic on (one of them is rather quick with the noise and it's a one-shot deal, but it's good enough):
Air Cavalry ~ Good Luck and Good Hunting
Equinox ~ Title (Short Intro)
Air Cavalry ~ Good Luck and Good Hunting
Equinox ~ Title (Short Intro)
Re: SPCs that make heavy use of Echo feature
As always, thanks for the track recommendations KFF! I'll let you know how it turns out.
UPDATE: This thread is continued here.
UPDATE: This thread is continued here.