From: <sag...@us...> - 2011-10-21 00:25:29
|
Revision: 1113 http://modplug.svn.sourceforge.net/modplug/?rev=1113&view=rev Author: saga-games Date: 2011-10-21 00:25:23 +0000 (Fri, 21 Oct 2011) Log Message: ----------- [Fix] Sustain loops + instrument number + portamento was broken since revision 1109. Revision Links: -------------- http://modplug.svn.sourceforge.net/modplug/?rev=1109&view=rev Modified Paths: -------------- trunk/OpenMPT/soundlib/Snd_fx.cpp Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp =================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp 2011-10-20 22:15:55 UTC (rev 1112) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2011-10-21 00:25:23 UTC (rev 1113) @@ -662,14 +662,11 @@ return; } - pChn->nLength = pSmp->nLength; - pChn->nLoopStart = pSmp->nLoopStart; - pChn->nLoopEnd = pSmp->nLoopEnd; - // Tone-Portamento doesn't reset the pingpong direction flag if ((bPorta) && (pSmp == pChn->pModSample)) { - if(GetType() & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_MPT)) return; + // If channel length is 0, we cut a previous sample using SCx. In that case, we have to update sample length, loop points, etc... + if(GetType() & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_MPT) && pChn->nLength != 0) return; pChn->dwFlags &= ~(CHN_KEYOFF|CHN_NOTEFADE); pChn->dwFlags = (pChn->dwFlags & (CHN_CHANNELFLAGS | CHN_PINGPONGFLAG)) | (pSmp->uFlags & CHN_SAMPLEFLAGS); } else @@ -700,7 +697,11 @@ pChn->nVolSwing = pChn->nPanSwing = 0; pChn->nResSwing = pChn->nCutSwing = 0; } + pChn->pModSample = pSmp; + pChn->nLength = pSmp->nLength; + pChn->nLoopStart = pSmp->nLoopStart; + pChn->nLoopEnd = pSmp->nLoopEnd; // IT Compatibility: Autovibrato reset if(IsCompatibleMode(TRK_IMPULSETRACKER)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |