diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index e85bc7688..f00a521bc 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -493,8 +493,10 @@ int DivPlatformGenesis::dispatch(DivCommand c) { } dacPos=0; dacPeriod=0; - chan[c.chan].baseFreq=NOTE_FREQUENCY(c.value); - chan[c.chan].freqChanged=true; + if (c.value!=DIV_NOTE_NULL) { + chan[c.chan].baseFreq=NOTE_FREQUENCY(c.value); + chan[c.chan].freqChanged=true; + } chan[c.chan].furnaceDac=true; } else { // compatible mode if (c.value!=DIV_NOTE_NULL) { diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index 9f56e4e56..e99a3e29e 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -274,8 +274,8 @@ int DivPlatformNES::dispatch(DivCommand c) { } dacPos=0; dacPeriod=0; - chan[c.chan].baseFreq=parent->song.tuning*pow(2.0f,((float)(c.value+3)/12.0f)); if (c.value!=DIV_NOTE_NULL) { + chan[c.chan].baseFreq=parent->song.tuning*pow(2.0f,((float)(c.value+3)/12.0f)); chan[c.chan].freqChanged=true; chan[c.chan].note=c.value; } diff --git a/src/engine/platform/segapcm.cpp b/src/engine/platform/segapcm.cpp index b87ee9a86..84ec00c37 100644 --- a/src/engine/platform/segapcm.cpp +++ b/src/engine/platform/segapcm.cpp @@ -142,8 +142,10 @@ int DivPlatformSegaPCM::dispatch(DivCommand c) { break; } chan[c.chan].pcm.pos=0; - chan[c.chan].baseFreq=(c.value<<6); - chan[c.chan].freqChanged=true; + if (c.value!=DIV_NOTE_NULL) { + chan[c.chan].baseFreq=(c.value<<6); + chan[c.chan].freqChanged=true; + } chan[c.chan].furnacePCM=true; if (dumpWrites) { // Sega PCM writes DivSample* s=parent->getSample(chan[c.chan].pcm.sample);