diff --git a/src/engine/platform/arcade.cpp b/src/engine/platform/arcade.cpp index 84bb7e814..174a1f43a 100644 --- a/src/engine/platform/arcade.cpp +++ b/src/engine/platform/arcade.cpp @@ -423,7 +423,10 @@ int DivPlatformArcade::dispatch(DivCommand c) { } } } else { - chan[c.chan].pcm.sample=12*sampleBank+c.value%12; + if (c.value!=DIV_NOTE_NULL) { + chan[c.chan].note=c.value; + } + chan[c.chan].pcm.sample=12*sampleBank+chan[c.chan].note%12; if (chan[c.chan].pcm.sample>=parent->song.sampleLen) { chan[c.chan].pcm.sample=-1; if (dumpWrites) { diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index 9d58e935f..e1fcd4e4f 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -415,7 +415,10 @@ int DivPlatformGenesis::dispatch(DivCommand c) { chan[c.chan].freqChanged=true; chan[c.chan].furnaceDac=true; } else { // compatible mode - dacSample=12*sampleBank+c.value%12; + if (c.value!=DIV_NOTE_NULL) { + chan[c.chan].note=c.value; + } + dacSample=12*sampleBank+chan[c.chan].note%12; if (dacSample>=parent->song.sampleLen) { dacSample=-1; if (dumpWrites) addWrite(0xffff0002,0); diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index 3b7d32c8b..8105740d0 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -222,7 +222,10 @@ int DivPlatformNES::dispatch(DivCommand c) { chan[c.chan].keyOn=true; chan[c.chan].furnaceDac=true; } else { - dacSample=12*sampleBank+c.value%12; + if (c.value!=DIV_NOTE_NULL) { + chan[c.chan].note=c.value; + } + dacSample=12*sampleBank+chan[c.chan].note%12; if (dacSample>=parent->song.sampleLen) { dacSample=-1; if (dumpWrites) addWrite(0xffff0002,0); diff --git a/src/engine/platform/pce.cpp b/src/engine/platform/pce.cpp index d317fbbf5..175c66b00 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -209,7 +209,10 @@ int DivPlatformPCE::dispatch(DivCommand c) { //chan[c.chan].keyOn=true; chan[c.chan].furnaceDac=true; } else { - chan[c.chan].dacSample=12*sampleBank+c.value%12; + if (c.value!=DIV_NOTE_NULL) { + chan[c.chan].note=c.value; + } + chan[c.chan].dacSample=12*sampleBank+chan[c.chan].note%12; if (chan[c.chan].dacSample>=parent->song.sampleLen) { chan[c.chan].dacSample=-1; if (dumpWrites) addWrite(0xffff0002+(c.chan<<8),0);