From: <sag...@us...> - 2009-09-15 17:15:39
|
Revision: 364 http://modplug.svn.sourceforge.net/modplug/?rev=364&view=rev Author: saga-games Date: 2009-09-15 17:15:29 +0000 (Tue, 15 Sep 2009) Log Message: ----------- [Fix] Wave Export: Order mode was always enabled by default. [Fix] IT Compatibility: Special case of Retrigger + Envelopes [Fix] Instrument / Sample tab: Remove special chars from sample filenames so the "save as" dialog will show up on OSs < Vista [Mod] Instrument tab: Also show values from 0 to 64 for filter envelope (instead of -32 to 32) [Imp] Macro Config: Also show the current preset for Zxx config (Z80 - ZFF) [Ref] Changed some BOOLs into bools, usage of *INDEX types Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Moddoc.h trunk/OpenMPT/mptrack/Modedit.cpp trunk/OpenMPT/mptrack/View_ins.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/dlg_misc.cpp trunk/OpenMPT/mptrack/misc_util.h trunk/OpenMPT/mptrack/mod2midi.cpp trunk/OpenMPT/soundlib/Sampleio.cpp trunk/OpenMPT/soundlib/Snd_fx.cpp trunk/OpenMPT/soundlib/Sndfile.cpp trunk/OpenMPT/soundlib/Sndfile.h Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2009-09-15 17:15:29 UTC (rev 364) @@ -1603,7 +1603,7 @@ void CCtrlInstruments::OnInstrumentSave() //--------------------------------------- { - CHAR szFileName[_MAX_PATH] = "", drive[_MAX_DRIVE], path[_MAX_PATH], ext[_MAX_EXT]; + TCHAR szFileName[_MAX_PATH] = "", drive[_MAX_DRIVE], path[_MAX_PATH], ext[_MAX_EXT]; MODINSTRUMENT *pIns = m_pSndFile->Instruments[m_nInstrument]; if (!pIns) return; @@ -1616,6 +1616,8 @@ memcpy(szFileName, pIns->name, 22); szFileName[22] = 0; } + SanitizeFilename(szFileName); + // -> CODE#0019 // -> DESC="correctly load ITI & XI instruments sample note map" // CFileDialog dlg(FALSE, (m_pSndFile->m_nType & MOD_TYPE_IT) ? "iti" : "xi", Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2009-09-15 17:15:29 UTC (rev 364) @@ -975,8 +975,8 @@ { if(!m_pSndFile) return; - CHAR szFileName[_MAX_PATH] = ""; - BOOL bBatchSave = CMainFrame::GetInputHandler()->ShiftPressed(); + TCHAR szFileName[_MAX_PATH]; + bool bBatchSave = CMainFrame::GetInputHandler()->ShiftPressed(); if(!bBatchSave) { @@ -993,8 +993,7 @@ } else { memcpy(szFileName, m_pSndFile->m_szNames[m_nSample], 32); - szFileName[32] = 0; - } + szFileName[32] = 0; } if (!szFileName[0]) strcpy(szFileName, "untitled"); } else @@ -1011,6 +1010,7 @@ sPath += ".wav"; _splitpath(sPath, NULL, NULL, szFileName, NULL); } + SanitizeFilename(szFileName); CFileDialog dlg(FALSE, "wav", szFileName, @@ -1027,7 +1027,7 @@ TCHAR ext[_MAX_EXT]; _splitpath(dlg.GetPathName(), NULL, NULL, NULL, ext); - BOOL bOk = FALSE; + bool bOk = false; UINT iMinSmp = m_nSample, iMaxSmp = m_nSample; CString sFilename = dlg.GetPathName(), sNumberFormat; if(bBatchSave) @@ -1037,24 +1037,20 @@ sNumberFormat.Format("%s%d%s", "%.", ((int)log10((float)iMaxSmp)) + 1, "d"); } - const CString sForbiddenChars = "\\/:\"?<>*"; - for(UINT iSmp = iMinSmp; iSmp <= iMaxSmp; iSmp++) { if (m_pSndFile->Samples[iSmp].pSample) { if(bBatchSave) { - CString sSampleNumber, sSampleName, sSampleFilename; + CString sSampleNumber; + TCHAR sSampleName[64], sSampleFilename[64]; sSampleNumber.Format(sNumberFormat, iSmp); - sSampleName = (m_pSndFile->m_szNames[iSmp]) ? m_pSndFile->m_szNames[iSmp] : "untitled"; - sSampleFilename = (m_pSndFile->Samples[iSmp].filename[0]) ? m_pSndFile->Samples[iSmp].filename : m_pSndFile->m_szNames[iSmp]; - for(UINT i = 0; i < sForbiddenChars.GetLength(); i++) - { - sSampleName.Remove(sForbiddenChars.GetAt(i)); - sSampleFilename.Remove(sForbiddenChars.GetAt(i)); - } + strcpy(sSampleName, (m_pSndFile->m_szNames[iSmp]) ? m_pSndFile->m_szNames[iSmp] : "untitled"); + strcpy(sSampleFilename, (m_pSndFile->Samples[iSmp].filename[0]) ? m_pSndFile->Samples[iSmp].filename : m_pSndFile->m_szNames[iSmp]); + SanitizeFilename(sSampleName); + SanitizeFilename(sSampleFilename); sFilename = dlg.GetPathName(); sFilename.Replace("%sample_number%", sSampleNumber); Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2009-09-15 17:15:29 UTC (rev 364) @@ -1388,7 +1388,7 @@ void CModDoc::OnFileWaveConvert() //------------------------------- { - OnFileWaveConvert(0, 0); + OnFileWaveConvert(ORDERINDEX_INVALID, ORDERINDEX_INVALID); } void CModDoc::OnFileWaveConvert(ORDERINDEX nMinOrder, ORDERINDEX nMaxOrder) @@ -2935,7 +2935,7 @@ } HWND CModDoc::GetEditPosition(ROWINDEX &row, PATTERNINDEX &pat, ORDERINDEX &ord) -//------------------------------------------------------------ +//------------------------------------------------------------------------------ { HWND followSonghWnd; PATTERNVIEWSTATE *patternViewState; @@ -2976,7 +2976,7 @@ //ensure order correlates with pattern. if (pSndFile->Order[ord]!=pat) { - int tentativeOrder = pSndFile->FindOrder(pat); + ORDERINDEX tentativeOrder = pSndFile->FindOrder(pat); if (tentativeOrder != -1) { //ensure a valid order exists. ord = tentativeOrder; } @@ -3041,7 +3041,68 @@ return -1; } +// Retrieve Zxx (Z80-ZFF) type from current macro configuration +int CModDoc::GetZxxType(const CHAR (&szMidiZXXExt)[128 * 32]) +//----------------------------------------------------------- +{ + // Compare with all possible preset patterns + for(int i = 1; i <= 5; i++) + { + // Prepare pattern to compare + CHAR szPatterns[128 * 32]; + CreateZxxFromType(szPatterns, i); + bool bFound = true; + for(int j = 0; j < 128; j++) + { + if(strncmp(&szPatterns[j * 32], &szMidiZXXExt[j * 32], 32)) + bFound = false; + } + if(bFound) return i; + } + return 0; // Type 0 - Custom setup +} + +// Create Zxx (Z80 - ZFF) from one out of five presets +void CModDoc::CreateZxxFromType(CHAR (&szMidiZXXExt)[128 * 32], int iZxxType) +//--------------------------------------------------------------------------- +{ + for(int i = 0; i < 128; i++) + { + switch(iZxxType) + { + case 1: + // Type 1 - Z80 - Z8F controls resonance + if (i < 16) wsprintf(&szMidiZXXExt[i * 32], "F0F001%02X", i * 8); + else szMidiZXXExt[i * 32] = 0; + break; + + case 2: + // Type 2 - Z80 - ZFF controls resonance + wsprintf(&szMidiZXXExt[i * 32], "F0F001%02X", i); + break; + + case 3: + // Type 3 - Z80 - ZFF controls cutoff + wsprintf(&szMidiZXXExt[i * 32], "F0F000%02X", i); + break; + + case 4: + // Type 4 - Z80 - ZFF controls filter mode + wsprintf(&szMidiZXXExt[i * 32], "F0F002%02X", i); + break; + + case 5: + // Type 5 - Z80 - Z9F controls resonance + filter mode + if (i < 16) wsprintf(&szMidiZXXExt[i * 32], "F0F001%02X", i * 8); + else if (i < 32) wsprintf(&szMidiZXXExt[i * 32], "F0F002%02X", (i - 16) * 8); + else szMidiZXXExt[i * 32] = 0; + break; + } + } +} + + //////////////////////////////////////////////////////////////////////////////////////// // Playback Modified: trunk/OpenMPT/mptrack/Moddoc.h =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/mptrack/Moddoc.h 2009-09-15 17:15:29 UTC (rev 364) @@ -181,6 +181,8 @@ int MacroToPlugParam(CString value); //rewbs.xinfo int MacroToMidiCC(CString value); int FindMacroForParam(long param); + int GetZxxType(const CHAR (&szMidiZXXExt)[128 * 32]); + void CreateZxxFromType(CHAR (&szMidiZXXExt)[128 * 32], int iZxxType); void SongProperties(); // operations public: Modified: trunk/OpenMPT/mptrack/Modedit.cpp =================================================================== --- trunk/OpenMPT/mptrack/Modedit.cpp 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/mptrack/Modedit.cpp 2009-09-15 17:15:29 UTC (rev 364) @@ -1433,7 +1433,7 @@ } } - for (UINT i=1; i<=m_SndFile.m_nInstruments; i++) + for (INSTRUMENTINDEX i = 1; i <= m_SndFile.m_nInstruments; i++) { m_SndFile.DestroyInstrument(i,removeSamples); } @@ -1453,7 +1453,7 @@ CHAR s[512]; UINT nRemoved = 0; UINT nSwap, nIndex; - BOOL bReorg = FALSE; + bool bReorg = false; if (!m_SndFile.m_nInstruments) return FALSE; @@ -1469,7 +1469,7 @@ BeginWaitCursor(); memset(usedmap, 0, sizeof(usedmap)); - for (UINT i=m_SndFile.m_nInstruments; i>=1; i--) + for(INSTRUMENTINDEX i = m_SndFile.m_nInstruments; i >= 1; i--) { if (!m_SndFile.IsInstrumentUsed(i)) { @@ -1477,9 +1477,9 @@ // -> CODE#0003 // -> DESC="remove instrument's samples" // m_SndFile.DestroyInstrument(i); - m_SndFile.DestroyInstrument(i,removeSamples); + m_SndFile.DestroyInstrument(i, removeSamples); // -! BEHAVIOUR_CHANGE#0003 - if ((i == m_SndFile.m_nInstruments) && (i>1)) m_SndFile.m_nInstruments--; else bReorg = TRUE; + if ((i == m_SndFile.m_nInstruments) && (i>1)) m_SndFile.m_nInstruments--; else bReorg = true; END_CRITICAL(); nRemoved++; } else @@ -1701,8 +1701,8 @@ SAMPLEINDEX CModDoc::InsertSample(bool bLimit) //-------------------------------------------- { - UINT i = 1; - for (i=1; i<=m_SndFile.m_nSamples; i++) + SAMPLEINDEX i = 1; + for(i = 1; i <= m_SndFile.m_nSamples; i++) { if ((!m_SndFile.m_szNames[i][0]) && (m_SndFile.Samples[i].pSample == NULL)) { @@ -1802,7 +1802,7 @@ } else if (!pDup) { - for (UINT k=1; k<=m_SndFile.m_nSamples; k++) + for(SAMPLEINDEX k = 1; k <= m_SndFile.m_nSamples; k++) { if (!m_SndFile.IsSampleUsed(k)) { Modified: trunk/OpenMPT/mptrack/View_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_ins.cpp 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/mptrack/View_ins.cpp 2009-09-15 17:15:29 UTC (rev 364) @@ -1614,6 +1614,11 @@ //------------------------------------------------ { CModDoc *pModDoc = GetDocument(); + if(pModDoc == nullptr) return; + CSoundFile *pSndFile = pModDoc->GetSoundFile(); + if(pSndFile == nullptr) return; + MODINSTRUMENT *pIns = pSndFile->Instruments[m_nInstrument]; + BOOL bSplitCursor = FALSE; CHAR s[256]; @@ -1632,7 +1637,7 @@ if (nVal > 64) nVal = 64; if (nTick < 0) nTick = 0; if (nTick <= EnvGetReleaseNodeTick() + 1 || EnvGetReleaseNode() == ENV_RELEASE_NODE_UNSET) { - int displayVal = (m_nEnv != ENV_VOLUME) ? nVal-32 : nVal; + int displayVal = (m_nEnv != ENV_VOLUME && !(m_nEnv == ENV_PITCH && (pIns->dwFlags & ENV_FILTER))) ? nVal - 32 : nVal; wsprintf(s, "Tick %d, [%d]", nTick, displayVal); } else { int displayVal = (nVal - EnvGetReleaseNodeValue()) * 2; Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-09-15 17:15:29 UTC (rev 364) @@ -3542,15 +3542,15 @@ case kcNextPattern: { UINT n = m_nPattern + 1; while ((n < pSndFile->Patterns.Size()) && (!pSndFile->Patterns[n])) n++; SetCurrentPattern((n < pSndFile->Patterns.Size()) ? n : 0); - int currentOrder = SendCtrlMessage(CTRLMSG_GETCURRENTORDER); - int newOrder = pSndFile->FindOrder(m_nPattern, currentOrder, true); + ORDERINDEX currentOrder = SendCtrlMessage(CTRLMSG_GETCURRENTORDER); + ORDERINDEX newOrder = pSndFile->FindOrder(m_nPattern, currentOrder, true); SendCtrlMessage(CTRLMSG_SETCURRENTORDER, newOrder); return wParam; } case kcPrevPattern: { UINT n = (m_nPattern) ? m_nPattern - 1 : pSndFile->Patterns.Size()-1; while ((n > 0) && (!pSndFile->Patterns[n])) n--; SetCurrentPattern(n); - int currentOrder = SendCtrlMessage(CTRLMSG_GETCURRENTORDER); - int newOrder = pSndFile->FindOrder(m_nPattern, currentOrder, false); + ORDERINDEX currentOrder = SendCtrlMessage(CTRLMSG_GETCURRENTORDER); + ORDERINDEX newOrder = pSndFile->FindOrder(m_nPattern, currentOrder, false); SendCtrlMessage(CTRLMSG_SETCURRENTORDER, newOrder); return wParam; } case kcSelectWithCopySelect: Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp =================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp 2009-09-15 17:15:29 UTC (rev 364) @@ -1799,6 +1799,11 @@ BOOL CMidiMacroSetup::OnInitDialog() //---------------------------------- { + m_pModDoc = CMainFrame::GetMainFrame()->GetActiveDoc(); + if (m_pModDoc) m_pSndFile = CMainFrame::GetMainFrame()->GetActiveDoc()->GetSoundFile(); + if (!m_pSndFile) + return FALSE; + CHAR s[128]; CDialog::OnInitDialog(); CheckDlgButton(IDC_CHECK1, m_bEmbed); @@ -1837,7 +1842,7 @@ m_CbnZxxPreset.AddString("Z80-ZFF controls cutoff"); m_CbnZxxPreset.AddString("Z80-ZFF controls filter mode"); m_CbnZxxPreset.AddString("Z80-Z9F controls resonance+mode"); - m_CbnZxxPreset.SetCurSel(0); + m_CbnZxxPreset.SetCurSel(m_pModDoc->GetZxxType(m_MidiCfg.szMidiZXXExt)); UpdateDialog(); int offsetx=108, offsety=30, separatorx=4, separatory=2, @@ -1863,10 +1868,6 @@ } UpdateMacroList(); - m_pModDoc = CMainFrame::GetMainFrame()->GetActiveDoc(); - if (m_pModDoc) m_pSndFile = CMainFrame::GetMainFrame()->GetActiveDoc()->GetSoundFile(); - if (!m_pSndFile) - return FALSE; for (UINT plug=0; plug<MAX_MIXPLUGINS; plug++) { PSNDMIXPLUGIN p = &(m_pSndFile->m_MixPlugins[plug]); @@ -2034,39 +2035,10 @@ { UINT zxx_preset = m_CbnZxxPreset.GetCurSel(); - if (zxx_preset) + if (zxx_preset && m_pModDoc != nullptr) { - BeginWaitCursor(); - for (UINT i=0; i<128; i++) - { - switch(zxx_preset) - { - case 1: - if (i<16) wsprintf(&m_MidiCfg.szMidiZXXExt[i*32], "F0F001%02X", i*8); - else m_MidiCfg.szMidiZXXExt[i*32] = 0; - break; - - case 2: - wsprintf(&m_MidiCfg.szMidiZXXExt[i*32], "F0F001%02X", i); - break; - - case 3: - wsprintf(&m_MidiCfg.szMidiZXXExt[i*32], "F0F000%02X", i); - break; - - case 4: - wsprintf(&m_MidiCfg.szMidiZXXExt[i*32], "F0F002%02X", i); - break; - - case 5: - if (i<16) wsprintf(&m_MidiCfg.szMidiZXXExt[i*32], "F0F001%02X", i*8); - else if (i<32) wsprintf(&m_MidiCfg.szMidiZXXExt[i*32], "F0F002%02X", (i-16)*8); - else m_MidiCfg.szMidiZXXExt[i*32] = 0; - break; - } - } + m_pModDoc->CreateZxxFromType(m_MidiCfg.szMidiZXXExt, zxx_preset); UpdateDialog(); - EndWaitCursor(); } } Modified: trunk/OpenMPT/mptrack/misc_util.h =================================================================== --- trunk/OpenMPT/mptrack/misc_util.h 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/mptrack/misc_util.h 2009-09-15 17:15:29 UTC (rev 364) @@ -110,4 +110,29 @@ utilImpl::ArrayCopyImpl<std::tr1::has_trivial_assign<T>::value>::Do(pDst, pSrc, n); } +// Sanitize a filename (remove special chars) +template <size_t size> +inline void SanitizeFilename(char (&buffer)[size]) +{ + STATIC_ASSERT(size > 0); + for(int i = 0; i < size; i++) + { + if( buffer[i] == '\\' || + buffer[i] == '\"' || + buffer[i] == '/' || + buffer[i] == ':' || + buffer[i] == '?' || + buffer[i] == '<' || + buffer[i] == '>' || + buffer[i] == '*') + { + for(int j = i + 1; j < size; j++) + { + buffer[j - 1] = buffer[j]; + } + buffer[size - 1] = 0; + } + } +} + #endif Modified: trunk/OpenMPT/mptrack/mod2midi.cpp =================================================================== --- trunk/OpenMPT/mptrack/mod2midi.cpp 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/mptrack/mod2midi.cpp 2009-09-15 17:15:29 UTC (rev 364) @@ -167,7 +167,7 @@ m_nCurrInstr = 1; if (m_pSndFile->m_nInstruments) { - for (UINT nIns=1; nIns<=m_pSndFile->m_nInstruments; nIns++) + for(INSTRUMENTINDEX nIns = 1; nIns <= m_pSndFile->m_nInstruments; nIns++) { MODINSTRUMENT *pIns = m_pSndFile->Instruments[nIns]; if ((pIns) && (m_pSndFile->IsInstrumentUsed(nIns))) @@ -180,15 +180,15 @@ } } else { - for (UINT nIns=1; nIns<=m_pSndFile->m_nSamples; nIns++) + for(SAMPLEINDEX nSmp = 1; nSmp <= m_pSndFile->m_nSamples; nSmp++) { - if ((m_pSndFile->Samples[nIns].pSample) - && (m_pSndFile->IsSampleUsed(nIns))) + if ((m_pSndFile->Samples[nSmp].pSample) + && (m_pSndFile->IsSampleUsed(nSmp))) { memset(s, 0, sizeof(s)); - wsprintf(s, "%02d: ", nIns); - memcpy(s+strlen(s), m_pSndFile->m_szNames[nIns], 32); - m_CbnInstrument.SetItemData(m_CbnInstrument.AddString(s), nIns); + wsprintf(s, "%02d: ", nSmp); + memcpy(s+strlen(s), m_pSndFile->m_szNames[nSmp], 32); + m_CbnInstrument.SetItemData(m_CbnInstrument.AddString(s), nSmp); } } } Modified: trunk/OpenMPT/soundlib/Sampleio.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sampleio.cpp 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/soundlib/Sampleio.cpp 2009-09-15 17:15:29 UTC (rev 364) @@ -14,10 +14,10 @@ #pragma warning(disable:4244) -BOOL CSoundFile::ReadSampleFromFile(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength) -//------------------------------------------------------------------------------------- +bool CSoundFile::ReadSampleFromFile(SAMPLEINDEX nSample, LPBYTE lpMemFile, DWORD dwFileLength) +//-------------------------------------------------------------------------------------------- { - if ((!nSample) || (nSample >= MAX_SAMPLES)) return FALSE; + if ((!nSample) || (nSample >= MAX_SAMPLES)) return false; if ((!ReadWAVSample(nSample, lpMemFile, dwFileLength)) && (!ReadXISample(nSample, lpMemFile, dwFileLength)) && (!ReadAIFFSample(nSample, lpMemFile, dwFileLength)) @@ -25,30 +25,30 @@ && (!ReadPATSample(nSample, lpMemFile, dwFileLength)) && (!Read8SVXSample(nSample, lpMemFile, dwFileLength)) && (!ReadS3ISample(nSample, lpMemFile, dwFileLength))) - return FALSE; - return TRUE; + return false; + return true; } -BOOL CSoundFile::ReadInstrumentFromFile(UINT nInstr, LPBYTE lpMemFile, DWORD dwFileLength) -//---------------------------------------------------------------------------------------- +bool CSoundFile::ReadInstrumentFromFile(INSTRUMENTINDEX nInstr, LPBYTE lpMemFile, DWORD dwFileLength) +//--------------------------------------------------------------------------------------------------- { - if ((!nInstr) || (nInstr >= MAX_INSTRUMENTS)) return FALSE; + if ((!nInstr) || (nInstr >= MAX_INSTRUMENTS)) return false; if ((!ReadXIInstrument(nInstr, lpMemFile, dwFileLength)) && (!ReadPATInstrument(nInstr, lpMemFile, dwFileLength)) && (!ReadITIInstrument(nInstr, lpMemFile, dwFileLength)) // Generic read - && (!ReadSampleAsInstrument(nInstr, lpMemFile, dwFileLength))) return FALSE; + && (!ReadSampleAsInstrument(nInstr, lpMemFile, dwFileLength))) return false; if (nInstr > m_nInstruments) m_nInstruments = nInstr; - return TRUE; + return true; } -BOOL CSoundFile::ReadSampleAsInstrument(UINT nInstr, LPBYTE lpMemFile, DWORD dwFileLength) -//---------------------------------------------------------------------------------------- +bool CSoundFile::ReadSampleAsInstrument(INSTRUMENTINDEX nInstr, LPBYTE lpMemFile, DWORD dwFileLength) +//--------------------------------------------------------------------------------------------------- { LPDWORD psig = (LPDWORD)lpMemFile; - if ((!lpMemFile) || (dwFileLength < 128)) return FALSE; + if ((!lpMemFile) || (dwFileLength < 128)) return false; if (((psig[0] == 0x46464952) && (psig[2] == 0x45564157)) // RIFF....WAVE signature || ((psig[0] == 0x5453494C) && (psig[2] == 0x65766177)) // LIST....wave || (psig[76/4] == 0x53524353) // S3I signature @@ -59,7 +59,7 @@ { // Loading Instrument MODINSTRUMENT *pIns = new MODINSTRUMENT; - if (!pIns) return FALSE; + if (!pIns) return false; memset(pIns, 0, sizeof(MODINSTRUMENT)); pIns->pTuning = pIns->s_DefaultTuning; // -> CODE#0003 @@ -91,21 +91,20 @@ pIns->NoteMap[iinit] = iinit+1; } if (nSample) ReadSampleFromFile(nSample, lpMemFile, dwFileLength); - return TRUE; + return true; } - return FALSE; + return false; } // -> CODE#0003 // -> DESC="remove instrument's samples" // BOOL CSoundFile::DestroyInstrument(UINT nInstr) -BOOL CSoundFile::DestroyInstrument(UINT nInstr, char removeSamples) -// -! BEHAVIOUR_CHANGE#0003 -//--------------------------------------------- +bool CSoundFile::DestroyInstrument(INSTRUMENTINDEX nInstr, char removeSamples) +//---------------------------------------------------------------------------- { - if ((!nInstr) || (nInstr > m_nInstruments)) return FALSE; - if (!Instruments[nInstr]) return TRUE; + if ((!nInstr) || (nInstr > m_nInstruments)) return false; + if (!Instruments[nInstr]) return true; // -> CODE#0003 // -> DESC="remove instrument's samples" @@ -117,7 +116,7 @@ // -> CODE#0023 // -> DESC="IT project files (.itp)" m_szInstrumentPath[nInstr-1][0] = '\0'; - instrumentModified[nInstr-1] = FALSE; + instrumentModified[nInstr-1] = false; // -! NEW_FEATURE#0023 MODINSTRUMENT *pIns = Instruments[nInstr]; @@ -130,14 +129,14 @@ } } delete pIns; - return TRUE; + return true; } -BOOL CSoundFile::IsSampleUsed(UINT nSample) -//----------------------------------------- +bool CSoundFile::IsSampleUsed(SAMPLEINDEX nSample) +//------------------------------------------------ { - if ((!nSample) || (nSample > m_nSamples)) return FALSE; + if ((!nSample) || (nSample > m_nSamples)) return false; if (m_nInstruments) { for (UINT i=1; i<=m_nInstruments; i++) if (Instruments[i]) @@ -145,7 +144,7 @@ MODINSTRUMENT *pIns = Instruments[i]; for (UINT j=0; j<128; j++) { - if (pIns->Keyboard[j] == nSample) return TRUE; + if (pIns->Keyboard[j] == nSample) return true; } } } else @@ -155,33 +154,33 @@ MODCOMMAND *m = Patterns[i]; for (UINT j=m_nChannels*PatternSize[i]; j; m++, j--) { - if (m->instr == nSample) return TRUE; + if (m->instr == nSample) return true; } } } - return FALSE; + return false; } -BOOL CSoundFile::IsInstrumentUsed(UINT nInstr) -//-------------------------------------------- +bool CSoundFile::IsInstrumentUsed(INSTRUMENTINDEX nInstr) +//------------------------------------------------------- { - if ((!nInstr) || (nInstr > m_nInstruments) || (!Instruments[nInstr])) return FALSE; + if ((!nInstr) || (nInstr > m_nInstruments) || (!Instruments[nInstr])) return false; for (UINT i=0; i<Patterns.Size(); i++) if (Patterns[i]) { MODCOMMAND *m = Patterns[i]; for (UINT j=m_nChannels*PatternSize[i]; j; m++, j--) { - if (m->instr == nInstr) return TRUE; + if (m->instr == nInstr) return true; } } - return FALSE; + return false; } // Removing all unused samples -BOOL CSoundFile::RemoveInstrumentSamples(UINT nInstr) -//--------------------------------------------------- +bool CSoundFile::RemoveInstrumentSamples(INSTRUMENTINDEX nInstr) +//-------------------------------------------------------------- { BYTE sampleused[MAX_SAMPLES/8]; @@ -194,23 +193,23 @@ UINT n = p->Keyboard[r]; if (n < MAX_SAMPLES) sampleused[n>>3] |= (1<<(n&7)); } - for (UINT smp=1; smp<MAX_INSTRUMENTS; smp++) if ((Instruments[smp]) && (smp != nInstr)) + for (SAMPLEINDEX nSmp=1; nSmp<MAX_INSTRUMENTS; nSmp++) if ((Instruments[nSmp]) && (nSmp != nInstr)) { - p = Instruments[smp]; + p = Instruments[nSmp]; for (UINT r=0; r<128; r++) { UINT n = p->Keyboard[r]; if (n < MAX_SAMPLES) sampleused[n>>3] &= ~(1<<(n&7)); } } - for (UINT d=1; d<=m_nSamples; d++) if (sampleused[d>>3] & (1<<(d&7))) + for (SAMPLEINDEX d = 1; d <= m_nSamples; d++) if (sampleused[d>>3] & (1<<(d&7))) { DestroySample(d); m_szNames[d][0] = 0; } - return TRUE; + return true; } - return FALSE; + return false; } //////////////////////////////////////////////////////////////////////////////// @@ -218,11 +217,11 @@ // I/O From another song // -BOOL CSoundFile::ReadInstrumentFromSong(UINT nInstr, CSoundFile *pSrcSong, UINT nSrcInstr) -//---------------------------------------------------------------------------------------- +bool CSoundFile::ReadInstrumentFromSong(INSTRUMENTINDEX nInstr, CSoundFile *pSrcSong, UINT nSrcInstr) +//--------------------------------------------------------------------------------------------------- { if ((!pSrcSong) || (!nSrcInstr) || (nSrcInstr > pSrcSong->m_nInstruments) - || (nInstr >= MAX_INSTRUMENTS) || (!pSrcSong->Instruments[nSrcInstr])) return FALSE; + || (nInstr >= MAX_INSTRUMENTS) || (!pSrcSong->Instruments[nSrcInstr])) return false; if (m_nInstruments < nInstr) m_nInstruments = nInstr; // -> CODE#0003 // -> DESC="remove instrument's samples" @@ -277,16 +276,16 @@ { ReadSampleFromSong(samplemap[k], pSrcSong, samplesrc[k]); } - return TRUE; + return true; } - return FALSE; + return false; } -BOOL CSoundFile::ReadSampleFromSong(UINT nSample, CSoundFile *pSrcSong, UINT nSrcSample) -//-------------------------------------------------------------------------------------- +bool CSoundFile::ReadSampleFromSong(SAMPLEINDEX nSample, CSoundFile *pSrcSong, UINT nSrcSample) +//--------------------------------------------------------------------------------------------- { - if ((!pSrcSong) || (!nSrcSample) || (nSrcSample > pSrcSong->m_nSamples) || (nSample >= MAX_SAMPLES)) return FALSE; + if ((!pSrcSong) || (!nSrcSample) || (nSrcSample > pSrcSong->m_nSamples) || (nSample >= MAX_SAMPLES)) return false; MODSAMPLE *psmp = &pSrcSong->Samples[nSrcSample]; UINT nSize = psmp->nLength; if (psmp->uFlags & CHN_16BIT) nSize *= 2; @@ -318,7 +317,7 @@ { FrequencyToTranspose(&Samples[nSample]); } - return TRUE; + return true; } @@ -330,8 +329,8 @@ extern BOOL IMAADPCMUnpack16(signed short *pdest, UINT nLen, LPBYTE psrc, DWORD dwBytes, UINT pkBlkAlign); -BOOL CSoundFile::ReadWAVSample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength, DWORD *pdwWSMPOffset) -//------------------------------------------------------------------------------------------------------ +bool CSoundFile::ReadWAVSample(SAMPLEINDEX nSample, LPBYTE lpMemFile, DWORD dwFileLength, DWORD *pdwWSMPOffset) +//------------------------------------------------------------------------------------------------------------- { DWORD dwMemPos = 0, dwDataPos; WAVEFILEHEADER *phdr = (WAVEFILEHEADER *)lpMemFile; @@ -341,9 +340,9 @@ WAVEEXTRAHEADER *pxh; DWORD dwInfoList, dwFact, dwSamplesPerBlock; - if ((!nSample) || (!lpMemFile) || (dwFileLength < (DWORD)(sizeof(WAVEFILEHEADER)+sizeof(WAVEFORMATHEADER)))) return FALSE; + if ((!nSample) || (!lpMemFile) || (dwFileLength < (DWORD)(sizeof(WAVEFILEHEADER)+sizeof(WAVEFORMATHEADER)))) return false; if (((phdr->id_RIFF != IFFID_RIFF) && (phdr->id_RIFF != IFFID_LIST)) - || ((phdr->id_WAVE != IFFID_WAVE) && (phdr->id_WAVE != IFFID_wave))) return FALSE; + || ((phdr->id_WAVE != IFFID_WAVE) && (phdr->id_WAVE != IFFID_wave))) return false; dwMemPos = sizeof(WAVEFILEHEADER); dwDataPos = 0; pfmt = NULL; @@ -410,7 +409,7 @@ } dwMemPos += dwLen + 8; } - if ((!pdata) || (!pfmt) || (pdata->length < 4)) return FALSE; + if ((!pdata) || (!pfmt) || (pdata->length < 4)) return false; if ((pfmtpk) && (pfmt)) { if (pfmt->format != 1) @@ -419,7 +418,7 @@ pfmt = pfmtpk; pfmtpk = tmp; if ((pfmtpk->format != 0x11) || (pfmtpk->bitspersample != 4) - || (pfmtpk->channels != 1)) return FALSE; + || (pfmtpk->channels != 1)) return false; } else pfmtpk = NULL; } // WAVE_FORMAT_PCM, WAVE_FORMAT_IEEE_FLOAT, WAVE_FORMAT_EXTENSIBLE @@ -430,7 +429,7 @@ || (pfmt->bitspersample & 7) || (!pfmt->bitspersample) || (pfmt->bitspersample > 32) - ) return FALSE; + ) return false; DestroySample(nSample); UINT nType = RS_PCM8U; @@ -570,14 +569,14 @@ } } } - return TRUE; + return true; } /////////////////////////////////////////////////////////////// // Save WAV -BOOL CSoundFile::SaveWAVSample(UINT nSample, LPCSTR lpszFileName) +bool CSoundFile::SaveWAVSample(UINT nSample, LPCSTR lpszFileName) //--------------------------------------------------------------- { LPCSTR lpszMPT = "Modplug Tracker\0"; @@ -590,7 +589,7 @@ MODSAMPLE *pSmp = &Samples[nSample]; FILE *f; - if ((f = fopen(lpszFileName, "wb")) == NULL) return FALSE; + if ((f = fopen(lpszFileName, "wb")) == NULL) return false; memset(&extra, 0, sizeof(extra)); memset(&smpl, 0, sizeof(smpl)); header.id_RIFF = IFFID_RIFF; @@ -679,19 +678,19 @@ extra.nVibRate = pSmp->nVibRate; fwrite(&extra, 1, sizeof(extra), f); fclose(f); - return TRUE; + return true; } /////////////////////////////////////////////////////////////// // Save RAW -BOOL CSoundFile::SaveRAWSample(UINT nSample, LPCSTR lpszFileName) +bool CSoundFile::SaveRAWSample(UINT nSample, LPCSTR lpszFileName) //--------------------------------------------------------------- { MODSAMPLE *pSmp = &Samples[nSample]; FILE *f; - if ((f = fopen(lpszFileName, "wb")) == NULL) return FALSE; + if ((f = fopen(lpszFileName, "wb")) == NULL) return false; UINT nType; if (pSmp->uFlags & CHN_STEREO) @@ -700,7 +699,7 @@ nType = (pSmp->uFlags & CHN_16BIT) ? RS_PCM16S : RS_PCM8S; WriteSample(f, pSmp, nType); fclose(f); - return TRUE; + return true; } ///////////////////////////////////////////////////////////// @@ -867,8 +866,8 @@ } -BOOL CSoundFile::ReadPATSample(UINT nSample, LPBYTE lpStream, DWORD dwMemLength) -//------------------------------------------------------------------------------ +bool CSoundFile::ReadPATSample(SAMPLEINDEX nSample, LPBYTE lpStream, DWORD dwMemLength) +//------------------------------------------------------------------------------------- { DWORD dwMemPos = sizeof(GF1PATCHFILEHEADER)+sizeof(GF1INSTRUMENT)+sizeof(GF1LAYER); GF1PATCHFILEHEADER *phdr = (GF1PATCHFILEHEADER *)lpStream; @@ -877,7 +876,7 @@ if ((!lpStream) || (dwMemLength < 512) || (phdr->gf1p != 0x50314647) || (phdr->atch != 0x48435441) || (phdr->version[3] != 0) || (phdr->id[9] != 0) || (phdr->instrum < 1) - || (!phdr->samples) || (!pinshdr->layers)) return FALSE; + || (!phdr->samples) || (!pinshdr->layers)) return false; DestroySample(nSample); PatchToSample(this, nSample, lpStream+dwMemPos, dwMemLength-dwMemPos); if (pinshdr->name[0] > ' ') @@ -885,13 +884,13 @@ memcpy(m_szNames[nSample], pinshdr->name, 16); m_szNames[nSample][16] = 0; } - return TRUE; + return true; } // PAT Instrument -BOOL CSoundFile::ReadPATInstrument(UINT nInstr, LPBYTE lpStream, DWORD dwMemLength) -//--------------------------------------------------------------------------------- +bool CSoundFile::ReadPATInstrument(INSTRUMENTINDEX nInstr, LPBYTE lpStream, DWORD dwMemLength) +//-------------------------------------------------------------------------------------------- { GF1PATCHFILEHEADER *phdr = (GF1PATCHFILEHEADER *)lpStream; GF1INSTRUMENT *pih = (GF1INSTRUMENT *)(lpStream+sizeof(GF1PATCHFILEHEADER)); @@ -904,7 +903,7 @@ || (phdr->gf1p != 0x50314647) || (phdr->atch != 0x48435441) || (phdr->version[3] != 0) || (phdr->id[9] != 0) || (phdr->instrum < 1) || (!phdr->samples) - || (!pih->layers) || (!plh->samples)) return FALSE; + || (!pih->layers) || (!plh->samples)) return false; if (nInstr > m_nInstruments) m_nInstruments = nInstr; // -> CODE#0003 // -> DESC="remove instrument's samples" @@ -912,7 +911,7 @@ DestroyInstrument(nInstr,1); // -! BEHAVIOUR_CHANGE#0003 pIns = new MODINSTRUMENT; - if (!pIns) return FALSE; + if (!pIns) return false; memset(pIns, 0, sizeof(MODINSTRUMENT)); pIns->pTuning = pIns->s_DefaultTuning; Instruments[nInstr] = pIns; @@ -1004,7 +1003,7 @@ } } } - return TRUE; + return true; } @@ -1032,8 +1031,8 @@ DWORD scrs; } S3ISAMPLESTRUCT; -BOOL CSoundFile::ReadS3ISample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength) -//-------------------------------------------------------------------------------- +bool CSoundFile::ReadS3ISample(SAMPLEINDEX nSample, LPBYTE lpMemFile, DWORD dwFileLength) +//--------------------------------------------------------------------------------------- { S3ISAMPLESTRUCT *pss = (S3ISAMPLESTRUCT *)lpMemFile; MODSAMPLE *pSmp = &Samples[nSample]; @@ -1042,7 +1041,7 @@ if ((!lpMemFile) || (dwFileLength < sizeof(S3ISAMPLESTRUCT)) || (pss->id != 0x01) || (((DWORD)pss->offset << 4) >= dwFileLength) - || (pss->scrs != 0x53524353)) return FALSE; + || (pss->scrs != 0x53524353)) return false; DestroySample(nSample); dwMemPos = pss->offset << 4; memcpy(pSmp->filename, pss->filename, 12); @@ -1063,7 +1062,7 @@ flags = (pss->flags & 0x04) ? RS_PCM16U : RS_PCM8U; if (pss->flags & 0x02) flags |= RSF_STEREO; ReadSample(pSmp, flags, (LPSTR)(lpMemFile+dwMemPos), dwFileLength-dwMemPos); - return TRUE; + return true; } @@ -1112,8 +1111,8 @@ -BOOL CSoundFile::ReadXIInstrument(UINT nInstr, LPBYTE lpMemFile, DWORD dwFileLength) -//---------------------------------------------------------------------------------- +bool CSoundFile::ReadXIInstrument(INSTRUMENTINDEX nInstr, LPBYTE lpMemFile, DWORD dwFileLength) +//--------------------------------------------------------------------------------------------- { XIFILEHEADER *pxh = (XIFILEHEADER *)lpMemFile; XIINSTRUMENTHEADER *pih = (XIINSTRUMENTHEADER *)(lpMemFile+sizeof(XIFILEHEADER)); @@ -1123,11 +1122,11 @@ DWORD dwMemPos = sizeof(XIFILEHEADER)+sizeof(XIINSTRUMENTHEADER); UINT nsamples; - if ((!lpMemFile) || (dwFileLength < sizeof(XIFILEHEADER)+sizeof(XIINSTRUMENTHEADER))) return FALSE; - if (dwMemPos + pxh->shsize - 0x102 >= dwFileLength) return FALSE; - if (memcmp(pxh->extxi, "Extended Instrument", 19)) return FALSE; + if ((!lpMemFile) || (dwFileLength < sizeof(XIFILEHEADER)+sizeof(XIINSTRUMENTHEADER))) return false; + if (dwMemPos + pxh->shsize - 0x102 >= dwFileLength) return false; + if (memcmp(pxh->extxi, "Extended Instrument", 19)) return false; dwMemPos += pxh->shsize - 0x102; - if ((dwMemPos < sizeof(XIFILEHEADER)) || (dwMemPos >= dwFileLength)) return FALSE; + if ((dwMemPos < sizeof(XIFILEHEADER)) || (dwMemPos >= dwFileLength)) return false; if (nInstr > m_nInstruments) m_nInstruments = nInstr; // -> CODE#0003 // -> DESC="remove instrument's samples" @@ -1136,7 +1135,7 @@ // -! BEHAVIOUR_CHANGE#0003 Instruments[nInstr] = new MODINSTRUMENT; MODINSTRUMENT *pIns = Instruments[nInstr]; - if (!pIns) return FALSE; + if (!pIns) return false; memset(pIns, 0, sizeof(MODINSTRUMENT)); pIns->pTuning = pIns->s_DefaultTuning; memcpy(pIns->name, pxh->name, 22); @@ -1295,18 +1294,18 @@ // -> DESC="per-instrument volume ramping setup (refered as attack)" // Leave if no extra instrument settings are available (end of file reached) - if(dwMemPos >= dwFileLength) return TRUE; + if(dwMemPos >= dwFileLength) return true; ReadExtendedInstrumentProperties(pIns, lpMemFile + dwMemPos, dwFileLength - dwMemPos); // -! NEW_FEATURE#0027 - return TRUE; + return true; } -BOOL CSoundFile::SaveXIInstrument(UINT nInstr, LPCSTR lpszFileName) -//----------------------------------------------------------------- +bool CSoundFile::SaveXIInstrument(INSTRUMENTINDEX nInstr, LPCSTR lpszFileName) +//---------------------------------------------------------------------------- { XIFILEHEADER xfh; XIINSTRUMENTHEADER xih; @@ -1316,8 +1315,8 @@ UINT nsamples; FILE *f; - if ((!pIns) || (!lpszFileName)) return FALSE; - if ((f = fopen(lpszFileName, "wb")) == NULL) return FALSE; + if ((!pIns) || (!lpszFileName)) return false; + if ((f = fopen(lpszFileName, "wb")) == NULL) return false; // XI File Header memset(&xfh, 0, sizeof(xfh)); memset(&xih, 0, sizeof(xih)); @@ -1431,12 +1430,12 @@ fclose(f); - return TRUE; + return true; } -BOOL CSoundFile::ReadXISample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength) -//------------------------------------------------------------------------------- +bool CSoundFile::ReadXISample(SAMPLEINDEX nSample, LPBYTE lpMemFile, DWORD dwFileLength) +//-------------------------------------------------------------------------------------- { XIFILEHEADER *pxh = (XIFILEHEADER *)lpMemFile; XIINSTRUMENTHEADER *pih = (XIINSTRUMENTHEADER *)(lpMemFile+sizeof(XIFILEHEADER)); @@ -1445,10 +1444,10 @@ MODSAMPLE *pSmp = &Samples[nSample]; UINT nsamples; - if ((!lpMemFile) || (dwFileLength < sizeof(XIFILEHEADER)+sizeof(XIINSTRUMENTHEADER))) return FALSE; - if (memcmp(pxh->extxi, "Extended Instrument", 19)) return FALSE; + if ((!lpMemFile) || (dwFileLength < sizeof(XIFILEHEADER)+sizeof(XIINSTRUMENTHEADER))) return false; + if (memcmp(pxh->extxi, "Extended Instrument", 19)) return false; dwMemPos += pxh->shsize - 0x102; - if ((dwMemPos < sizeof(XIFILEHEADER)) || (dwMemPos >= dwFileLength)) return FALSE; + if ((dwMemPos < sizeof(XIFILEHEADER)) || (dwMemPos >= dwFileLength)) return false; DestroySample(nSample); nsamples = 0; for (UINT i=0; i<96; i++) @@ -1516,9 +1515,9 @@ memcpy(pSmp->filename, psh->name, 22); pSmp->filename[21] = 0; } - if (dwMemPos >= dwFileLength) return TRUE; + if (dwMemPos >= dwFileLength) return true; ReadSample(pSmp, sampleflags, (LPSTR)(lpMemFile+dwMemPos), dwFileLength-dwMemPos); - return TRUE; + return true; } @@ -1580,8 +1579,8 @@ -BOOL CSoundFile::ReadAIFFSample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength) -//--------------------------------------------------------------------------------- +bool CSoundFile::ReadAIFFSample(SAMPLEINDEX nSample, LPBYTE lpMemFile, DWORD dwFileLength) +//---------------------------------------------------------------------------------------- { DWORD dwMemPos = sizeof(AIFFFILEHEADER); DWORD dwFORMLen, dwCOMMLen, dwSSNDLen; @@ -1590,22 +1589,22 @@ AIFFSSND *psnd; UINT nType; - if ((!lpMemFile) || (dwFileLength < (DWORD)sizeof(AIFFFILEHEADER))) return FALSE; + if ((!lpMemFile) || (dwFileLength < (DWORD)sizeof(AIFFFILEHEADER))) return false; dwFORMLen = BigEndian(phdr->dwLen); if ((phdr->dwFORM != 0x4D524F46) || (phdr->dwAIFF != 0x46464941) - || (dwFORMLen > dwFileLength) || (dwFORMLen < (DWORD)sizeof(AIFFCOMM))) return FALSE; + || (dwFORMLen > dwFileLength) || (dwFORMLen < (DWORD)sizeof(AIFFCOMM))) return false; pcomm = (AIFFCOMM *)(lpMemFile+dwMemPos); dwCOMMLen = BigEndian(pcomm->dwLen); - if ((pcomm->dwCOMM != 0x4D4D4F43) || (dwCOMMLen < 0x12) || (dwCOMMLen >= dwFileLength)) return FALSE; - if ((pcomm->wChannels != 0x0100) && (pcomm->wChannels != 0x0200)) return FALSE; - if ((pcomm->wSampleSize != 0x0800) && (pcomm->wSampleSize != 0x1000)) return FALSE; + if ((pcomm->dwCOMM != 0x4D4D4F43) || (dwCOMMLen < 0x12) || (dwCOMMLen >= dwFileLength)) return false; + if ((pcomm->wChannels != 0x0100) && (pcomm->wChannels != 0x0200)) return false; + if ((pcomm->wSampleSize != 0x0800) && (pcomm->wSampleSize != 0x1000)) return false; dwMemPos += dwCOMMLen + 8; - if (dwMemPos + sizeof(AIFFSSND) >= dwFileLength) return FALSE; + if (dwMemPos + sizeof(AIFFSSND) >= dwFileLength) return false; psnd = (AIFFSSND *)(lpMemFile+dwMemPos); dwSSNDLen = BigEndian(psnd->dwLen); - if ((psnd->dwSSND != 0x444E5353) || (dwSSNDLen >= dwFileLength) || (dwSSNDLen < 8)) return FALSE; + if ((psnd->dwSSND != 0x444E5353) || (dwSSNDLen >= dwFileLength) || (dwSSNDLen < 8)) return false; dwMemPos += sizeof(AIFFSSND); - if (dwMemPos >= dwFileLength) return FALSE; + if (dwMemPos >= dwFileLength) return false; DestroySample(nSample); if (pcomm->wChannels == 0x0100) { @@ -1641,7 +1640,7 @@ m_szNames[nSample][0] = 0; if (pSmp->nLength > MAX_SAMPLE_LENGTH) pSmp->nLength = MAX_SAMPLE_LENGTH; ReadSample(pSmp, nType, (LPSTR)(lpMemFile+dwMemPos), dwFileLength-dwMemPos); - return TRUE; + return true; } @@ -1651,9 +1650,8 @@ // -> CODE#0027 // -> DESC="per-instrument volume ramping setup (refered as attack)" //BOOL CSoundFile::ReadITSSample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength, DWORD dwOffset) -UINT CSoundFile::ReadITSSample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength, DWORD dwOffset) -// -! NEW_FEATURE#0027 -//------------------------------------------------------------------------------------------------ +UINT CSoundFile::ReadITSSample(SAMPLEINDEX nSample, LPBYTE lpMemFile, DWORD dwFileLength, DWORD dwOffset) +//------------------------------------------------------------------------------------------------------- { ITSAMPLESTRUCT *pis = (ITSAMPLESTRUCT *)lpMemFile; MODSAMPLE *pSmp = &Samples[nSample]; @@ -1728,8 +1726,8 @@ } -BOOL CSoundFile::ReadITIInstrument(UINT nInstr, LPBYTE lpMemFile, DWORD dwFileLength) -//----------------------------------------------------------------------------------- +bool CSoundFile::ReadITIInstrument(INSTRUMENTINDEX nInstr, LPBYTE lpMemFile, DWORD dwFileLength) +//---------------------------------------------------------------------------------------------- { ITINSTRUMENT *pinstr = (ITINSTRUMENT *)lpMemFile; WORD samplemap[NOTE_MAX]; //rewbs.noSamplePerInstroLimit (120 was 64) @@ -1737,7 +1735,7 @@ UINT nsmp, nsamples; if ((!lpMemFile) || (dwFileLength < sizeof(ITINSTRUMENT)) - || (pinstr->id != 0x49504D49)) return FALSE; + || (pinstr->id != 0x49504D49)) return false; if (nInstr > m_nInstruments) m_nInstruments = nInstr; // -> CODE#0003 // -> DESC="remove instrument's samples" @@ -1746,7 +1744,7 @@ // -! BEHAVIOUR_CHANGE#0003 Instruments[nInstr] = new MODINSTRUMENT; MODINSTRUMENT *pIns = Instruments[nInstr]; - if (!pIns) return FALSE; + if (!pIns) return false; memset(pIns, 0, sizeof(MODINSTRUMENT)); pIns->pTuning = pIns->s_DefaultTuning; memset(samplemap, 0, sizeof(samplemap)); @@ -1805,18 +1803,18 @@ ITSAMPLESTRUCT *pis = (ITSAMPLESTRUCT *)ptr; dwMemPos += pis->samplepointer - dwMemPos + lastSampleSize; // Leave if no extra instrument settings are available (end of file reached) - if(dwMemPos >= dwFileLength) return TRUE; + if(dwMemPos >= dwFileLength) return true; ReadExtendedInstrumentProperties(pIns, lpMemFile + dwMemPos, dwFileLength - dwMemPos); // -! NEW_FEATURE#0027 - return TRUE; + return true; } -BOOL CSoundFile::SaveITIInstrument(UINT nInstr, LPCSTR lpszFileName) -//------------------------------------------------------------------ +bool CSoundFile::SaveITIInstrument(INSTRUMENTINDEX nInstr, LPCSTR lpszFileName) +//----------------------------------------------------------------------------- { BYTE buffer[554]; ITINSTRUMENT *iti = (ITINSTRUMENT *)buffer; @@ -1826,8 +1824,8 @@ DWORD dwPos; FILE *f; - if ((!pIns) || (!lpszFileName)) return FALSE; - if ((f = fopen(lpszFileName, "wb")) == NULL) return FALSE; + if ((!pIns) || (!lpszFileName)) return false; + if ((f = fopen(lpszFileName, "wb")) == NULL) return false; memset(buffer, 0, sizeof(buffer)); memset(smpcount, 0, sizeof(smpcount)); memset(smptable, 0, sizeof(smptable)); @@ -1999,7 +1997,7 @@ WriteInstrumentHeaderStruct(pIns, f); // Write full extended header. fclose(f); - return TRUE; + return true; } @@ -2112,8 +2110,8 @@ -BOOL CSoundFile::Read8SVXSample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength) -//-------------------------------------------------------------------------------- +bool CSoundFile::Read8SVXSample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength) +//--------------------------------------------------------------------------------- { IFF8SVXFILEHEADER *pfh = (IFF8SVXFILEHEADER *)lpMemFile; IFFVHDR *pvh = (IFFVHDR *)(lpMemFile + 12); @@ -2122,7 +2120,7 @@ if ((!lpMemFile) || (dwFileLength < sizeof(IFFVHDR)+12) || (pfh->dwFORM != IFFID_FORM) || (pfh->dw8SVX != IFFID_8SVX) || (BigEndian(pfh->dwSize) >= dwFileLength) - || (pvh->dwVHDR != IFFID_VHDR) || (BigEndian(pvh->dwSize) >= dwFileLength)) return FALSE; + || (pvh->dwVHDR != IFFID_VHDR) || (BigEndian(pvh->dwSize) >= dwFileLength)) return false; DestroySample(nSample); // Default values pSmp->nGlobalVol = 64; @@ -2174,7 +2172,7 @@ } dwMemPos += dwChunkLen + 8; } - return TRUE; + return true; } Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp =================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-09-15 17:15:29 UTC (rev 364) @@ -3083,7 +3083,7 @@ MODCHANNEL *pChn = &Chn[nChn]; UINT nRetrigSpeed = param & 0x0F; UINT nRetrigCount = pChn->nRetrigCount; - BOOL bDoRetrig = FALSE; + bool bDoRetrig = false; if(IsCompatibleMode(TRK_IMPULSETRACKER)) { @@ -3095,7 +3095,7 @@ else if (!pChn->nRetrigCount || !--pChn->nRetrigCount) { pChn->nRetrigCount = param & 0xf; - bDoRetrig = TRUE; + bDoRetrig = true; } } else @@ -3103,7 +3103,7 @@ if (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_MPT)) { if (!nRetrigSpeed) nRetrigSpeed = 1; - if ((nRetrigCount) && (!(nRetrigCount % nRetrigSpeed))) bDoRetrig = TRUE; + if ((nRetrigCount) && (!(nRetrigCount % nRetrigSpeed))) bDoRetrig = true; nRetrigCount++; } else { @@ -3112,12 +3112,12 @@ if ((m_nTickCount) || (param & 0x100)) { if (!realspeed) realspeed = 1; - if ((!(param & 0x100)) && (m_nMusicSpeed) && (!(m_nTickCount % realspeed))) bDoRetrig = TRUE; + if ((!(param & 0x100)) && (m_nMusicSpeed) && (!(m_nTickCount % realspeed))) bDoRetrig = true; nRetrigCount++; } else if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) nRetrigCount = 0; if (nRetrigCount >= realspeed) { - if ((m_nTickCount) || ((param & 0x100) && (!pChn->nRowNote))) bDoRetrig = TRUE; + if ((m_nTickCount) || ((param & 0x100) && (!pChn->nRowNote))) bDoRetrig = true; } } } @@ -3152,12 +3152,13 @@ if ((pChn->nRowInstr) && (param < 0x100)) { InstrumentChange(pChn, pChn->nRowInstr, FALSE, FALSE); bResetEnv = TRUE; } if (param < 0x100) bResetEnv = TRUE; } - NoteChange(nChn, nNote, false, bResetEnv); + NoteChange(nChn, nNote, IsCompatibleMode(TRK_IMPULSETRACKER) ? true : false, bResetEnv); if (m_nInstruments) { ProcessMidiOut(nChn, pChn); //Send retrig to Midi } if ((m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT)) && (!pChn->nRowNote) && (nOldPeriod)) pChn->nPeriod = nOldPeriod; if (!(m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_MPT))) nRetrigCount = 0; + if(IsCompatibleMode(TRK_IMPULSETRACKER)) pChn->nPos = pChn->nPosLo = 0; if (offset) //rewbs.volOffset: apply offset on retrig { Modified: trunk/OpenMPT/soundlib/Sndfile.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/soundlib/Sndfile.cpp 2009-09-15 17:15:29 UTC (rev 364) @@ -1337,10 +1337,10 @@ //m_nSeqOverride = 0; } -int CSoundFile::FindOrder(PATTERNINDEX pat, UINT startFromOrder, bool direction) -//---------------------------------------------------------------------- +ORDERINDEX CSoundFile::FindOrder(PATTERNINDEX pat, UINT startFromOrder, bool direction) +//------------------------------------------------------------------------------------- { - int foundAtOrder = -1; + int foundAtOrder = ORDERINDEX_INVALID; int candidateOrder = 0; for (UINT p=0; p<Order.size(); p++) { @@ -1708,15 +1708,15 @@ } -BOOL CSoundFile::CanPackSample(LPSTR pSample, UINT nLen, UINT nPacking, BYTE *result) -//----------------------------------------------------------------------------------- +bool CSoundFile::CanPackSample(LPSTR pSample, UINT nLen, UINT nPacking, BYTE *result/*=NULL*/) +//-------------------------------------------------------------------------------------------- { int pos, old, oldpos, besttable = 0; DWORD dwErr, dwTotal, dwResult; int i,j; if (result) *result = 0; - if ((!pSample) || (nLen < 1024)) return FALSE; + if ((!pSample) || (nLen < 1024)) return false; // Try packing with different tables dwResult = 0; for (j=1; j<MAX_PACK_TABLES; j++) @@ -1746,7 +1746,7 @@ { if (dwResult > 100) *result = 100; else *result = (BYTE)dwResult; } - return (dwResult >= nPacking) ? TRUE : FALSE; + return (dwResult >= nPacking) ? true : false; } #endif // NO_PACKING @@ -2743,10 +2743,10 @@ } -BOOL CSoundFile::RemoveSelectedSamples(BOOL *pbIns) +bool CSoundFile::RemoveSelectedSamples(bool *pbIns) //------------------------------------------------- { - if (!pbIns) return FALSE; + if (!pbIns) return false; for (UINT j=1; j<MAX_SAMPLES; j++) { if ((!pbIns[j]) && (Samples[j].pSample)) @@ -2755,15 +2755,15 @@ if ((j == m_nSamples) && (j > 1)) m_nSamples--; } } - return TRUE; + return true; } -BOOL CSoundFile::DestroySample(UINT nSample) -//------------------------------------------ +bool CSoundFile::DestroySample(SAMPLEINDEX nSample) +//------------------------------------------------- { - if ((!nSample) || (nSample >= MAX_SAMPLES)) return FALSE; - if (!Samples[nSample].pSample) return TRUE; + if ((!nSample) || (nSample >= MAX_SAMPLES)) return false; + if (!Samples[nSample].pSample) return true; MODSAMPLE *pSmp = &Samples[nSample]; LPSTR pSample = pSmp->pSample; pSmp->pSample = nullptr; @@ -2778,13 +2778,13 @@ } } FreeSample(pSample); - return TRUE; + return true; } // -> CODE#0020 // -> DESC="rearrange sample list" -bool CSoundFile::MoveSample(UINT from, UINT to) -//--------------------------------------------- +bool CSoundFile::MoveSample(SAMPLEINDEX from, SAMPLEINDEX to) +//----------------------------------------------------------- { if (!from || from >= MAX_SAMPLES || !to || to >= MAX_SAMPLES) return false; if (/*!Ins[from].pSample ||*/ Samples[to].pSample) return true; Modified: trunk/OpenMPT/soundlib/Sndfile.h =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.h 2009-09-13 20:41:27 UTC (rev 363) +++ trunk/OpenMPT/soundlib/Sndfile.h 2009-09-15 17:15:29 UTC (rev 364) @@ -634,7 +634,7 @@ static const CModSpecifications& GetModSpecifications(const MODTYPE type); double GetCurrentBPM() const; - int FindOrder(PATTERNINDEX pat, UINT startFromOrder=0, bool direction=true); //rewbs.playSongFromCursor + ORDERINDEX FindOrder(PATTERNINDEX pat, UINT startFromOrder=0, bool direction=true); //rewbs.playSongFromCursor void DontLoopPattern(int nPat, int nRow=0); //rewbs.playSongFromCursor void SetCurrentPos(UINT nPos); void SetCurrentOrder(UINT nOrder); @@ -848,55 +848,54 @@ // Read/Write sample functions char GetDeltaValue(char prev, UINT n) const { return (char)(prev + CompressionTable[n & 0x0F]); } UINT PackSample(int &sample, int next); - BOOL CanPackSample(LPSTR pSample, UINT nLen, UINT nPacking, BYTE *result=NULL); + bool CanPackSample(LPSTR pSample, UINT nLen, UINT nPacking, BYTE *result=NULL); UINT ReadSample(MODSAMPLE *pSmp, UINT nFlags, LPCSTR pMemFile, DWORD dwMemLength, const WORD format = 1); - BOOL DestroySample(UINT nSample); + bool DestroySample(SAMPLEINDEX nSample); // -> CODE#0020 // -> DESC="rearrange sample list" - bool MoveSample(UINT from,UINT to); + bool MoveSample(SAMPLEINDEX from, SAMPLEINDEX to); // -! NEW_FEATURE#0020 // -> CODE#0003 // -> DESC="remove instrument's samples" //BOOL DestroyInstrument(UINT nInstr); - BOOL DestroyInstrument(UINT nInstr, char removeSamples = 0); + bool DestroyInstrument(INSTRUMENTINDEX nInstr, char removeSamples = 0); // -! BEHAVIOUR_CHANGE#0003 - BOOL IsSampleUsed(UINT nSample); - BOOL IsInstrumentUsed(UINT nInstr); - BOOL RemoveInstrumentSamples(UINT nInstr); + bool IsSampleUsed(SAMPLEINDEX nSample); + bool IsInstrumentUsed(INSTRUMENTINDEX nInstr); + bool RemoveInstrumentSamples(INSTRUMENTINDEX nInstr); UINT DetectUnusedSamples(BYTE *); // bitmask - BOOL RemoveSelectedSamples(BOOL *); + bool RemoveSelectedSamples(bool *pbIns); void AdjustSampleLoop(MODSAMPLE *pSmp); // Samples file I/O - BOOL ReadSampleFromFile(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength); - BOOL ReadWAVSample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength, DWORD *pdwWSMPOffset=NULL); - BOOL ReadPATSample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength); - BOOL ReadS3ISample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength); - BOOL ReadAIFFSample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength); - BOOL ReadXISample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength); + bool ReadSampleFromFile(SAMPLEINDEX nSample, LPBYTE lpMemFile, DWORD dwFileLength); + bool ReadWAVSample(SAMPLEINDEX nSample, LPBYTE lpMemFile, DWORD dwFileLength, DWORD *pdwWSMPOffset=NULL); + bool ReadPATSample(SAMPLEINDEX nSample, LPBYTE lpMemFile, DWORD dwFileLength); + bool ReadS3ISample(SAMPLEINDEX nSample, LPBYTE lpMemFile, DWORD dwFileLength); + bool ReadAIFFSample(SAMPLEINDEX nSample, LPBYTE lpMemFile, DWORD dwFileLength); + bool ReadXISample(SAMPLEINDEX nSample, LPBYTE lpMemFile, DWORD dwFileLength); // -> CODE#0027 // -> DESC="per-instrument volume ramping setup (refered as attack)" // BOOL ReadITSSample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength, DWORD dwOffset=0); - UINT ReadITSSample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength, DWORD dwOffset=0); + UINT ReadITSSample(SAMPLEINDEX nSample, LPBYTE lpMemFile, DWORD dwFileLength, DWORD dwOffset=0); // -! NEW_FEATURE#0027 - BOOL ReadITISample(UINT nSample, LPBYTE lpMemFile, DWORD dwFileLength); - BOOL Read8SVXSample(UINT nInstr, LPBYTE lpMemFile, DWORD dwFileLength); - BOOL SaveWAVSample(UINT nSample, LPCSTR lpszFileName); - BOOL SaveRAWSample(UINT nSample, LPCSTR lpszFileName); + bool Read8SVXSample(UINT nInstr, LPBYTE lpMemFile, DWORD dwFileLength); + bool SaveWAVSample(UINT nSample, LPCSTR lpszFileName); + bool SaveRAWSample(UINT nSample, LPCSTR lpszFileName); // Instrument file I/O - BOOL ReadInstrumentFromFile(UINT nInstr, LPBYTE lpMemFile, DWORD dwFileLength); - BOOL ReadXIInstrument(UINT nInstr, LPBYTE lpMemFile, DWORD dwFileLength); - BOOL ReadITIInstrument(UINT nInstr, LPBYTE lpMemFile, DWORD dwFileLength); - BOOL ReadPATInstrument(UINT nInstr, LPBYTE lpMemFile, DWORD dwFileLength); - BOOL ReadSampleAsInstrument(UINT nInstr, LPBYTE lpMemFile, DWORD dwFileLength); - BOOL SaveXIInstrument(UINT nInstr, LPCSTR lpszFileName); - BOOL SaveITIInstrument(UINT nInstr, LPCSTR lpszFileName); + bool ReadInstrumentFromFile(INSTRUMENTINDEX nInstr, LPBYTE lpMemFile, DWORD dwFileLength); + bool ReadXIInstrument(INSTRUMENTINDEX nInstr, LPBYTE lpMemFile, DWORD dwFileLength); + bool ReadITIInstrument(INSTRUMENTINDEX nInstr, LPBYTE lpMemFile, DWORD dwFileLength); + bool ReadPATInstrument(INSTRUMENTINDEX nInstr, LPBYTE lpMemFile, DWORD dwFileLength); + bool ReadSampleAsInstrument(INSTRUMENTINDEX nInstr, LPBYTE lpMemFile, DWORD dwFileLength); + bool SaveXIInstrument(INSTRUMENTINDEX nInstr, LPCSTR lpszFileName); + bool SaveITIInstrument(INSTRUMENTINDEX nInstr, LPCSTR lpszFileName); // I/O from another sound file - BOOL ReadInstrumentFromSong(UINT nInstr, CSoundFile *, UINT nSrcInstrument); - BOOL ReadSampleFromSong(UINT nSample, CSoundFile *, UINT nSrcSample); + bool ReadInstrumentFromSong(INSTRUMENTINDEX nInstr, CSoundFile *pSrcSong, UINT nSrcInstrument); + bool ReadSampleFromSong(SAMPLEINDEX nSample, CSoundFile *pSrcSong, UINT nSrcSample); // Period/Note functions UINT GetNoteFromPeriod(UINT period) const; UINT GetPeriodFromNote(UINT note, int nFineTune, UINT nC5Speed) const; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |