From: <sag...@us...> - 2015-04-19 12:45:11
|
Revision: 4948 http://sourceforge.net/p/modplug/code/4948 Author: saga-games Date: 2015-04-19 12:44:59 +0000 (Sun, 19 Apr 2015) Log Message: ----------- [Fix] IT/S3M/MPTM: When seeking with sample sync, take note delay + row delay combination into account [Fix] IT Compatiblity: Note delays should be capped by the ticks/per + fine pattern delay tick count, not the total row tick count (updated test case: tickdelay.it) Modified Paths: -------------- trunk/OpenMPT/soundlib/Snd_fx.cpp Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp =================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp 2015-04-19 01:27:19 UTC (rev 4947) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2015-04-19 12:44:59 UTC (rev 4948) @@ -782,6 +782,10 @@ { startTick = paramHi; } + if(rowDelay > 1 && startTick != 0 && (GetType() & (MOD_TYPE_S3M | MOD_TYPE_IT | MOD_TYPE_MPT)) + { + startTick += (memory.state.m_nMusicSpeed + tickDelay) * (rowDelay - 1); + } if(!porta) memory.chnSettings[nChn].ticksToRender = 0; // Panning commands have to be re-applied after a note change with potential pan change. @@ -2092,7 +2096,7 @@ //ST3 ignores notes with SD0 completely else if(GetType() == MOD_TYPE_S3M) continue; - } else if(nStartTick >= GetNumTicksOnCurrentRow() && IsCompatibleMode(TRK_IMPULSETRACKER)) + } else if(nStartTick >= (m_PlayState.m_nMusicSpeed + m_PlayState.m_nFrameDelay) && IsCompatibleMode(TRK_IMPULSETRACKER)) { // IT compatibility 08. Handling of out-of-range delay command. // Additional test case: tickdelay.it This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |