From: <sag...@us...> - 2010-02-17 09:10:23
|
Revision: 497 http://modplug.svn.sourceforge.net/modplug/?rev=497&view=rev Author: saga-games Date: 2010-02-17 09:10:14 +0000 (Wed, 17 Feb 2010) Log Message: ----------- [Fix] IT Compatibility: Default Vibrato/Tremolo/Panbrello values to sine if out of range (e.g. S35) Modified Paths: -------------- trunk/OpenMPT/soundlib/Snd_fx.cpp Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp =================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp 2010-02-15 21:55:55 UTC (rev 496) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2010-02-17 09:10:14 UTC (rev 497) @@ -2570,7 +2570,7 @@ // EDx: Note Delay // EEx: Pattern Delay case 0xF0: - if((m_nType & MOD_TYPE_MOD) != 0) // MOD: Invert Loop + if(GetType() == MOD_TYPE_MOD) // MOD: Invert Loop { pChn->nEFxSpeed = param; if(m_dwSongFlags & SONG_FIRSTTICK) InvertLoop(pChn); @@ -2607,7 +2607,10 @@ pChn->nVibratoType = param & 0x03; } else { - if(((param & 0x0F) < 0x04) || !IsCompatibleMode(TRK_IMPULSETRACKER)) pChn->nVibratoType = param & 0x07; + if(IsCompatibleMode(TRK_IMPULSETRACKER)) + pChn->nVibratoType = (param < 0x04) ? param : 0; + else + pChn->nVibratoType = param & 0x07; } break; // S4x: Set Tremolo Waveform @@ -2616,11 +2619,18 @@ pChn->nTremoloType = param & 0x03; } else { - if(((param & 0x0F) < 0x04) || !IsCompatibleMode(TRK_IMPULSETRACKER)) pChn->nTremoloType = param & 0x07; + if(IsCompatibleMode(TRK_IMPULSETRACKER)) + pChn->nTremoloType = (param < 0x04) ? param : 0; + else + pChn->nTremoloType = param & 0x07; } break; // S5x: Set Panbrello Waveform - case 0x50: if(((param & 0x0F) < 0x04) || !IsCompatibleMode(TRK_IMPULSETRACKER)) pChn->nPanbrelloType = param & 0x07; break; + case 0x50: if(IsCompatibleMode(TRK_IMPULSETRACKER)) + pChn->nPanbrelloType = (param < 0x04) ? param : 0; + else + pChn->nPanbrelloType = param & 0x07; + break; // S6x: Pattern Delay for x frames case 0x60: m_nFrameDelay = param; break; // S7x: Envelope Control / Instrument Control @@ -3290,7 +3300,11 @@ bool bResetEnv = false; if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) { - if ((pChn->nRowInstr) && (param < 0x100)) { InstrumentChange(pChn, pChn->nRowInstr, FALSE, FALSE); bResetEnv = true; } + if ((pChn->nRowInstr) && (param < 0x100)) + { + InstrumentChange(pChn, pChn->nRowInstr, FALSE, FALSE); + bResetEnv = true; + } if (param < 0x100) bResetEnv = true; } NoteChange(nChn, nNote, IsCompatibleMode(TRK_IMPULSETRACKER) ? true : false, bResetEnv); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |