From: <sag...@us...> - 2014-03-24 02:32:03
|
Revision: 3943 http://sourceforge.net/p/modplug/code/3943 Author: saga-games Date: 2014-03-24 02:31:54 +0000 (Mon, 24 Mar 2014) Log Message: ----------- [Ref] Various small changes with no change in functionality. Modified Paths: -------------- trunk/OpenMPT/common/BuildSettings.h trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/Draw_pat.cpp trunk/OpenMPT/mptrack/Globals.cpp trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/PatternClipboard.cpp trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp trunk/OpenMPT/mptrack/PatternEditorDialogs.h trunk/OpenMPT/mptrack/Reporting.cpp trunk/OpenMPT/mptrack/SampleEditorDialogs.cpp trunk/OpenMPT/mptrack/View_gen.cpp trunk/OpenMPT/mptrack/View_ins.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/soundlib/ITTools.cpp trunk/OpenMPT/soundlib/Load_it.cpp trunk/OpenMPT/soundlib/Load_mod.cpp trunk/OpenMPT/soundlib/Load_s3m.cpp trunk/OpenMPT/soundlib/Snd_defs.h trunk/OpenMPT/soundlib/modcommand.cpp trunk/OpenMPT/test/TestToolsTracker.h Modified: trunk/OpenMPT/common/BuildSettings.h =================================================================== --- trunk/OpenMPT/common/BuildSettings.h 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/common/BuildSettings.h 2014-03-24 02:31:54 UTC (rev 3943) @@ -103,7 +103,7 @@ // Disable the built-in reverb effect //#define NO_REVERB -// Disable built-in miscellaneous DSP effects (surround, mega bass) +// Disable built-in miscellaneous DSP effects (surround, mega bass, noise reduction) //#define NO_DSP // Disable the built-in equalizer. Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp =================================================================== --- trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -124,7 +124,7 @@ CChannelManagerDlg::~CChannelManagerDlg(void) { - if(this == CChannelManagerDlg::sharedInstance_) CChannelManagerDlg::sharedInstance_ = NULL; + if(this == CChannelManagerDlg::sharedInstance_) CChannelManagerDlg::sharedInstance_ = nullptr; if(bkgnd) DeleteObject(bkgnd); } @@ -135,16 +135,16 @@ HWND menu = ::GetDlgItem(m_hWnd,IDC_TAB1); TCITEM tie; - tie.mask = TCIF_TEXT | TCIF_IMAGE; - tie.iImage = -1; - tie.pszText = "Solo/Mute"; - TabCtrl_InsertItem(menu, 0, &tie); - tie.pszText = "Record select"; - TabCtrl_InsertItem(menu, 1, &tie); - tie.pszText = "Fx plugins"; - TabCtrl_InsertItem(menu, 2, &tie); - tie.pszText = "Reorder/Remove"; - TabCtrl_InsertItem(menu, 3, &tie); + tie.mask = TCIF_TEXT | TCIF_IMAGE; + tie.iImage = -1; + tie.pszText = "Solo/Mute"; + TabCtrl_InsertItem(menu, 0, &tie); + tie.pszText = "Record select"; + TabCtrl_InsertItem(menu, 1, &tie); + tie.pszText = "Fx plugins"; + TabCtrl_InsertItem(menu, 2, &tie); + tie.pszText = "Reorder/Remove"; + TabCtrl_InsertItem(menu, 3, &tie); currentTab = 0; for(CHANNELINDEX nChn = 0; nChn < MAX_BASECHANNELS; nChn++) Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -2311,13 +2311,13 @@ m_modDoc.GetSampleUndo().PrepareUndo(m_nSample, sundo_update, "Silence", selection.nStart, selection.nEnd); SmpLength len = selection.nEnd - selection.nStart; - if (sample.uFlags & CHN_STEREO) + if (sample.uFlags[CHN_STEREO]) { - int smplsize = (sample.uFlags & CHN_16BIT) ? 4 : 2; + int smplsize = sample.GetBytesPerSample(); signed char *p = ((signed char *)sample.pSample) + selection.nStart * smplsize; - memset(p, 0, len*smplsize); + memset(p, 0, len * smplsize); } else - if (sample.uFlags & CHN_16BIT) + if (sample.uFlags[CHN_16BIT]) { short int *p = ((short int *)sample.pSample) + selection.nStart; int dest = (selection.nEnd < sample.nLength) ? p[len-1] : 0; @@ -2373,11 +2373,11 @@ void CCtrlSamples::OnNameChanged() //-------------------------------- { - char s[MAX_SAMPLENAME] = { '\0' }; + TCHAR s[MAX_SAMPLENAME] = _T(""); if(IsLocked() || !m_nSample) return; - m_EditName.GetWindowText(s, sizeof(s)); - if (strncmp(s, m_sndFile.m_szNames[m_nSample], MAX_SAMPLENAME)) + m_EditName.GetWindowText(s, CountOf(s)); + if (_tcscmp(s, m_sndFile.m_szNames[m_nSample])) { mpt::String::Copy(m_sndFile.m_szNames[m_nSample], s); m_modDoc.UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | (HINT_SMPNAMES|HINT_SAMPLEINFO), this); @@ -2390,12 +2390,12 @@ void CCtrlSamples::OnFileNameChanged() //------------------------------------ { - char s[MAX_SAMPLEFILENAME] = { '\0' }; + TCHAR s[MAX_SAMPLEFILENAME] = _T(""); if(IsLocked()) return; - m_EditFileName.GetWindowText(s, sizeof(s)); + m_EditFileName.GetWindowText(s, CountOf(s)); - if (strncmp(s, m_sndFile.GetSample(m_nSample).filename, MAX_SAMPLEFILENAME)) + if (_tcscmp(s, m_sndFile.GetSample(m_nSample).filename)) { mpt::String::Copy(m_sndFile.GetSample(m_nSample).filename, s); m_modDoc.UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEINFO, this); @@ -2427,7 +2427,7 @@ Limit(nVol, 0, 64); if (nVol != m_sndFile.GetSample(m_nSample).nGlobalVol) { - m_sndFile.GetSample(m_nSample).nGlobalVol = (WORD)nVol; + m_sndFile.GetSample(m_nSample).nGlobalVol = (uint16)nVol; m_modDoc.SetModified(); } } @@ -2437,28 +2437,18 @@ //-------------------------------------- { if (IsLocked()) return; - BOOL b = FALSE; - if (m_sndFile.m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT)) + bool b = false; + if (m_sndFile.GetType() & (MOD_TYPE_IT|MOD_TYPE_MPT)) { - b = IsDlgButtonChecked(IDC_CHECK1); + b = IsDlgButtonChecked(IDC_CHECK1) != FALSE; } ModSample &sample = m_sndFile.GetSample(m_nSample); - if (b) + if(b != sample.uFlags[CHN_PANNING]) { - if (!(sample.uFlags & CHN_PANNING)) - { - sample.uFlags |= CHN_PANNING; - m_modDoc.SetModified(); - } - } else - { - if (sample.uFlags & CHN_PANNING) - { - sample.uFlags &= ~CHN_PANNING; - m_modDoc.SetModified(); - } + sample.uFlags.set(CHN_PANNING, b); + m_modDoc.SetModified(); } } @@ -2481,7 +2471,7 @@ //end rewbs.fix36944 if (nPan != m_sndFile.GetSample(m_nSample).nPan) { - m_sndFile.GetSample(m_nSample).nPan = (WORD)nPan; + m_sndFile.GetSample(m_nSample).nPan = (uint16)nPan; if (m_sndFile.m_nType & (MOD_TYPE_XM|MOD_TYPE_IT|MOD_TYPE_MPT)) m_modDoc.SetModified(); } } @@ -2512,7 +2502,7 @@ } } else { - if(m_sndFile.m_nType & MOD_TYPE_MOD) + if(m_sndFile.GetType() & MOD_TYPE_MOD) n = MOD2XMFineTune(n); if ((n >= -128) && (n <= 127)) { Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Draw_pat.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/mptrack/Draw_pat.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -34,7 +34,23 @@ #define VUMETERS_MEDWIDTH 24 #define VUMETERS_LOWIDTH 16 +enum +{ + COLUMN_BITS_NONE = 0x00, + COLUMN_BITS_NOTE = 0x01, + COLUMN_BITS_INSTRUMENT = 0x02, + COLUMN_BITS_VOLUME = 0x04, + COLUMN_BITS_FXCMD = 0x08, + COLUMN_BITS_FXPARAM = 0x10, + COLUMN_BITS_FXCMDANDPARAM = 0x18, + COLUMN_BITS_ALLCOLUMNS = 0x1F, + COLUMN_BITS_UNKNOWN = 0x20, // Appears to be unused + COLUMN_BITS_ALL = 0x3F, + COLUMN_BITS_SKIP = 0x40, + COLUMN_BITS_INVISIBLE = 0x80, +}; + struct PATTERNFONT { int nWidth, nHeight; // Column Width & Height, including 4-pixels border @@ -237,7 +253,7 @@ } -POINT CViewPattern::GetPointFromPosition(PatternCursor cursor) +POINT CViewPattern::GetPointFromPosition(PatternCursor cursor) //------------------------------------------------------------ { PCPATTERNFONT pfnt = GetCurrentPatternFont(); @@ -783,13 +799,13 @@ for(CHANNELINDEX cmk = startChan; cmk < ncols; cmk++) { selectedCols[cmk] = selEnable ? m_Selection.GetSelectionBits(cmk) : 0; - if (!::RectVisible(hdc, &rect)) selectedCols[cmk] |= 0x80; + if (!::RectVisible(hdc, &rect)) selectedCols[cmk] |= COLUMN_BITS_INVISIBLE; rect.left += nColumnWidth; rect.right += nColumnWidth; } // Max Visible Column CHANNELINDEX maxcol = ncols; - while ((maxcol > startChan) && (selectedCols[maxcol-1] & 0x80)) maxcol--; + while ((maxcol > startChan) && (selectedCols[maxcol-1] & COLUMN_BITS_INVISIBLE)) maxcol--; // Init bitmap border { UINT maxndx = pSndFile->GetNumChannels() * m_szCell.cx; @@ -821,7 +837,7 @@ if (!::RectVisible(hdc, &rect)) { // No speedup for these columns next time - for (CHANNELINDEX iup=startChan; iup<maxcol; iup++) selectedCols[iup] &= ~0x40; + for (CHANNELINDEX iup=startChan; iup<maxcol; iup++) selectedCols[iup] &= ~COLUMN_BITS_SKIP; goto SkipRow; } rect.right = rect.left + m_szHeader.cx; @@ -880,9 +896,9 @@ // Eliminate non-visible column xpaint = m_szHeader.cx; col = startChan; - while ((selectedCols[col] & 0x80) && (col < maxcol)) + while ((selectedCols[col] & COLUMN_BITS_INVISIBLE) && (col < maxcol)) { - selectedCols[col] &= ~0x40; + selectedCols[col] &= ~COLUMN_BITS_SKIP; col++; xpaint += nColumnWidth; } @@ -899,31 +915,31 @@ const bool drawDefaultVolume = DrawDefaultVolume(m); DWORD dwSpeedUpMask = 0; - if ((bSpeedUp) && (selectedCols[col] & 0x40) && (pPattern) && (row)) + if ((bSpeedUp) && (selectedCols[col] & COLUMN_BITS_SKIP) && (pPattern) && (row)) { const ModCommand *mold = m - ncols; const bool drawOldDefaultVolume = DrawDefaultVolume(mold); - if (m->note == mold->note) dwSpeedUpMask |= 0x01; - if ((m->instr == mold->instr) || (m_nDetailLevel < PatternCursor::instrColumn)) dwSpeedUpMask |= 0x02; + if (m->note == mold->note) dwSpeedUpMask |= COLUMN_BITS_NOTE; + if ((m->instr == mold->instr) || (m_nDetailLevel < PatternCursor::instrColumn)) dwSpeedUpMask |= COLUMN_BITS_INSTRUMENT; if ( m->IsPcNote() || mold->IsPcNote() ) - { // Handle speedup mask for PC notes. + { + // Handle speedup mask for PC notes. if(m->note == mold->note) { - if(m->GetValueVolCol() == mold->GetValueVolCol() || (m_nDetailLevel < PatternCursor::volumeColumn)) dwSpeedUpMask |= 0x04; - if(m->GetValueEffectCol() == mold->GetValueEffectCol() || (m_nDetailLevel < PatternCursor::effectColumn)) dwSpeedUpMask |= 0x18; - } - } - else + if(m->GetValueVolCol() == mold->GetValueVolCol() || (m_nDetailLevel < PatternCursor::volumeColumn)) dwSpeedUpMask |= COLUMN_BITS_VOLUME; + if(m->GetValueEffectCol() == mold->GetValueEffectCol() || (m_nDetailLevel < PatternCursor::effectColumn)) dwSpeedUpMask |= COLUMN_BITS_FXCMDANDPARAM; + } + } else { - if ((m->volcmd == mold->volcmd && (m->volcmd == VOLCMD_NONE || m->vol == mold->vol) && !drawDefaultVolume && !drawOldDefaultVolume) || (m_nDetailLevel < PatternCursor::volumeColumn)) dwSpeedUpMask |= 0x04; - if ((m->command == mold->command) || (m_nDetailLevel < PatternCursor::effectColumn)) dwSpeedUpMask |= (m->command != CMD_NONE) ? 0x08 : 0x18; + if ((m->volcmd == mold->volcmd && (m->volcmd == VOLCMD_NONE || m->vol == mold->vol) && !drawDefaultVolume && !drawOldDefaultVolume) || (m_nDetailLevel < PatternCursor::volumeColumn)) dwSpeedUpMask |= COLUMN_BITS_VOLUME; + if ((m->command == mold->command) || (m_nDetailLevel < PatternCursor::effectColumn)) dwSpeedUpMask |= (m->command != CMD_NONE) ? COLUMN_BITS_FXCMD : COLUMN_BITS_FXCMDANDPARAM; } - if (dwSpeedUpMask == 0x1F) goto DoBlit; + if (dwSpeedUpMask == COLUMN_BITS_ALLCOLUMNS) goto DoBlit; } - selectedCols[col] |= 0x40; + selectedCols[col] |= COLUMN_BITS_SKIP; col_sel = 0; - if (bRowSel) col_sel = selectedCols[col] & 0x3F; + if (bRowSel) col_sel = selectedCols[col] & COLUMN_BITS_ALL; tx_col = row_col; bk_col = row_bkcol; if (col_sel) @@ -932,7 +948,7 @@ bk_col = MODCOLOR_BACKSELECTED; } // Speedup: Empty command which is either not or fully selected - if (m->IsEmpty() && ((!col_sel) || (col_sel == 0x1F))) + if (m->IsEmpty() && ((!col_sel) || (col_sel == COLUMN_BITS_ALLCOLUMNS))) { m_Dib.SetTextColor(tx_col, bk_col); m_Dib.TextBlt(xbmp, 0, nColumnWidth-4, m_szCell.cy, pfnt->nClrX, pfnt->nClrY); @@ -940,7 +956,7 @@ } x = 0; // Note - if (!(dwSpeedUpMask & 0x01)) + if (!(dwSpeedUpMask & COLUMN_BITS_NOTE)) { tx_col = row_col; bk_col = row_bkcol; @@ -962,7 +978,7 @@ } } } - if (col_sel & 0x01) + if (col_sel & COLUMN_BITS_NOTE) { tx_col = MODCOLOR_TEXTSELECTED; bk_col = MODCOLOR_BACKSELECTED; @@ -978,7 +994,7 @@ // Instrument if (m_nDetailLevel >= PatternCursor::instrColumn) { - if (!(dwSpeedUpMask & 0x02)) + if (!(dwSpeedUpMask & COLUMN_BITS_INSTRUMENT)) { tx_col = row_col; bk_col = row_bkcol; @@ -986,7 +1002,7 @@ { tx_col = MODCOLOR_INSTRUMENT; } - if (col_sel & 0x02) + if (col_sel & COLUMN_BITS_INSTRUMENT) { tx_col = MODCOLOR_TEXTSELECTED; bk_col = MODCOLOR_BACKSELECTED; @@ -1000,11 +1016,11 @@ // Volume if (m_nDetailLevel >= PatternCursor::volumeColumn) { - if (!(dwSpeedUpMask & 0x04)) + if (!(dwSpeedUpMask & COLUMN_BITS_VOLUME)) { tx_col = row_col; bk_col = row_bkcol; - if (col_sel & 0x04) + if (col_sel & COLUMN_BITS_VOLUME) { tx_col = MODCOLOR_TEXTSELECTED; bk_col = MODCOLOR_BACKSELECTED; @@ -1036,11 +1052,11 @@ if(effectColors[m->GetEffectType()] != 0) fx_col = effectColors[m->GetEffectType()]; } - if (!(dwSpeedUpMask & 0x08)) + if (!(dwSpeedUpMask & COLUMN_BITS_FXCMD)) { tx_col = fx_col; bk_col = row_bkcol; - if (col_sel & 0x08) + if (col_sel & COLUMN_BITS_FXCMD) { tx_col = MODCOLOR_TEXTSELECTED; bk_col = MODCOLOR_BACKSELECTED; @@ -1067,11 +1083,11 @@ } x += pfnt->nEltWidths[3]; // Param - if (!(dwSpeedUpMask & 0x10)) + if (!(dwSpeedUpMask & COLUMN_BITS_FXPARAM)) { tx_col = fx_col; bk_col = row_bkcol; - if (col_sel & 0x10) + if (col_sel & COLUMN_BITS_FXPARAM) { tx_col = MODCOLOR_TEXTSELECTED; bk_col = MODCOLOR_BACKSELECTED; Modified: trunk/OpenMPT/mptrack/Globals.cpp =================================================================== --- trunk/OpenMPT/mptrack/Globals.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/mptrack/Globals.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -755,7 +755,7 @@ hInstance, ::FindResource(hInstance, MAKEINTRESOURCE(nId), RT_BITMAP)); tbab.hInst = NULL; - tbab.nID = (UINT)m_hBarBmp; + tbab.nID = (UINT_PTR)m_hBarBmp; ::SendMessage(m_hWnd, TB_ADDBITMAP, 16, (LPARAM)&tbab); UpdateStyle(); return TRUE; Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -1352,7 +1352,7 @@ //------------------------------------------------------ { if (nChn >= m_SndFile.m_nChannels) return false; - if (m_SndFile.GetType() & (MOD_TYPE_IT | MOD_TYPE_MPT)) SetModified(); + if (m_SndFile.GetType() & (MOD_TYPE_IT | MOD_TYPE_MPT | MOD_TYPE_S3M)) SetModified(); m_SndFile.ChnSettings[nChn].dwFlags.set(CHN_SOLO, bSolo); return true; } @@ -1373,11 +1373,8 @@ //---------------------------------------------------------------------- { if (nChn >= m_SndFile.m_nChannels) return false; - if (m_SndFile.GetType() & (MOD_TYPE_IT | MOD_TYPE_MPT)) SetModified(); - m_SndFile.ChnSettings[nChn].dwFlags.set(CHN_NOFX, bNoFx); if(updateMix) m_SndFile.m_PlayState.Chn[nChn].dwFlags.set(CHN_NOFX, bNoFx); - return true; } @@ -1451,8 +1448,7 @@ //------------------------------------------------------- { if ((nSample < 1) || (nSample > m_SndFile.GetNumSamples())) return false; - if (bMute) m_SndFile.GetSample(nSample).uFlags |= CHN_MUTE; - else m_SndFile.GetSample(nSample).uFlags &= ~CHN_MUTE; + m_SndFile.GetSample(nSample).uFlags.set(CHN_MUTE, bMute); return true; } Modified: trunk/OpenMPT/mptrack/PatternClipboard.cpp =================================================================== --- trunk/OpenMPT/mptrack/PatternClipboard.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/mptrack/PatternClipboard.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -528,7 +528,7 @@ { pos++; // Handle pasting large pattern into smaller pattern (e.g. 128-row pattern into MOD, which only allows 64 rows) - static ModCommand dummy; + ModCommand dummy; ModCommand &m = curRow < sndFile.Patterns[pattern].GetNumRows() ? patData[col] : dummy; // Check valid paste condition. Paste will be skipped if Modified: trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp =================================================================== --- trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -122,7 +122,7 @@ BOOL CFindReplaceTab::OnInitDialog() //---------------------------------- { - CHAR s[256]; + TCHAR s[256]; CComboBox *combo; CPropertyPage::OnInitDialog(); @@ -157,16 +157,16 @@ if ((combo = (CComboBox *)GetDlgItem(IDC_COMBO1)) != NULL) { combo->InitStorage(150, 6); - combo->SetItemData(combo->AddString("..."), 0); + combo->SetItemData(combo->AddString(_T("...")), 0); if (m_bReplace) { - combo->SetItemData(combo->AddString("note -1"), replaceNoteMinusOne); - combo->SetItemData(combo->AddString("note +1"), replaceNotePlusOne); - combo->SetItemData(combo->AddString("-1 oct"), replaceNoteMinusOctave); - combo->SetItemData(combo->AddString("+1 oct"), replaceNotePlusOctave); + combo->SetItemData(combo->AddString(_T("note -1")), replaceNoteMinusOne); + combo->SetItemData(combo->AddString(_T("note +1")), replaceNotePlusOne); + combo->SetItemData(combo->AddString(_T("-1 oct")), replaceNoteMinusOctave); + combo->SetItemData(combo->AddString(_T("+1 oct")), replaceNotePlusOctave); } else { - combo->SetItemData(combo->AddString("any"), findAny); + combo->SetItemData(combo->AddString(_T("any")), findAny); } AppendNotesToControlEx(*combo, sndFile); @@ -180,20 +180,20 @@ // Instrument if ((combo = (CComboBox *)GetDlgItem(IDC_COMBO2)) != NULL) { - combo->SetItemData(combo->AddString(".."), 0); + combo->SetItemData(combo->AddString(_T("..")), 0); if (m_bReplace) { - combo->SetItemData(combo->AddString("ins -1"), replaceInstrumentMinusOne); - combo->SetItemData(combo->AddString("ins +1"), replaceInstrumentPlusOne); + combo->SetItemData(combo->AddString(_T("ins -1")), replaceInstrumentMinusOne); + combo->SetItemData(combo->AddString(_T("ins +1")), replaceInstrumentPlusOne); } for(INSTRUMENTINDEX n = 1; n < MAX_INSTRUMENTS; n++) { if(sndFile.GetNumInstruments()) { - wsprintf(s, "%03d:%s", n, sndFile.GetInstrumentName(n)); + _stprintf(s, _T("%03d:%s"), n, sndFile.GetInstrumentName(n)); } else { - wsprintf(s, "%03d:%s", n, sndFile.m_szNames[n]); + _stprintf(s, _T("%03d:%s"), n, sndFile.m_szNames[n]); } combo->SetItemData(combo->AddString(s), n); } @@ -234,7 +234,7 @@ combo->InitStorage(64, 4); for (UINT n=0; n<=64; n++) { - wsprintf(s, "%02d", n); + _stprintf(s, _T("%02d"), n); combo->SetItemData(combo->AddString(s), n); } UINT ncount = combo->GetCount(); @@ -288,14 +288,14 @@ UINT newcount = effectInfo.IsExtendedEffect(fxndx) ? 16 : 256; if (oldcount != newcount) { - CHAR s[16]; + TCHAR s[16]; int newpos; if (oldcount) newpos = combo->GetCurSel() % newcount; else newpos = m_Cmd.param % newcount; combo->ResetContent(); combo->InitStorage(newcount, 4); for (UINT i=0; i<newcount; i++) { - wsprintf(s, (newcount == 256) ? "%02X" : "%X", i); + _stprintf(s, (newcount == 256) ? _T("%02X") : _T("%X"), i); combo->SetItemData(combo->AddString(s), i); } combo->SetCurSel(newpos); @@ -326,13 +326,13 @@ UINT newcount = rangeMax - rangeMin + 1; if (oldcount != newcount) { - CHAR s[16]; + TCHAR s[16]; int newpos; if (oldcount) newpos = combo->GetCurSel() % newcount; else newpos = m_Cmd.param % newcount; combo->ResetContent(); for (UINT i = rangeMin; i <= rangeMax; i++) { - wsprintf(s, (rangeMax < 10) ? "%d" : "%02d", i); + _stprintf(s, (rangeMax < 10) ? _T("%d") : _T("%02d"), i); combo->SetItemData(combo->AddString(s), i); } combo->SetCurSel(newpos); @@ -462,31 +462,31 @@ if(m_nPattern < sndFile.Patterns.Size() && combo) { - CHAR s[256]; + TCHAR s[256]; UINT nrows = sndFile.Patterns[m_nPattern].GetNumRows(); const CModSpecifications& specs = sndFile.GetModSpecifications(); for (UINT irow = specs.patternRowsMin; irow <= specs.patternRowsMax; irow++) { - wsprintf(s, "%d", irow); + _stprintf(s, _T("%d"), irow); combo->AddString(s); } combo->SetCurSel(nrows - specs.patternRowsMin); - wsprintf(s, "Pattern #%d: %d row%s (%dK)", + _stprintf(s, _T("Pattern #%d: %d row%s (%dK)"), m_nPattern, sndFile.Patterns[m_nPattern].GetNumRows(), - (sndFile.Patterns[m_nPattern].GetNumRows() == 1) ? "" : "s", + (sndFile.Patterns[m_nPattern].GetNumRows() == 1) ? _T("") : _T("s"), (sndFile.Patterns[m_nPattern].GetNumRows() * sndFile.GetNumChannels() * sizeof(ModCommand)) / 1024); SetDlgItemText(IDC_TEXT1, s); // Window title const CString patternName = sndFile.Patterns[m_nPattern].GetName().c_str(); - wsprintf(s, "Pattern Properties for Pattern #%d", m_nPattern); + _stprintf(s, _T("Pattern Properties for Pattern #%d"), m_nPattern); if(!patternName.IsEmpty()) { - strcat(s, " ("); - strcat(s, patternName); - strcat(s, ")"); + _tcscat(s, _T(" (")); + _tcscat(s, patternName); + _tcscat(s, _T(")")); } SetWindowText(s); @@ -627,8 +627,8 @@ } -CEditCommand::CEditCommand(CSoundFile &sndFile) : sndFile(sndFile), effectInfo(sndFile), m(nullptr), modified(false) -//------------------------------------------------------------------------------------------------------------------ +CEditCommand::CEditCommand(CSoundFile &sndFile) : sndFile(sndFile), oldSpecs(nullptr), effectInfo(sndFile), m(nullptr), modified(false) +//------------------------------------------------------------------------------------------------------------------------------------- { CDialog::Create(IDD_PATTERN_EDITCOMMAND); } @@ -695,8 +695,8 @@ } // Update Window Title - CHAR s[64]; - wsprintf(s, "Note Properties - Row %d, Channel %d", row, chn + 1); + TCHAR s[64]; + _stprintf(s, _T("Note Properties - Row %d, Channel %d"), row, chn + 1); SetWindowText(s); SetParent(CMainFrame::GetMainFrame()); @@ -712,9 +712,13 @@ { // Note cbnNote.SetRedraw(FALSE); - cbnNote.ResetContent(); - cbnNote.SetItemData(cbnNote.AddString("No note"), 0); - AppendNotesToControlEx(cbnNote, sndFile, m->instr); + if(oldSpecs != &sndFile.GetModSpecifications()) + { + cbnNote.ResetContent(); + cbnNote.SetItemData(cbnNote.AddString(_T("No Note")), 0); + AppendNotesToControlEx(cbnNote, sndFile, m->instr); + oldSpecs = &sndFile.GetModSpecifications(); + } if(m->IsNote()) { @@ -745,12 +749,12 @@ if(m->IsPcNote()) { // control plugin param note - cbnInstr.SetItemData(cbnInstr.AddString("No Effect"), 0); + cbnInstr.SetItemData(cbnInstr.AddString(_T("No Effect")), 0); AddPluginNamesToCombobox(cbnInstr, sndFile.m_MixPlugins, false); } else { // instrument / sample - cbnInstr.SetItemData(cbnInstr.AddString("No Instrument"), 0); + cbnInstr.SetItemData(cbnInstr.AddString(_T("No Instrument")), 0); const uint32 nmax = sndFile.GetNumInstruments() ? sndFile.GetNumInstruments() : sndFile.GetNumSamples(); for(uint32 i = 1; i <= nmax; i++) { Modified: trunk/OpenMPT/mptrack/PatternEditorDialogs.h =================================================================== --- trunk/OpenMPT/mptrack/PatternEditorDialogs.h 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/mptrack/PatternEditorDialogs.h 2014-03-24 02:31:54 UTC (rev 3943) @@ -122,6 +122,7 @@ CComboBox cbnNote, cbnInstr, cbnVolCmd, cbnCommand; CSliderCtrl sldVolParam, sldParam; CSoundFile &sndFile; + const CModSpecifications *oldSpecs; EffectInfo effectInfo; ModCommand *m; ModCommandPos editPos; Modified: trunk/OpenMPT/mptrack/Reporting.cpp =================================================================== --- trunk/OpenMPT/mptrack/Reporting.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/mptrack/Reporting.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -28,7 +28,7 @@ { parent = pMainFrm; } - UINT result = ::MessageBox((parent ? parent->m_hWnd : NULL), text, caption, flags); + UINT result = ::MessageBoxA((parent ? parent->m_hWnd : NULL), text, caption, flags); if(pMainFrm != nullptr && pMainFrm->GetInputHandler() != nullptr) { Modified: trunk/OpenMPT/mptrack/SampleEditorDialogs.cpp =================================================================== --- trunk/OpenMPT/mptrack/SampleEditorDialogs.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/mptrack/SampleEditorDialogs.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -10,7 +10,11 @@ #include "stdafx.h" -#include "mptrack.h" +#include "resource.h" +#include "Reporting.h" +#include "../common/misc_util.h" +#include "../soundlib/Snd_defs.h" +#include "../soundlib/ModSample.h" #include "SampleEditorDialogs.h" @@ -112,8 +116,8 @@ CSpinButtonCtrl *spin = (CSpinButtonCtrl *)GetDlgItem(IDC_SPIN_ADDSILENCE); if (spin) { - spin->SetRange(0, int16_max); - spin->SetPos(m_nSamples); + spin->SetRange32(0, int32_max); + spin->SetPos32(m_nSamples); } int iRadioButton = IDC_RADIO_ADDSILENCE_END; @@ -132,7 +136,7 @@ CButton *radioEnd = (CButton *)GetDlgItem(iRadioButton); radioEnd->SetCheck(true); - SetDlgItemInt(IDC_EDIT_ADDSILENCE, (m_nEditOption == addsilence_resize) ? m_nLength : m_nSamples); + SetDlgItemInt(IDC_EDIT_ADDSILENCE, (m_nEditOption == addsilence_resize) ? m_nLength : m_nSamples, FALSE); return TRUE; } @@ -141,14 +145,14 @@ void CAddSilenceDlg::OnOK() //------------------------- { - m_nSamples = GetDlgItemInt(IDC_EDIT_ADDSILENCE); + m_nSamples = GetDlgItemInt(IDC_EDIT_ADDSILENCE, nullptr, FALSE); m_nEditOption = GetEditMode(); CDialog::OnOK(); } void CAddSilenceDlg::OnEditModeChanged() -//------------------------------------------------ +//-------------------------------------- { enmAddSilenceOptions cNewEditOption = GetEditMode(); if(cNewEditOption != addsilence_resize && m_nEditOption == addsilence_resize) @@ -167,6 +171,7 @@ enmAddSilenceOptions CAddSilenceDlg::GetEditMode() +//------------------------------------------------ { if(IsDlgButtonChecked(IDC_RADIO_ADDSILENCE_BEGIN)) return addsilence_at_beginning; else if(IsDlgButtonChecked(IDC_RADIO_ADDSILENCE_END)) return addsilence_at_end; Modified: trunk/OpenMPT/mptrack/View_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_gen.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/mptrack/View_gen.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -1212,7 +1212,6 @@ m_CbnPlugin.SetCurSel(dlg.GetSlot()); OnPluginChanged(); } - } @@ -1314,14 +1313,13 @@ void CViewGlobals::BuildEmptySlotList(std::vector<PLUGINDEX> &emptySlots) //----------------------------------------------------------------------- { - CModDoc *pModDoc = GetDocument(); - CSoundFile* pSndFile = pModDoc->GetSoundFile(); + const CSoundFile &sndFile = GetDocument()->GetrSoundFile(); emptySlots.clear(); for(PLUGINDEX nSlot = 0; nSlot < MAX_MIXPLUGINS; nSlot++) { - if(pSndFile->m_MixPlugins[nSlot].pMixPlugin == nullptr) + if(sndFile.m_MixPlugins[nSlot].pMixPlugin == nullptr) { emptySlots.push_back(nSlot); } @@ -1334,16 +1332,16 @@ { CString prompt; CModDoc *pModDoc = GetDocument(); - CSoundFile* pSndFile = pModDoc->GetSoundFile(); + CSoundFile &sndFile = pModDoc->GetrSoundFile(); prompt.Format("Insert empty slot before slot FX%d?", m_nCurrentPlugin + 1); // If last plugin slot is occupied, move it so that the plugin is not lost. // This could certainly be improved... bool moveLastPlug = false; - if(pSndFile->m_MixPlugins[MAX_MIXPLUGINS - 1].pMixPlugin) + if(sndFile.m_MixPlugins[MAX_MIXPLUGINS - 1].pMixPlugin) { - if(pSndFile->m_MixPlugins[MAX_MIXPLUGINS - 2].pMixPlugin == nullptr) + if(sndFile.m_MixPlugins[MAX_MIXPLUGINS - 2].pMixPlugin == nullptr) { moveLastPlug = true; } else @@ -1355,26 +1353,26 @@ { // Delete last plug... - if(pSndFile->m_MixPlugins[MAX_MIXPLUGINS - 1].pMixPlugin) + if(sndFile.m_MixPlugins[MAX_MIXPLUGINS - 1].pMixPlugin) { if(moveLastPlug) { MovePlug(MAX_MIXPLUGINS - 1, MAX_MIXPLUGINS - 2, true); } else { - pSndFile->m_MixPlugins[MAX_MIXPLUGINS - 1].Destroy(); - MemsetZero(pSndFile->m_MixPlugins[MAX_MIXPLUGINS - 1].Info); + sndFile.m_MixPlugins[MAX_MIXPLUGINS - 1].Destroy(); + MemsetZero(sndFile.m_MixPlugins[MAX_MIXPLUGINS - 1].Info); } } // Update MODCOMMANDs so that they won't be referring to old indexes (e.g. with NOTE_PC). - if(pSndFile->GetType() == MOD_TYPE_MPT) - pSndFile->Patterns.ForEachModCommand(PlugIndexModifier(m_nCurrentPlugin + 1, MAX_MIXPLUGINS - 1, 1)); + if(sndFile.GetModSpecifications().HasNote(NOTE_PC)) + sndFile.Patterns.ForEachModCommand(PlugIndexModifier(m_nCurrentPlugin + 1, MAX_MIXPLUGINS - 1, 1)); for(PLUGINDEX nSlot = MAX_MIXPLUGINS - 1; nSlot > m_nCurrentPlugin; nSlot--) { - if(pSndFile->m_MixPlugins[nSlot-1].pMixPlugin) + if(sndFile.m_MixPlugins[nSlot-1].pMixPlugin) { MovePlug(nSlot - 1, nSlot, NoPatternAdjust); } @@ -1383,7 +1381,7 @@ m_CbnPlugin.SetCurSel(m_nCurrentPlugin); OnPluginChanged(); - if(pSndFile->GetModSpecifications().supportsPlugins) + if(sndFile.GetModSpecifications().supportsPlugins) pModDoc->SetModified(); } Modified: trunk/OpenMPT/mptrack/View_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_ins.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/mptrack/View_ins.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -147,7 +147,7 @@ //------------------------------------- { ModifyStyleEx(0, WS_EX_ACCEPTFILES); - CScrollView::OnInitialUpdate(); + CModScrollView::OnInitialUpdate(); UpdateScrollSize(); } @@ -1313,7 +1313,7 @@ void CViewInstrument::OnSize(UINT nType, int cx, int cy) //------------------------------------------------------ { - CScrollView::OnSize(nType, cx, cy); + CModScrollView::OnSize(nType, cx, cy); if (((nType == SIZE_RESTORED) || (nType == SIZE_MAXIMIZED)) && (cx > 0) && (cy > 0)) { UpdateScrollSize(); Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -1739,21 +1739,21 @@ if (pModDoc->IsChannelSolo(chn)) { - bool nChnIsOnlyUnMutedChan=true; + bool nChnIsOnlyUnMutedChan = true; for (CHANNELINDEX i = 0; i < pModDoc->GetNumChannels(); i++) //check status of all other chans { if (i != chn && !pModDoc->IsChannelMuted(i)) { - nChnIsOnlyUnMutedChan=false; //found a channel that isn't muted! - break; + nChnIsOnlyUnMutedChan = false; //found a channel that isn't muted! + break; } } - if (nChnIsOnlyUnMutedChan) // this is the only playable channel and it is already soloed -> uunMute all + if (nChnIsOnlyUnMutedChan) // this is the only playable channel and it is already soloed -> Unmute all { OnUnmuteAll(); return; - } - } + } + } for(CHANNELINDEX i = 0; i < pModDoc->GetNumChannels(); i++) { pModDoc->MuteChannel(i, !(i == chn)); //mute all chans except nChn, unmute nChn @@ -1779,9 +1779,9 @@ } } -// -> CODE#0012 -// -> DESC="midi keyboard split" + void CViewPattern::OnSplitRecordSelect() +//-------------------------------------- { CModDoc *pModDoc = GetDocument(); if (pModDoc) @@ -1794,7 +1794,6 @@ } } } -// -! NEW_FEATURE#0012 void CViewPattern::OnUnmuteAll() Modified: trunk/OpenMPT/soundlib/ITTools.cpp =================================================================== --- trunk/OpenMPT/soundlib/ITTools.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/soundlib/ITTools.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -238,7 +238,7 @@ // MIDI Setup mbank = mptIns.wMidiBank; mpr = mptIns.nMidiProgram; - if(mptIns.nMidiChannel || mptIns.nMixPlug == 0 || mptIns.nMixPlug > 127 || compatExport) + if(mptIns.nMidiChannel != MidiNoChannel || mptIns.nMixPlug == 0 || mptIns.nMixPlug > 127 || compatExport) { // Default. Prefer MIDI channel over mixplug to keep the semantics intact. mch = mptIns.nMidiChannel; @@ -249,7 +249,7 @@ } // Sample Map - nos = 0; + nos = 0; // Only really relevant for ITI files std::vector<bool> smpCount(sndFile.GetNumSamples(), false); for(int i = 0; i < 120; i++) { @@ -478,22 +478,22 @@ gvl = static_cast<uint8>(mptSmp.nGlobalVol); vol = static_cast<uint8>(mptSmp.nVolume / 4); dfp = static_cast<uint8>(mptSmp.nPan / 4); - if(mptSmp.uFlags & CHN_PANNING) dfp |= ITSample::enablePanning; + if(mptSmp.uFlags[CHN_PANNING]) dfp |= ITSample::enablePanning; // Sample Format / Loop Flags if(mptSmp.nLength && mptSmp.pSample) { flags = ITSample::sampleDataPresent; - if(mptSmp.uFlags & CHN_LOOP) flags |= ITSample::sampleLoop; - if(mptSmp.uFlags & CHN_SUSTAINLOOP) flags |= ITSample::sampleSustain; - if(mptSmp.uFlags & CHN_PINGPONGLOOP) flags |= ITSample::sampleBidiLoop; - if(mptSmp.uFlags & CHN_PINGPONGSUSTAIN) flags |= ITSample::sampleBidiSustain; + if(mptSmp.uFlags[CHN_LOOP]) flags |= ITSample::sampleLoop; + if(mptSmp.uFlags[CHN_SUSTAINLOOP]) flags |= ITSample::sampleSustain; + if(mptSmp.uFlags[CHN_PINGPONGLOOP]) flags |= ITSample::sampleBidiLoop; + if(mptSmp.uFlags[CHN_PINGPONGSUSTAIN]) flags |= ITSample::sampleBidiSustain; - if(mptSmp.uFlags & CHN_STEREO) + if(mptSmp.uFlags[CHN_STEREO]) { flags |= ITSample::sampleStereo; } - if(mptSmp.uFlags & CHN_16BIT) + if(mptSmp.uFlags[CHN_16BIT]) { flags |= ITSample::sample16Bit; } @@ -556,13 +556,13 @@ LimitMax(mptSmp.nGlobalVol, uint16(64)); mptSmp.nPan = (dfp & 0x7F) * 4; LimitMax(mptSmp.nPan, uint16(256)); - if(dfp & ITSample::enablePanning) mptSmp.uFlags |= CHN_PANNING; + if(dfp & ITSample::enablePanning) mptSmp.uFlags.set(CHN_PANNING); // Loop Flags - if(flags & ITSample::sampleLoop) mptSmp.uFlags |= CHN_LOOP; - if(flags & ITSample::sampleSustain) mptSmp.uFlags |= CHN_SUSTAINLOOP; - if(flags & ITSample::sampleBidiLoop) mptSmp.uFlags |= CHN_PINGPONGLOOP; - if(flags & ITSample::sampleBidiSustain) mptSmp.uFlags |= CHN_PINGPONGSUSTAIN; + if(flags & ITSample::sampleLoop) mptSmp.uFlags.set(CHN_LOOP); + if(flags & ITSample::sampleSustain) mptSmp.uFlags.set(CHN_SUSTAINLOOP); + if(flags & ITSample::sampleBidiLoop) mptSmp.uFlags.set(CHN_PINGPONGLOOP); + if(flags & ITSample::sampleBidiSustain) mptSmp.uFlags.set(CHN_PINGPONGSUSTAIN); // Frequency mptSmp.nC5Speed = C5Speed; Modified: trunk/OpenMPT/soundlib/Load_it.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/soundlib/Load_it.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -1224,14 +1224,14 @@ // Channel names if(!compatibilityExport) { - for (UINT ich=0; ich<m_nChannels; ich++) + for(CHANNELINDEX i = 0; i < m_nChannels; i++) { - if (ChnSettings[ich].szName[0]) + if(ChnSettings[i].szName[0]) { - dwChnNamLen = (ich + 1) * MAX_CHANNELNAME; + dwChnNamLen = (i + 1) * MAX_CHANNELNAME; } } - if (dwChnNamLen) dwExtra += dwChnNamLen + 8; + if(dwChnNamLen) dwExtra += dwChnNamLen + 8; } if(m_SongFlags[SONG_EMBEDMIDICFG]) @@ -1262,7 +1262,7 @@ if(!songMessage.empty()) { itHeader.special |= ITFileHeader::embedSongMessage; - itHeader.msglength = msglength = (uint16)MIN(songMessage.length() + 1, uint16_max); + itHeader.msglength = msglength = mpt::saturate_cast<uint16>(songMessage.length() + 1u); itHeader.msgoffset = dwHdrPos + dwExtra + (itHeader.insnum + itHeader.smpnum + itHeader.patnum) * 4; } @@ -1333,7 +1333,7 @@ } // Writing instruments - for(UINT nins = 1; nins <= itHeader.insnum; nins++) + for(INSTRUMENTINDEX nins = 1; nins <= itHeader.insnum; nins++) { ITInstrumentEx iti; uint32 instSize; @@ -1365,7 +1365,7 @@ // Writing sample headers ITSample itss; MemsetZero(itss); - for(UINT hsmp=0; hsmp<itHeader.smpnum; hsmp++) + for(SAMPLEINDEX hsmp = 0; hsmp < itHeader.smpnum; hsmp++) { smppos[hsmp] = dwPos; dwPos += sizeof(ITSample); @@ -1392,7 +1392,7 @@ patpos[pat] = dwPos; // Write pattern header - ROWINDEX writeRows = std::min(Patterns[pat].GetNumRows(), ROWINDEX(uint16_max)); + ROWINDEX writeRows = mpt::saturate_cast<uint16>(Patterns[pat].GetNumRows()); uint16 patinfo[4]; patinfo[0] = 0; patinfo[1] = (uint16)writeRows; @@ -1403,7 +1403,7 @@ fwrite(patinfo, 8, 1, f); dwPos += 8; - const CHANNELINDEX maxChannels = MIN(specs.channelsMax, GetNumChannels()); + const CHANNELINDEX maxChannels = std::min(specs.channelsMax, GetNumChannels()); std::vector<uint8> chnmask(maxChannels, 0xFF); std::vector<ModCommand> lastvalue(maxChannels, ModCommand::Empty()); @@ -1559,7 +1559,7 @@ fseek(f, dwPos, SEEK_SET); } // Writing Sample Data - for (UINT nsmp=1; nsmp<=itHeader.smpnum; nsmp++) + for(SAMPLEINDEX nsmp = 1; nsmp <= itHeader.smpnum; nsmp++) { #ifdef MODPLUG_TRACKER int type = GetType() == MOD_TYPE_IT ? 1 : 4; @@ -1569,7 +1569,7 @@ bool compress = false; #endif // MODPLUG_TRACKER // Old MPT, DUMB and probably other libraries will only consider the IT2.15 compression flag if the header version also indicates IT2.15. - // Old MilkyTracker will only assume IT2.15 compression with cmwt == 0x215, ignoring the delta flag completely. + // MilkyTracker <= 0.90.85 will only assume IT2.15 compression with cmwt == 0x215, ignoring the delta flag completely. itss.ConvertToIT(Samples[nsmp], GetType(), compress, itHeader.cmwt >= 0x215); mpt::String::Write<mpt::String::nullTerminated>(itss.name, m_szNames[nsmp]); Modified: trunk/OpenMPT/soundlib/Load_mod.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mod.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/soundlib/Load_mod.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -599,6 +599,7 @@ // have this weird restart position. I think I've read somewhere that NoiseTracker actually writes 0x78 there. // Files that have restart pos == 0x78: action's batman by DJ Uno (M.K.), 3ddance.mod (M15, so handled by ReadM15), // VALLEY.MOD (M.K.), WormsTDC.MOD (M.K.), ZWARTZ.MOD (M.K.) + // Files that have an order list longer than 0x78 with restart pos = 0x78: my_shoe_is_barking.mod, papermix.mod ASSERT(m_nRestartPos != 0x78 || m_nRestartPos + 1u >= realOrders); if(m_nRestartPos >= 128 || m_nRestartPos + 1u >= realOrders || m_nRestartPos == 0x78) { Modified: trunk/OpenMPT/soundlib/Load_s3m.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_s3m.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/soundlib/Load_s3m.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -321,7 +321,7 @@ } else { m_nChannels = i + 1; - ChnSettings[i].nPan = (fileHeader.channels[i] & 8) ? 192 : 64; // 200 : 56 + ChnSettings[i].nPan = (fileHeader.channels[i] & 8) ? 0xCC : 0x33; // 200 : 56 if(fileHeader.channels[i] & 0x80) { ChnSettings[i].dwFlags = CHN_MUTE; @@ -448,7 +448,7 @@ } CHANNELINDEX channel = (info & s3mChannelMask); - static ModCommand dummy; + ModCommand dummy; ModCommand &m = (channel < GetNumChannels()) ? rowBase[channel] : dummy; if(info & s3mNotePresent) Modified: trunk/OpenMPT/soundlib/Snd_defs.h =================================================================== --- trunk/OpenMPT/soundlib/Snd_defs.h 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/soundlib/Snd_defs.h 2014-03-24 02:31:54 UTC (rev 3943) @@ -58,7 +58,7 @@ #define FREQ_FRACBITS 4 // Number of fractional bits in return value of CSoundFile::GetFreqFromPeriod() // String lengths (including trailing null char) -#define MAX_SAMPLENAME 32 // also affects module name! +#define MAX_SAMPLENAME 32 #define MAX_SAMPLEFILENAME 22 #define MAX_INSTRUMENTNAME 32 #define MAX_INSTRUMENTFILENAME 32 @@ -96,8 +96,7 @@ MOD_TYPE_IMF = 0x2000000, MOD_TYPE_AMS2 = 0x4000000, MOD_TYPE_DIGI = 0x8000000, - MOD_TYPE_UAX = 0x10000000, // sampleset as module - // Container formats (not used at the moment) + MOD_TYPE_UAX = 0x10000000, // sampleset as module }; DECLARE_FLAGSET(MODTYPE) Modified: trunk/OpenMPT/soundlib/modcommand.cpp =================================================================== --- trunk/OpenMPT/soundlib/modcommand.cpp 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/soundlib/modcommand.cpp 2014-03-24 02:31:54 UTC (rev 3943) @@ -232,7 +232,7 @@ volcmd = VOLCMD_VOLUME; if(vol > 64) vol = 64; command = CMD_S3MCMDEX; - param = 0x80 | ((param * 15 + 32) / 64); // XM volcol panning is 4-Bit, so we can use 4-Bit panning here. + param = 0x80 | (param / 4); // XM volcol panning is actually 4-Bit, so we can use 4-Bit panning here. } break; Modified: trunk/OpenMPT/test/TestToolsTracker.h =================================================================== --- trunk/OpenMPT/test/TestToolsTracker.h 2014-03-23 18:48:38 UTC (rev 3942) +++ trunk/OpenMPT/test/TestToolsTracker.h 2014-03-24 02:31:54 UTC (rev 3943) @@ -87,7 +87,7 @@ #if defined(_MSC_VER) && defined(_M_IX86) // on x86, break directly using asm break interrupt instead of calling DebugBreak which breaks one stackframe deeper than we want -#define MyDebugBreak() do { __asm { int 3 }; } while(0) +#define MyDebugBreak() __debugbreak() #else #define MyDebugBreak() DebugBreak() #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |