diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/mods/tfmx.cpp | 10 | ||||
-rw-r--r-- | sound/mods/tfmx.h | 3 |
2 files changed, 11 insertions, 2 deletions
diff --git a/sound/mods/tfmx.cpp b/sound/mods/tfmx.cpp index f813212a82..cf34a9715d 100644 --- a/sound/mods/tfmx.cpp +++ b/sound/mods/tfmx.cpp @@ -93,8 +93,9 @@ void Tfmx::interrupt() { channel.sfxLocked = (channel.customMacroPrio != 0); } - // apply timebased effects on Parameters - effects(channel); + // apply timebased effects on Parameters + if (channel.macroSfxRun > 0) + effects(channel); // see if we have to run the macro-program if (channel.macroRun) { @@ -107,6 +108,8 @@ void Tfmx::interrupt() { } Paula::setChannelPeriod(channel.paulaChannel, channel.period); + if (channel.macroSfxRun >= 0) + channel.macroSfxRun = 1; // TODO: handling pending DMAOff? } @@ -253,6 +256,9 @@ void Tfmx::macroRun(ChannelContext &channel) { continue; case 0x01: // DMA On + // TODO: Parameter macroPtr[1] - en-/disable effects + if (macroPtr[1]) + debug("Tfmx: DMA On %i", (int8)macroPtr[1]); channel.dmaIntCount = 0; if (deferWait) { // TODO diff --git a/sound/mods/tfmx.h b/sound/mods/tfmx.h index 695062762c..fccdf0aa01 100644 --- a/sound/mods/tfmx.h +++ b/sound/mods/tfmx.h @@ -146,6 +146,7 @@ public: uint16 macroReturnStep; uint8 macroLoopCount; bool macroRun; + int8 macroSfxRun; uint32 customMacro; uint8 customMacroIndex; @@ -232,6 +233,7 @@ private: channel.macroStep = 0; channel.macroWait = 0; channel.macroRun = true; + channel.macroSfxRun = 0; channel.macroLoopCount = 0xFF; channel.dmaIntCount = 0; } @@ -245,6 +247,7 @@ private: static void clearMacroProgramm(ChannelContext &channel) { channel.macroRun = false; + channel.macroSfxRun = 0; channel.dmaIntCount = 0; } |