My implimentation of the square channels involves keeping two seperate volume levels. One is the volume which is actually output by the channel... the other is the "decay volume", which is altered by the envelope/decay unit and is reset to $0F on $4003/$4007 writes. My understanding is that the decay volume is always altered by the decay unit, regardless of whether or not decay is enabled... however if decay is disabled, the output volume is unaltered by the decay unit.
My old implimentation was like the following:
on $4003 write:
- set decay volume to $0F
- if decay is enabled, set output volume to $0F as well
Doing it this way... someone (koitsu probably) brought Shin Onigashima.nsf to my attention. Apparently the first track on this nsf gets crackly and poppy with this implimentation. So with that in mind... I removed the above portion in my new implimentation and leave the output volume unaltered on $4003 writes (only updating the output volume on decay unit clocks). This solved the NSF problems.
However, someone else has brought this problem up with a test ROM... implying that the old implimentation was correct.
Can anyone give me a definative answer on which method is correct? is the Shin Onigashima NSF supposed to be crackly?
I tried the NSF and test ROM in Nintendulator and FCEU. Nintendulator seems to do my old implimentation -- it plays the test rom fine but crackles the nsf. FCEU, oddly, plays both fine... I don't know what it's doing.
Anyway, any help appreciated.
My old implimentation was like the following:
on $4003 write:
- set decay volume to $0F
- if decay is enabled, set output volume to $0F as well
Doing it this way... someone (koitsu probably) brought Shin Onigashima.nsf to my attention. Apparently the first track on this nsf gets crackly and poppy with this implimentation. So with that in mind... I removed the above portion in my new implimentation and leave the output volume unaltered on $4003 writes (only updating the output volume on decay unit clocks). This solved the NSF problems.
However, someone else has brought this problem up with a test ROM... implying that the old implimentation was correct.
Can anyone give me a definative answer on which method is correct? is the Shin Onigashima NSF supposed to be crackly?
I tried the NSF and test ROM in Nintendulator and FCEU. Nintendulator seems to do my old implimentation -- it plays the test rom fine but crackles the nsf. FCEU, oddly, plays both fine... I don't know what it's doing.
Anyway, any help appreciated.