SNES: fix effective sustain mode

This commit is contained in:
tildearrow 2022-10-23 03:17:30 -05:00
parent 1868e48c92
commit 6ceac62015
1 changed files with 9 additions and 3 deletions

View File

@ -596,10 +596,16 @@ void DivPlatformSNES::writeOutVol(int ch) {
void DivPlatformSNES::writeEnv(int ch) {
if (chan[ch].state.useEnv) {
chWrite(ch,5,chan[ch].state.a|(chan[ch].state.d<<4)|0x80);
if (chan[ch].state.sus && chan[ch].active) {
chWrite(ch,6,chan[ch].state.s<<5);
if (chan[ch].state.sus) {
if (chan[ch].active) {
chWrite(ch,5,chan[ch].state.a|(chan[ch].state.d<<4)|0x80);
chWrite(ch,6,chan[ch].state.s<<5);
} else { // dec linear
chWrite(ch,7,0x80|chan[ch].state.r);
chWrite(ch,5,0);
}
} else {
chWrite(ch,5,chan[ch].state.a|(chan[ch].state.d<<4)|0x80);
chWrite(ch,6,chan[ch].state.r|(chan[ch].state.s<<5));
}
} else {