dev131 - SNES: add more sustain modes and D2

This commit is contained in:
tildearrow 2022-12-24 18:03:57 -05:00
parent 3bea6ee891
commit 0914359063
7 changed files with 125 additions and 67 deletions

View file

@ -607,10 +607,23 @@ void DivPlatformSNES::writeEnv(int ch) {
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);
chWrite(ch,6,(chan[ch].state.s<<5)|(chan[ch].state.d2&31));
} else {
switch (chan[ch].state.sus) {
case 1: // dec linear
chWrite(ch,7,0x80|chan[ch].state.r);
chWrite(ch,5,0);
break;
case 2: // dec exp
chWrite(ch,7,0xa0|chan[ch].state.r);
chWrite(ch,5,0);
break;
case 3: // update r
chWrite(ch,6,(chan[ch].state.s<<5)|(chan[ch].state.r&31));
break;
default: // what?
break;
}
}
} else {
chWrite(ch,5,chan[ch].state.a|(chan[ch].state.d<<4)|0x80);