From: <sag...@us...> - 2015-01-21 18:57:00
|
Revision: 4726 http://sourceforge.net/p/modplug/code/4726 Author: saga-games Date: 2015-01-21 18:56:51 +0000 (Wed, 21 Jan 2015) Log Message: ----------- [Fix] MOD playback: To match ProTracker, the portamento target is no longer reset when a new note is encountered (like in FT2), but it is reset when the target is reached (like in IT). Fixes nuhanenatanssi.mod. [Mod] OpenMPT: Version is now 1.24.01.08 Modified Paths: -------------- trunk/OpenMPT/common/versionNumber.h trunk/OpenMPT/soundlib/Snd_fx.cpp Modified: trunk/OpenMPT/common/versionNumber.h =================================================================== --- trunk/OpenMPT/common/versionNumber.h 2015-01-19 16:20:41 UTC (rev 4725) +++ trunk/OpenMPT/common/versionNumber.h 2015-01-21 18:56:51 UTC (rev 4726) @@ -19,7 +19,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 24 #define VER_MINOR 01 -#define VER_MINORMINOR 07 +#define VER_MINORMINOR 08 //Version string. For example "1.17.02.28" #define MPT_VERSION_STR VER_STRINGIZE(VER_MAJORMAJOR) "." VER_STRINGIZE(VER_MAJOR) "." VER_STRINGIZE(VER_MINOR) "." VER_STRINGIZE(VER_MINORMINOR) Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp =================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp 2015-01-19 16:20:41 UTC (rev 4725) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2015-01-21 18:56:51 UTC (rev 4726) @@ -704,10 +704,9 @@ if(forbiddenCommands[p->command]) { stopNote = true; - } - // Special case: Slides using extended commands - if(p->command == CMD_MODCMDEX) + } else if(p->command == CMD_MODCMDEX) { + // Special case: Slides using extended commands switch(p->param & 0xF0) { case 0x10: @@ -1175,7 +1174,9 @@ // FT2 compatibility: Don't reset portamento target with new instrument numbers. // Test case: Porta-Pickup.xm - if(!IsCompatibleMode(TRK_FASTTRACKER2)) + // ProTracker does the same. + // Test case: PortaTarget.mod + if(!IsCompatibleMode(TRK_FASTTRACKER2) && GetType() != MOD_TYPE_MOD) { pChn->nPortamentoDest = 0; } @@ -1335,9 +1336,11 @@ { // FT2 compatibility: Don't reset portamento target with new notes. // Test case: Porta-Pickup.xm + // ProTracker does the same. + // Test case: PortaTarget.mod // IT compatibility: Portamento target is completely cleared with new notes. // Test case: PortaReset.it - if(bPorta || !(IsCompatibleMode(TRK_FASTTRACKER2) || IsCompatibleMode(TRK_IMPULSETRACKER))) + if(bPorta || !(IsCompatibleMode(TRK_FASTTRACKER2) || IsCompatibleMode(TRK_IMPULSETRACKER) || GetType() == MOD_TYPE_MOD)) { pChn->nPortamentoDest = period; } @@ -3425,8 +3428,10 @@ } } - //IT compatibility 23. Portamento with no note - if(pChn->nPeriod == pChn->nPortamentoDest && IsCompatibleMode(TRK_IMPULSETRACKER)) + // IT compatibility 23. Portamento with no note + // ProTracker also disables portamento once the target is reached. + // Test case: PortaTarget.mod + if(pChn->nPeriod == pChn->nPortamentoDest && (IsCompatibleMode(TRK_IMPULSETRACKER) || GetType() == MOD_TYPE_MOD)) pChn->nPortamentoDest = 0; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |