diff --git a/src/engine/platform/pce.cpp b/src/engine/platform/pce.cpp index e5c25db38..1afe9014f 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -55,9 +55,9 @@ void DivPlatformPCE::tick() { if (chan[i].std.hadArp) { if (!chan[i].inPorta) { if (chan[i].std.arpMode) { - chan[i].baseFreq=round(FREQ_BASE/pow(2.0f,((float)(chan[i].std.arp+24)/12.0f))); + chan[i].baseFreq=round(FREQ_BASE/pow(2.0f,((float)(chan[i].std.arp)/12.0f))); // noise - chWrite(i,0x07,chan[i].noise?(0x80|noiseFreq[(chan[i].std.arp+24)%12]):0); + chWrite(i,0x07,chan[i].noise?(0x80|noiseFreq[(chan[i].std.arp)%12]):0); } else { chan[i].baseFreq=round(FREQ_BASE/pow(2.0f,((float)(chan[i].note+chan[i].std.arp-12)/12.0f))); chWrite(i,0x07,chan[i].noise?(0x80|noiseFreq[(chan[i].note+chan[i].std.arp-12)%12]):0); diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 4f1f7913b..5c01f9dbe 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -284,6 +284,7 @@ void DivEngine::processRow(int i, bool afterDelay) { if (effectVal==0) { chan[i].portaNote=-1; chan[i].portaSpeed=-1; + dispatchCmd(DivCommand(DIV_CMD_PRE_PORTA,i,false)); } else { chan[i].portaNote=chan[i].note; chan[i].portaSpeed=effectVal;