Author: sagamusix
Date: Fri Jun 14 23:47:39 2024
New Revision: 21029
URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21029
Log:
[Fix] MOD: Allow sample swapping to work when swapping from a non-looping, stopped sample back to a looping sample. Fixes MOD.energy (https://www.un4seen.com/forum/?topic=15448.msg143034#msg143034).
Modified:
trunk/OpenMPT/soundlib/Snd_fx.cpp
Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp
==============================================================================
--- trunk/OpenMPT/soundlib/Snd_fx.cpp Fri Jun 14 23:11:55 2024 (r21028)
+++ trunk/OpenMPT/soundlib/Snd_fx.cpp Fri Jun 14 23:47:39 2024 (r21029)
@@ -2825,8 +2825,8 @@
if(m_playBehaviour[kMODSampleSwap])
{
// ProTracker Compatibility: If a sample was stopped before, lone instrument numbers can retrigger it
- // Test case: PTSwapEmpty.mod, PTInstrVolume.mod, SampleSwap.s3m
- if(!chn.IsSamplePlaying() && (chn.pModSample == nullptr || !chn.pModSample->HasSampleData()))
+ // Test cases: PTSwapEmpty.mod, PTInstrVolume.mod, PTStoppedSwap.mod
+ if(!chn.IsSamplePlaying() && instr <= GetNumSamples() && Samples[instr].uFlags[CHN_LOOP])
keepInstr = true;
}
|