From 0caaa1629cbee17bfa9ded7cd691356ce8f82ebc Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 17 May 2021 00:36:09 -0500 Subject: [PATCH] are you kidding me? --- src/engine/macroInt.cpp | 8 ++++---- src/engine/platform/dummy.cpp | 2 ++ src/engine/platform/sms.cpp | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/engine/macroInt.cpp b/src/engine/macroInt.cpp index 5a305e0f9..e78264e95 100644 --- a/src/engine/macroInt.cpp +++ b/src/engine/macroInt.cpp @@ -6,7 +6,7 @@ void DivMacroInt::next() { hadVol=hasVol; if (hasVol) { vol=ins->std.volMacro[volPos++]; - if (volPos>=ins->std.volMacroLen) { + if (volPos>=ins->std.volMacroLen && ins->std.volMacroLoopstd.volMacroLen) { if (ins->std.volMacroLoop>=0) { volPos=ins->std.volMacroLoop; } else { @@ -19,7 +19,7 @@ void DivMacroInt::next() { if (hasArp) { arp=ins->std.arpMacro[arpPos++]; if (arpPos>=ins->std.arpMacroLen) { - if (ins->std.arpMacroLoop>=0) { + if (ins->std.arpMacroLoop>=0 && ins->std.arpMacroLoopstd.arpMacroLen) { arpPos=ins->std.arpMacroLoop; } else { hasArp=false; @@ -30,7 +30,7 @@ void DivMacroInt::next() { hadDuty=hasDuty; if (hasDuty) { duty=ins->std.dutyMacro[dutyPos++]; - if (dutyPos>=ins->std.dutyMacroLen) { + if (dutyPos>=ins->std.dutyMacroLen && ins->std.dutyMacroLoopstd.dutyMacroLen) { if (ins->std.dutyMacroLoop>=0) { dutyPos=ins->std.dutyMacroLoop; } else { @@ -42,7 +42,7 @@ void DivMacroInt::next() { hadWave=hasWave; if (hasWave) { wave=ins->std.waveMacro[wavePos++]; - if (wavePos>=ins->std.waveMacroLen) { + if (wavePos>=ins->std.waveMacroLen && ins->std.waveMacroLoopstd.waveMacroLen) { if (ins->std.waveMacroLoop>=0) { wavePos=ins->std.waveMacroLoop; } else { diff --git a/src/engine/platform/dummy.cpp b/src/engine/platform/dummy.cpp index e2ab7c226..9b6cc2b02 100644 --- a/src/engine/platform/dummy.cpp +++ b/src/engine/platform/dummy.cpp @@ -1,4 +1,5 @@ #include "dummy.h" +#include #include void DivPlatformDummy::acquire(int& l, int& r) { @@ -16,6 +17,7 @@ void DivPlatformDummy::tick() { } int DivPlatformDummy::dispatch(DivCommand c) { + printf("command: %d %d %d %d\n",c.cmd,c.chan,c.value,c.value2); switch (c.cmd) { case DIV_CMD_NOTE_ON: chan[c.chan].freq=16.4f*pow(2.0f,((float)c.value/12.0f)); diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index f72729873..8d305763d 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -15,7 +15,7 @@ void DivPlatformSMS::tick() { if (chan[i].std.hadVol) sn->write(0x90|(i<<5)|(15-((chan[i].vol*chan[i].std.vol)>>4))); if (chan[i].std.hadArp) { if (chan[i].std.arpMode) { - chan[i].baseFreq=round(1712.0f/pow(2.0f,((float)(chan[i].std.arp-12)/12.0f))); + chan[i].baseFreq=round(1712.0f/pow(2.0f,((float)(chan[i].std.arp)/12.0f))); } else { chan[i].baseFreq=round(1712.0f/pow(2.0f,((float)(chan[i].note+chan[i].std.arp-12)/12.0f))); }