diff --git a/src/engine/platform/es5506.cpp b/src/engine/platform/es5506.cpp index 180c0d3fb..5b84c14cb 100644 --- a/src/engine/platform/es5506.cpp +++ b/src/engine/platform/es5506.cpp @@ -167,7 +167,7 @@ void DivPlatformES5506::acquire(short* bufL, short* bufR, size_t start, size_t l bufL[h]=es5506.lout(0); bufR[h]=es5506.rout(0); for (int i=0; i<32; i++) { - oscBuf[i]->data[oscBuf[i]->needle++]=chan[i].oscOut; + oscBuf[i]->data[oscBuf[i]->needle++]=(short)(chan[i].oscOut&0xffff); } } } @@ -179,7 +179,7 @@ void DivPlatformES5506::e_pin(bool state) if (es5506.voice_update()) { chan[prevChanCycle].lOut=es5506.voice_lout(prevChanCycle); chan[prevChanCycle].rOut=es5506.voice_rout(prevChanCycle); - chan[prevChanCycle].oscOut=(chan[prevChanCycle].lOut+chan[prevChanCycle].rOut)>>5; + chan[prevChanCycle].oscOut=CLAMP_VAL((chan[prevChanCycle].lOut+chan[prevChanCycle].rOut)>>5,-32768,32767); if (es5506.voice_end()) { if (prevChanCycle<31) { for (int c=31; c>prevChanCycle; c--) { @@ -404,11 +404,11 @@ void DivPlatformES5506::tick(bool sysTick) { } } if (chan[i].std.ex8.had) { - if (chan[i].envelope.k1Slow!=(chan[i].std.ex8.val&1)) { + if (chan[i].envelope.k1Slow!=(bool)(chan[i].std.ex8.val&1)) { chan[i].envelope.k1Slow=chan[i].std.ex8.val&1; chan[i].envChanged.k1Ramp=1; } - if (chan[i].envelope.k2Slow!=(chan[i].std.ex8.val&2)) { + if (chan[i].envelope.k2Slow!=(bool)(chan[i].std.ex8.val&2)) { chan[i].envelope.k2Slow=chan[i].std.ex8.val&2; chan[i].envChanged.k2Ramp=1; } diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index c979093a1..0cb74591f 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -2499,7 +2499,9 @@ void FurnaceGUI::drawInsEdit() { } ImGui::EndCombo(); } + ImGui::BeginDisabled(ins->amiga.useNoteMap||ins->amiga.useWave); P(ImGui::Checkbox("Reversed playback",&ins->amiga.reversed)); + ImGui::EndDisabled(); P(ImGui::Checkbox("Use wavetable (Amiga only)",&ins->amiga.useWave)); if (ins->amiga.useWave) { int len=ins->amiga.waveLen+1;