From: <sag...@us...> - 2010-10-22 14:24:25
|
Revision: 744 http://modplug.svn.sourceforge.net/modplug/?rev=744&view=rev Author: saga-games Date: 2010-10-22 14:24:19 +0000 (Fri, 22 Oct 2010) Log Message: ----------- [Fix] S3M Compatibility: Speed and tempo values to what ST3 actually expects and adjusted the loader code to how ST3 would react to out-of-range speed and tempo values. [Fix] S3M Specs: Removed the X param (#) effect from the supported effect list. Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_gen.cpp trunk/OpenMPT/soundlib/Load_s3m.cpp trunk/OpenMPT/soundlib/mod_specifications.h Modified: trunk/OpenMPT/mptrack/Ctrl_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_gen.cpp 2010-10-16 21:06:10 UTC (rev 743) +++ trunk/OpenMPT/mptrack/Ctrl_gen.cpp 2010-10-22 14:24:19 UTC (rev 744) @@ -92,8 +92,16 @@ // -> CODE#0016 // -> DESC="default tempo update" // m_SpinTempo.SetRange(32, 255); // 255 bpm max - m_SpinTempo.SetRange((short)specs.tempoMin, (short)specs.tempoMax); - m_SpinSpeed.SetRange((short)specs.speedMin, (short)specs.speedMax); + // S3M HACK + if(m_pSndFile->GetType() & MOD_TYPE_S3M) + { + m_SpinTempo.SetRange(33, 255); + m_SpinSpeed.SetRange(1, 25); + } else + { + m_SpinTempo.SetRange((short)specs.tempoMin, (short)specs.tempoMax); + m_SpinSpeed.SetRange((short)specs.speedMin, (short)specs.speedMax); + } // -! BEHAVIOUR_CHANGE#0016 m_SpinGlobalVol.SetRange(0, 128); m_SpinSamplePA.SetRange(0, 2000); Modified: trunk/OpenMPT/soundlib/Load_s3m.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_s3m.cpp 2010-10-16 21:06:10 UTC (rev 743) +++ trunk/OpenMPT/soundlib/Load_s3m.cpp 2010-10-22 14:24:19 UTC (rev 744) @@ -270,10 +270,11 @@ SpaceToNullStringFixed(m_szNames[0], 28); // Speed m_nDefaultSpeed = psfh.speed; - if (!m_nDefaultSpeed) m_nDefaultSpeed = 6; + if (!m_nDefaultSpeed || m_nDefaultSpeed == 255) m_nDefaultSpeed = 6; // Tempo m_nDefaultTempo = psfh.tempo; - m_nDefaultTempo = CLAMP(m_nDefaultTempo, 32, 255); + //m_nDefaultTempo = CLAMP(m_nDefaultTempo, 32, 255); + if(m_nDefaultTempo < 33) m_nDefaultTempo = 125; // Global Volume m_nDefaultGlobalVolume = psfh.globalvol << 2; if(!m_nDefaultGlobalVolume && psfh.cwtv < 0x1320) m_nDefaultGlobalVolume = MAX_GLOBAL_VOLUME; // not very reliable, but it fixes a few tunes Modified: trunk/OpenMPT/soundlib/mod_specifications.h =================================================================== --- trunk/OpenMPT/soundlib/mod_specifications.h 2010-10-16 21:06:10 UTC (rev 743) +++ trunk/OpenMPT/soundlib/mod_specifications.h 2010-10-22 14:24:19 UTC (rev 744) @@ -331,7 +331,7 @@ false, // No song comments 0, // No instrument envelopes false, // No envelope release node - " JFEGHLKRXODB?CQATI?SMNVW?UY?P?Z\\?#", // Supported Effects + " JFEGHLKRXODB?CQATI?SMNVW?UY?P?Z\\??", // Supported Effects " vp?????????????", // Supported Volume Column commands true, // Has "+++" pattern false, // Doesn't have restart position (order) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |