From: <sag...@us...> - 2010-01-23 16:55:42
|
Revision: 475 http://modplug.svn.sourceforge.net/modplug/?rev=475&view=rev Author: saga-games Date: 2010-01-23 16:55:32 +0000 (Sat, 23 Jan 2010) Log Message: ----------- [Fix] Mod specs: If necessary (S3M), disable restart position edit control on general tab, reset restart position attribute when converting [Ref] Internal: Some variable type refactoring Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_gen.cpp trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Modedit.cpp trunk/OpenMPT/soundlib/Sndfile.cpp trunk/OpenMPT/soundlib/Sndfile.h trunk/OpenMPT/soundlib/mod_specifications.h Modified: trunk/OpenMPT/mptrack/Ctrl_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_gen.cpp 2010-01-22 23:43:38 UTC (rev 474) +++ trunk/OpenMPT/mptrack/Ctrl_gen.cpp 2010-01-23 16:55:32 UTC (rev 475) @@ -217,6 +217,7 @@ m_SliderVSTiVol.EnableWindow(bIsNotMOD_S3M); m_EditVSTiVol.EnableWindow(bIsNotMOD_S3M); m_SpinVSTiVol.EnableWindow(bIsNotMOD_S3M); + m_EditRestartPos.EnableWindow(specs.hasRestartPos ? TRUE : FALSE); //Note: Global volume slider is not disabled for MOD //on purpose(can be used to control play volume) Modified: trunk/OpenMPT/mptrack/MainFrm.cpp =================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp 2010-01-22 23:43:38 UTC (rev 474) +++ trunk/OpenMPT/mptrack/MainFrm.cpp 2010-01-23 16:55:32 UTC (rev 475) @@ -1801,7 +1801,7 @@ //-------------------------------- { m_nPreAmp = n; - if (m_pSndFile) m_pSndFile->SetMasterVolume(m_nPreAmp, TRUE); + if (m_pSndFile) m_pSndFile->SetMasterVolume(m_nPreAmp, true); } @@ -1864,7 +1864,7 @@ pSndFile->SetRepeatCount((gbLoopSong) ? -1 : 0); } } - m_pSndFile->SetMasterVolume(m_nPreAmp, TRUE); + m_pSndFile->SetMasterVolume(m_nPreAmp, true); m_pSndFile->InitPlayer(TRUE); memset(NotifyBuffer, 0, sizeof(NotifyBuffer)); m_dwStatus |= MODSTATUS_PLAYING; @@ -1957,7 +1957,7 @@ return FALSE; } gsdwTotalSamples = 0; - m_pSndFile->SetMasterVolume(m_nPreAmp, TRUE); + m_pSndFile->SetMasterVolume(m_nPreAmp, true); m_pSndFile->InitPlayer(TRUE); m_dwStatus |= MODSTATUS_PLAYING; if (gpSoundDevice) gpSoundDevice->Start(); Modified: trunk/OpenMPT/mptrack/Modedit.cpp =================================================================== --- trunk/OpenMPT/mptrack/Modedit.cpp 2010-01-22 23:43:38 UTC (rev 474) +++ trunk/OpenMPT/mptrack/Modedit.cpp 2010-01-23 16:55:32 UTC (rev 475) @@ -344,6 +344,14 @@ } } + // Is the "restart position" value allowed in this format? + if(CSoundFile::GetModSpecifications(nNewType).hasRestartPos == false) + { + m_SndFile.m_nRestartPos = 0; + AddToLog("WARNING: Restart position is not support by the new format.\n"); + } + + // Fix channel settings (pan/vol) for(CHANNELINDEX nChn = 0; nChn < m_SndFile.m_nChannels; nChn++) { Modified: trunk/OpenMPT/soundlib/Sndfile.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp 2010-01-22 23:43:38 UTC (rev 474) +++ trunk/OpenMPT/soundlib/Sndfile.cpp 2010-01-23 16:55:32 UTC (rev 475) @@ -1029,18 +1029,17 @@ } -BOOL CSoundFile::SetMasterVolume(UINT nVol, BOOL bAdjustAGC) -//---------------------------------------------------------- +void CSoundFile::SetMasterVolume(UINT nVol, bool adjustAGC) +//--------------------------------------------------------- { if (nVol < 1) nVol = 1; if (nVol > 0x200) nVol = 0x200; // x4 maximum - if ((nVol < m_nMasterVolume) && (nVol) && (gdwSoundSetup & SNDMIX_AGC) && (bAdjustAGC)) + if ((nVol < m_nMasterVolume) && (nVol) && (gdwSoundSetup & SNDMIX_AGC) && (adjustAGC)) { gnAGC = gnAGC * m_nMasterVolume / nVol; if (gnAGC > AGC_UNITY) gnAGC = AGC_UNITY; } m_nMasterVolume = nVol; - return TRUE; } @@ -1058,15 +1057,17 @@ } -/* -UINT CSoundFile::GetNumInstruments() const -//---------------------------------------- +PATTERNINDEX CSoundFile::GetNumPatterns() const +//--------------------------------------------- { - UINT n=0; - for (UINT i=0; i<MAX_INSTRUMENTS; i++) if (Ins[i].pSample) n++; - return n; + PATTERNINDEX max = 0; + for(PATTERNINDEX i = 0; i < Patterns.Size(); i++) + { + if(Patterns.IsValidPat(i)) + max = i; + } + return max; } -*/ UINT CSoundFile::GetMaxPosition() const @@ -2623,8 +2624,8 @@ } -BOOL CSoundFile::SetPatternName(UINT nPat, LPCSTR lpszName) -//--------------------------------------------------------- +BOOL CSoundFile::SetPatternName(PATTERNINDEX nPat, LPCSTR lpszName) +//------------------------------------------------------------------ { CHAR szName[MAX_PATTERNNAME] = ""; if (nPat >= Patterns.Size()) return FALSE; @@ -2652,8 +2653,8 @@ } -BOOL CSoundFile::GetPatternName(UINT nPat, LPSTR lpszName, UINT cbSize) const -//--------------------------------------------------------------------------- +BOOL CSoundFile::GetPatternName(PATTERNINDEX nPat, LPSTR lpszName, UINT cbSize) const +//----------------------------------------------------------------------------------- { if ((!lpszName) || (!cbSize)) return FALSE; lpszName[0] = 0; Modified: trunk/OpenMPT/soundlib/Sndfile.h =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.h 2010-01-22 23:43:38 UTC (rev 474) +++ trunk/OpenMPT/soundlib/Sndfile.h 2010-01-23 16:55:32 UTC (rev 475) @@ -628,10 +628,10 @@ //it returned the number of channels with volume != 0 CHANNELINDEX GetNumChannels() const {return static_cast<CHANNELINDEX>(m_nChannels);} - BOOL SetMasterVolume(UINT vol, BOOL bAdjustAGC=FALSE); + void SetMasterVolume(UINT vol, bool adjustAGC = false); UINT GetMasterVolume() const { return m_nMasterVolume; } ORDERINDEX GetNumPatterns() const; - INSTRUMENTINDEX GetNumInstruments() const {return m_nInstruments;} + INSTRUMENTINDEX GetNumInstruments() const { return m_nInstruments; } SAMPLEINDEX GetNumSamples() const { return m_nSamples; } UINT GetCurrentPos() const; UINT GetCurrentPattern() const { return m_nPattern; } @@ -671,8 +671,8 @@ BOOL IsPaused() const { return (m_dwSongFlags & SONG_PAUSED) ? TRUE : FALSE; } void LoopPattern(PATTERNINDEX nPat, ROWINDEX nRow = 0); void CheckCPUUsage(UINT nCPU); - BOOL SetPatternName(UINT nPat, LPCSTR lpszName); - BOOL GetPatternName(UINT nPat, LPSTR lpszName, UINT cbSize=MAX_PATTERNNAME) const; + BOOL SetPatternName(PATTERNINDEX nPat, LPCSTR lpszName); + BOOL GetPatternName(PATTERNINDEX nPat, LPSTR lpszName, UINT cbSize=MAX_PATTERNNAME) const; CHANNELINDEX ReArrangeChannels(const vector<CHANNELINDEX>& fromToArray); bool MoveChannel(UINT chn_from, UINT chn_to); Modified: trunk/OpenMPT/soundlib/mod_specifications.h =================================================================== --- trunk/OpenMPT/soundlib/mod_specifications.h 2010-01-22 23:43:38 UTC (rev 474) +++ trunk/OpenMPT/soundlib/mod_specifications.h 2010-01-23 16:55:32 UTC (rev 475) @@ -42,6 +42,7 @@ char commands[MAX_EFFECTS + 1]; // An array holding all commands this format supports; commands that are not supported are marked with "?" char volcommands[MAX_VOLCMDS + 1]; // dito, but for volume column bool hasIgnoreIndex; // Does "+++" pattern exist? + bool hasRestartPos; }; @@ -81,6 +82,7 @@ " JFEGHLKRXODB?CQATI?SMNVW?UY?P?Z\\:#", // Supported Effects " vpcdabuhlrgfe:o", // Supported Volume Column commands true, // Has "+++" pattern + true, // Has restart position (order) }; @@ -115,6 +117,7 @@ " 0123456789ABCD?FF?E???????????????", // Supported Effects " ???????????????", // Supported Volume Column commands false, // Doesn't have "+++" pattern + true, // Has restart position (order) }; // MOD with MPT extensions. @@ -147,6 +150,7 @@ " 0123456789ABCD?FF?E???????????????", // Supported Effects " ???????????????", // Supported Volume Column commands true, // Has "+++" pattern + true, // Has restart position (order) }; const CModSpecifications xm = @@ -178,6 +182,7 @@ " 0123456789ABCDRFFTE???GHK?YXPLZ\\:#", // Supported Effects " vpcdabuhlrg????", // Supported Volume Column commands false, // Doesn't have "+++" pattern + true, // Has restart position (order) }; // XM with MPT extensions @@ -210,6 +215,7 @@ " 0123456789ABCDRFFTE???GHK?YXPLZ\\:#", // Supported Effects " vpcdabuhlrgfe:o", // Supported Volume Column commands true, // Has "+++" pattern + true, // Has restart position (order) }; const CModSpecifications s3m = @@ -241,6 +247,7 @@ " JFEGHLKRXODB?CQATI?SMNVW?U????????", // Supported Effects " vp?????????????", // Supported Volume Column commands true, // Has "+++" pattern + false, // Doesn't have restart position (order) }; // S3M with MPT extensions @@ -273,6 +280,7 @@ " JFEGHLKRXODB?CQATI?SMNVW?UY?P?Z\\:#", // Supported Effects " vp?????????????", // Supported Volume Column commands true, // Has "+++" pattern + false, // Doesn't have restart position (order) }; const CModSpecifications it = @@ -304,6 +312,7 @@ " JFEGHLKRXODB?CQATI?SMNVW?UY?P?Z???", // Supported Effects " vpcdab?h??gfe??", // Supported Volume Column commands true, // Has "+++" pattern + false, // Doesn't have restart position (order) }; const CModSpecifications itEx = @@ -335,6 +344,7 @@ " JFEGHLKRXODB?CQATI?SMNVW?UY?P?Z\\:#", // Supported Effects " vpcdab?h??gfe:o", // Supported Volume Column commands true, // Has "+++" pattern + true, // Has restart position (order) }; } //namespace ModSpecs This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |