From: <sag...@us...> - 2015-01-30 21:54:07
|
Revision: 4736 http://sourceforge.net/p/modplug/code/4736 Author: saga-games Date: 2015-01-30 21:53:54 +0000 (Fri, 30 Jan 2015) Log Message: ----------- [Fix] Off-by-one error in very small fine portamentos. Modified Paths: -------------- trunk/OpenMPT/soundlib/Snd_fx.cpp Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp =================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp 2015-01-29 10:53:27 UTC (rev 4735) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2015-01-30 21:53:54 UTC (rev 4736) @@ -3187,10 +3187,7 @@ { int oldPeriod = pChn->nPeriod; pChn->nPeriod = Util::muldivr(pChn->nPeriod, LinearSlideUpTable[param & 0x0F], 65536); - if(oldPeriod == pChn->nPeriod) - { - pChn->nPeriod--; - } + if(oldPeriod == pChn->nPeriod) pChn->nPeriod++; } else { pChn->nPeriod -= (int)(param * 4); @@ -3222,10 +3219,7 @@ { int oldPeriod = pChn->nPeriod; pChn->nPeriod = Util::muldivr(pChn->nPeriod, LinearSlideDownTable[param & 0x0F], 65536); - if(oldPeriod == pChn->nPeriod) - { - pChn->nPeriod--; - } + if(oldPeriod == pChn->nPeriod) pChn->nPeriod--; } else { pChn->nPeriod += (int)(param * 4); @@ -3257,10 +3251,7 @@ { int oldPeriod = pChn->nPeriod; pChn->nPeriod = Util::muldivr(pChn->nPeriod, FineLinearSlideUpTable[param & 0x0F], 65536); - if(oldPeriod == pChn->nPeriod) - { - pChn->nPeriod++; - } + if(oldPeriod == pChn->nPeriod) pChn->nPeriod++; } else { pChn->nPeriod -= (int)(param); @@ -3292,10 +3283,7 @@ { int oldPeriod = pChn->nPeriod; pChn->nPeriod = Util::muldivr(pChn->nPeriod, FineLinearSlideDownTable[param & 0x0F], 65536); - if(oldPeriod == pChn->nPeriod) - { - pChn->nPeriod--; - } + if(oldPeriod == pChn->nPeriod) pChn->nPeriod--; } else { pChn->nPeriod += (int)(param); @@ -4700,11 +4688,11 @@ void CSoundFile::DoFreqSlide(ModChannel *pChn, LONG nFreqSlide) const //------------------------------------------------------------------- { - // IT Linear slides if (!pChn->nPeriod) return; if(m_SongFlags[SONG_LINEARSLIDES] && GetType() != MOD_TYPE_XM) { - int32 nOldPeriod = pChn->nPeriod; + // IT Linear slides + const int32_t nOldPeriod = pChn->nPeriod; if (nFreqSlide < 0) { UINT n = (-nFreqSlide) / 4; @@ -4712,7 +4700,7 @@ { if (n > 255) n = 255; pChn->nPeriod = Util::muldivr(pChn->nPeriod, LinearSlideUpTable[n], 65536); - if (pChn->nPeriod == nOldPeriod) pChn->nPeriod = nOldPeriod + 1; + if (pChn->nPeriod == nOldPeriod) pChn->nPeriod++; } } else { @@ -4721,7 +4709,7 @@ { if (n > 255) n = 255; pChn->nPeriod = Util::muldivr(pChn->nPeriod, LinearSlideDownTable[n], 65536); - if (pChn->nPeriod == nOldPeriod) pChn->nPeriod = nOldPeriod - 1; + if (pChn->nPeriod == nOldPeriod) pChn->nPeriod--; } } } else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |