SNES: advanced arp macros and volume fix

This commit is contained in:
tildearrow 2022-09-27 03:57:35 -05:00
parent a545cbce2b
commit 43ed6c7878
1 changed files with 5 additions and 11 deletions

View File

@ -106,18 +106,9 @@ void DivPlatformSNES::tick(bool sysTick) {
} }
if (chan[i].std.arp.had) { if (chan[i].std.arp.had) {
if (!chan[i].inPorta) { if (!chan[i].inPorta) {
if (chan[i].std.arp.mode) { chan[i].baseFreq=NOTE_FREQUENCY(parent->calcArp(chan[i].note,chan[i].std.arp.val));
chan[i].baseFreq=NOTE_FREQUENCY(chan[i].std.arp.val);
} else {
chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note+chan[i].std.arp.val);
}
} }
chan[i].freqChanged=true; chan[i].freqChanged=true;
} else {
if (chan[i].std.arp.mode && chan[i].std.arp.finished) {
chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note);
chan[i].freqChanged=true;
}
} }
if (chan[i].std.duty.had) { if (chan[i].std.duty.had) {
noiseFreq=chan[i].std.duty.val; noiseFreq=chan[i].std.duty.val;
@ -359,7 +350,10 @@ int DivPlatformSNES::dispatch(DivCommand c) {
case DIV_CMD_VOLUME: case DIV_CMD_VOLUME:
if (chan[c.chan].vol!=c.value) { if (chan[c.chan].vol!=c.value) {
chan[c.chan].vol=c.value; chan[c.chan].vol=c.value;
writeOutVol(c.chan); if (!chan[c.chan].std.vol.has) {
chan[c.chan].outVol=c.value;
writeOutVol(c.chan);
}
} }
break; break;
case DIV_CMD_GET_VOLUME: case DIV_CMD_GET_VOLUME: