diff options
-rw-r--r-- | sound/mods/tfmx.cpp | 14 | ||||
-rw-r--r-- | sound/mods/tfmx.h | 2 |
2 files changed, 12 insertions, 4 deletions
diff --git a/sound/mods/tfmx.cpp b/sound/mods/tfmx.cpp index 419dc34bef..ca6c277736 100644 --- a/sound/mods/tfmx.cpp +++ b/sound/mods/tfmx.cpp @@ -294,7 +294,7 @@ void Tfmx::macroRun(ChannelContext &channel) { continue; case 0x06: // Jump. Parameters: MacroIndex, MacroStep(W) - channel.macroIndex = macroPtr[1] & (kMaxMacroOffsets - 1); + // channel.macroIndex = macroPtr[1] & (kMaxMacroOffsets - 1); channel.macroOffset = _resource->macroOffset[macroPtr[1] & (kMaxMacroOffsets - 1)]; channel.macroStep = READ_BE_UINT16(¯oPtr[2]); channel.macroLoopCount = 0xFF; @@ -693,7 +693,7 @@ void Tfmx::noteCommand(const uint8 note, const uint8 param1, const uint8 param2, channel.prevNote = channel.note; channel.note = note; - channel.macroIndex = param1 & (kMaxMacroOffsets - 1); + // channel.macroIndex = param1 & (kMaxMacroOffsets - 1); channel.macroOffset = _resource->macroOffset[param1 & (kMaxMacroOffsets - 1)]; channel.relVol = param2 >> 4; channel.fineTune = (int8)param3; @@ -760,7 +760,8 @@ void Tfmx::haltMacroProgramm(ChannelContext &channel) { void Tfmx::unlockMacroChannel(ChannelContext &channel) { channel.customMacro = 0; - channel.customMacroPrio = false; + channel.customMacroIndex = 0; + channel.customMacroPrio = 0; channel.sfxLocked = false; channel.sfxLockTime = -1; } @@ -791,6 +792,13 @@ void Tfmx::stopSongImpl(bool stopAudio) { haltMacroProgramm(_channelCtx[i]); _channelCtx[i].note = 0; _channelCtx[i].volume = 0; + _channelCtx[i].macroSfxRun = -1; + _channelCtx[i].vibValue = 0; + + _channelCtx[i].sampleStart = 0; + _channelCtx[i].sampleLen = 2; + _channelCtx[i].refPeriod = 4; + _channelCtx[i].period = 4; Paula::disableChannel(i); } } diff --git a/sound/mods/tfmx.h b/sound/mods/tfmx.h index 707eb5952f..26018d9466 100644 --- a/sound/mods/tfmx.h +++ b/sound/mods/tfmx.h @@ -132,7 +132,7 @@ private: struct ChannelContext { byte paulaChannel; - byte macroIndex; +// byte macroIndex; uint16 macroWait; uint32 macroOffset; uint32 macroReturnOffset; |