From: <sag...@us...> - 2011-10-07 19:10:15
|
Revision: 1096 http://modplug.svn.sourceforge.net/modplug/?rev=1096&view=rev Author: saga-games Date: 2011-10-07 19:10:08 +0000 (Fri, 07 Oct 2011) Log Message: ----------- [Fix] Everytime you thought you understood FT2, you discover something new that doesn't work. [Mod] OpenMPT: Version is now 1.20.00.40 Modified Paths: -------------- trunk/OpenMPT/mptrack/version.h trunk/OpenMPT/soundlib/Snd_fx.cpp Modified: trunk/OpenMPT/mptrack/version.h =================================================================== --- trunk/OpenMPT/mptrack/version.h 2011-10-07 18:01:17 UTC (rev 1095) +++ trunk/OpenMPT/mptrack/version.h 2011-10-07 19:10:08 UTC (rev 1096) @@ -15,7 +15,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 20 #define VER_MINOR 00 -#define VER_MINORMINOR 39 +#define VER_MINORMINOR 40 //Creates version number from version parts that appears in version string. //For example MAKE_VERSION_NUMERIC(1,17,02,28) gives version number of Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp =================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp 2011-10-07 18:01:17 UTC (rev 1095) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2011-10-07 19:10:08 UTC (rev 1096) @@ -1437,7 +1437,7 @@ // Apparently, any note number in a pattern causes instruments to recall their original volume settings - no matter if there's a Note Off next to it or whatever. // Test cases: keyoff+instr.xm, delay.xm - bool reloadInstrSettings = (IsCompatibleMode(TRK_FASTTRACKER2) && instr != 0); + bool reloadSampleSettings = (IsCompatibleMode(TRK_FASTTRACKER2) && instr != 0); bool keepInstr = (GetType() & (MOD_TYPE_IT|MOD_TYPE_MPT)); // Now it's time for some FT2 crap... @@ -1462,29 +1462,31 @@ // XM Compatibility: Some special hacks for rogue note delays... (EDx with x > 0) // Apparently anything that is next to a note delay behaves totally unpredictable in FT2. Swedish tracker logic. :) + retrigEnv = true; + if(note == NOTE_NONE) { // If there's a note delay but no real note, retrig the last note. - // Test case: delay2.xm + // Test case: delay2.xm, delay3.xm note = pChn->nNote - pChn->nTranspose; - retrigEnv = true; } else if(note >= NOTE_MIN_SPECIAL) { // Gah! Even Note Off + Note Delay will cause envelopes to *retrigger*! How stupid is that? - retrigEnv = true; // ... Well, and that is actually all it does if there's an envelope. No fade out, no nothing. *sigh* // Test case: OffDelay.xm note = NOTE_NONE; keepInstr = false; + reloadSampleSettings = true; } else { - retrigEnv = true; + // Normal note keepInstr = true; + reloadSampleSettings = true; } } } - if(retrigEnv || reloadInstrSettings) + if((retrigEnv && !IsCompatibleMode(TRK_FASTTRACKER2)) || reloadSampleSettings) { const MODSAMPLE *oldSample = nullptr; // Reset default volume when retriggering envelopes @@ -1501,7 +1503,7 @@ if(oldSample != nullptr) { pChn->nVolume = oldSample->nVolume; - if(reloadInstrSettings) + if(reloadSampleSettings) { // Also reload panning pChn->nPan = oldSample->nPan; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |