From: <sag...@us...> - 2014-11-09 00:22:10
|
Revision: 4568 http://sourceforge.net/p/modplug/code/4568 Author: saga-games Date: 2014-11-09 00:21:59 +0000 (Sun, 09 Nov 2014) Log Message: ----------- [Ref] Lots of small oneliner changes in various files - no functional changes. Modified Paths: -------------- trunk/OpenMPT/README.md trunk/OpenMPT/mptrack/AboutDialog.cpp trunk/OpenMPT/mptrack/CImageListEx.cpp trunk/OpenMPT/mptrack/Childfrm.h trunk/OpenMPT/mptrack/CommandSet.h trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/Globals.h trunk/OpenMPT/mptrack/KeyConfigDlg.cpp trunk/OpenMPT/mptrack/KeyConfigDlg.h trunk/OpenMPT/mptrack/MIDIMapping.h trunk/OpenMPT/mptrack/Modedit.cpp trunk/OpenMPT/mptrack/TrackerSettings.cpp trunk/OpenMPT/mptrack/TuningDialog.cpp trunk/OpenMPT/mptrack/Vstplug.cpp trunk/OpenMPT/soundlib/ITCompression.cpp trunk/OpenMPT/soundlib/ITCompression.h trunk/OpenMPT/soundlib/Load_dmf.cpp trunk/OpenMPT/soundlib/Load_it.cpp trunk/OpenMPT/soundlib/Load_psm.cpp trunk/OpenMPT/soundlib/Load_stm.cpp trunk/OpenMPT/soundlib/MIDIMacros.cpp trunk/OpenMPT/soundlib/ModSequence.cpp trunk/OpenMPT/soundlib/S3MTools.cpp trunk/OpenMPT/soundlib/SampleIO.cpp trunk/OpenMPT/soundlib/Sndmix.cpp trunk/OpenMPT/soundlib/Tables.cpp trunk/OpenMPT/soundlib/mod_specifications.cpp trunk/OpenMPT/soundlib/mod_specifications.h trunk/OpenMPT/test/test.cpp trunk/OpenMPT/unarchiver/unrar.cpp trunk/OpenMPT/unarchiver/unzip.cpp Modified: trunk/OpenMPT/README.md =================================================================== --- trunk/OpenMPT/README.md 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/README.md 2014-11-09 00:21:59 UTC (rev 4568) @@ -55,7 +55,8 @@ this, uncomment `#define NO_DSOUND` in the file `common/BuildSettings.h`. - To compile the project, open `mptrack/MPTRACK_08.SLN` (if you're using - VS2008) or `mptrack/MPTRACK_10.SLN` (VS2010) and hit the compile button! :) + VS2008) or `mptrack/MPTRACK_10.SLN` (VS2010 or later) and hit the compile + button! :) ### libopenmpt and openmpt123 Modified: trunk/OpenMPT/mptrack/AboutDialog.cpp =================================================================== --- trunk/OpenMPT/mptrack/AboutDialog.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/mptrack/AboutDialog.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -136,11 +136,11 @@ { // Were there any pixels being moved in the last frame? if(!activity) - return FALSE; + return false; DWORD now = timeGetTime(); if(now - lastFrame < 15) - return TRUE; + return true; lastFrame = now; activity = false; Modified: trunk/OpenMPT/mptrack/CImageListEx.cpp =================================================================== --- trunk/OpenMPT/mptrack/CImageListEx.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/mptrack/CImageListEx.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -89,7 +89,7 @@ { // 32-bit image on modern system - // Make fully transparent pixels use the maks color. This should hopefully make the icons look "somewhat" okay + // Make fully transparent pixels use the mask color. This should hopefully make the icons look "somewhat" okay // on system where the alpha channel is magically missing in 32-bit mode (http://bugs.openmpt.org/view.php?id=520) PNG::Pixel *pixel = bitmap->GetPixels(); for(size_t i = bitmap->GetNumPixels(); i != 0; i--, pixel++) Modified: trunk/OpenMPT/mptrack/Childfrm.h =================================================================== --- trunk/OpenMPT/mptrack/Childfrm.h 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/mptrack/Childfrm.h 2014-11-09 00:21:59 UTC (rev 4568) @@ -38,10 +38,10 @@ typedef struct SAMPLEVIEWSTATE { - DWORD dwScrollPos; - DWORD dwBeginSel; - DWORD dwEndSel; - UINT nSample; + SmpLength dwScrollPos; + SmpLength dwBeginSel; + SmpLength dwEndSel; + SAMPLEINDEX nSample; } SAMPLEVIEWSTATE; Modified: trunk/OpenMPT/mptrack/CommandSet.h =================================================================== --- trunk/OpenMPT/mptrack/CommandSet.h 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/mptrack/CommandSet.h 2014-11-09 00:21:59 UTC (rev 4568) @@ -1306,7 +1306,7 @@ //Communication KeyCombination GetKey(CommandID cmd, UINT key) const { return commands[cmd].kcList[key]; } bool isHidden(UINT c) const { return commands[c].isHidden; } - int GetKeyListSize(CommandID cmd) const { return commands[cmd].kcList.size(); } + int GetKeyListSize(CommandID cmd) const { return (int)commands[cmd].kcList.size(); } CString GetCommandText(CommandID cmd) const { return commands[cmd].Message; } CString GetKeyTextFromCommand(CommandID c, UINT key); Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -2498,11 +2498,9 @@ const uint32 newTrans = Util::Round<uint32>(sample.nC5Speed * pow(2.0, (n - oldTransp) / 12.0)); if (newTrans > 0 && newTrans <= (m_sndFile.GetType() == MOD_TYPE_S3M ? 65535u : 9999999u) && newTrans != sample.nC5Speed) { - CHAR s[32]; sample.nC5Speed = newTrans; - wsprintf(s, "%lu", newTrans); LockControls(); - m_EditFineTune.SetWindowText(s); + SetDlgItemInt(IDC_EDIT5, newTrans, FALSE); UnlockControls(); SetModified(HINT_SAMPLEINFO, false, false); } @@ -2733,7 +2731,7 @@ UINT pinc = 1; ModSample &sample = m_sndFile.GetSample(m_nSample); const uint8 *pSample = static_cast<const uint8 *>(sample.pSample); - short int pos; + int pos; bool redraw = false; LockControls(); @@ -2745,7 +2743,7 @@ } if (sample.uFlags[CHN_STEREO]) pinc *= 2; // Loop Start - if ((pos = (short int)m_SpinLoopStart.GetPos()) != 0) + if ((pos = m_SpinLoopStart.GetPos32()) != 0) { bool bOk = false; const uint8 *p = pSample + sample.nLoopStart * pinc; @@ -2789,7 +2787,7 @@ m_SpinLoopStart.SetPos(0); } // Loop End - pos = (short int)m_SpinLoopEnd.GetPos(); + pos = m_SpinLoopEnd.GetPos32(); if ((pos) && (sample.nLoopEnd)) { bool bOk = false; @@ -2833,7 +2831,7 @@ m_SpinLoopEnd.SetPos(0); } // Sustain Loop Start - pos = (short int)m_SpinSustainStart.GetPos(); + pos = m_SpinSustainStart.GetPos32(); if ((pos) && (sample.nSustainEnd)) { bool bOk = false; @@ -2878,7 +2876,7 @@ m_SpinSustainStart.SetPos(0); } // Sustain Loop End - pos = (short int)m_SpinSustainEnd.GetPos(); + pos = m_SpinSustainEnd.GetPos32(); if (pos) { bool bOk = false; @@ -2923,7 +2921,7 @@ } NoSample: // FineTune / C-5 Speed - if ((pos = (short int)m_SpinFineTune.GetPos()) != 0) + if ((pos = m_SpinFineTune.GetPos32()) != 0) { if (m_sndFile.m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_MPT)) { @@ -2937,8 +2935,7 @@ Clamp(basenote, BASENOTE_MIN, BASENOTE_MAX); basenote -= BASENOTE_MIN; if (basenote != m_CbnBaseNote.GetCurSel()) m_CbnBaseNote.SetCurSel(basenote); - wsprintf(s, "%lu", sample.nC5Speed); - m_EditFineTune.SetWindowText(s); + SetDlgItemInt(IDC_EDIT5, sample.nC5Speed, FALSE); } else { int ftune = (int)sample.nFineTune; @@ -2947,8 +2944,7 @@ { ftune = Clamp((ftune >> 4) + pos, -8, 7); sample.nFineTune = MOD2XMFineTune((signed char)ftune); - } - else + } else { ftune = Clamp(ftune + pos, -128, 127); sample.nFineTune = (signed char)ftune; @@ -3004,9 +3000,9 @@ int transpose = 0; switch(wParam) { - case kcSampleLoad: OnSampleOpen(); return wParam; - case kcSampleSave: OnSampleSave(); return wParam; - case kcSampleNew: OnSampleNew(); return wParam; + case kcSampleLoad: OnSampleOpen(); return wParam; + case kcSampleSave: OnSampleSave(); return wParam; + case kcSampleNew: OnSampleNew(); return wParam; case kcSampleTransposeUp: transpose = 1; break; case kcSampleTransposeDown: transpose = -1; break; Modified: trunk/OpenMPT/mptrack/Globals.h =================================================================== --- trunk/OpenMPT/mptrack/Globals.h 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/mptrack/Globals.h 2014-11-09 00:21:59 UTC (rev 4568) @@ -24,7 +24,6 @@ class CModControlView; class CModControlBar; -class CImageListEx; //======================================= class CModControlBar: public CToolBarCtrl Modified: trunk/OpenMPT/mptrack/KeyConfigDlg.cpp =================================================================== --- trunk/OpenMPT/mptrack/KeyConfigDlg.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/mptrack/KeyConfigDlg.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -687,35 +687,6 @@ //----------------------------------------------------------- -void COptionsKeyboard::OnHotKeyChanged() -//-------------------------------------- -{ -/* if ((m_nCurKeyboard == KEYBOARD_CUSTOM) && (m_nCurHotKey >= 0) && (m_nCurHotKey < MAX_MPTHOTKEYS)) - { - BOOL bChanged = FALSE; - WORD wVk=0, wMod=0; - - m_HotKey.GetHotKey(wVk, wMod); - DWORD dwHk = ((DWORD)wVk) | (((DWORD)wMod) << 16); - for (UINT i = 0; i<MAX_MPTHOTKEYS; i++) if (i != (UINT)m_nCurHotKey) - { - if (CustomKeys[i] == dwHk) - { - CustomKeys[i] = 0; - bChanged = TRUE; - } - } - if (dwHk != CustomKeys[m_nCurHotKey]) - { - CustomKeys[m_nCurHotKey] = dwHk; - bChanged = TRUE; - } - if (bChanged) OnSettingsChanged(); - } - */ -} - - void COptionsKeyboard::OnRestoreKeyChoice() //----------------------------------------- { @@ -770,8 +741,7 @@ CommandID cmd = (CommandID)m_nCurHotKey; if (cmd<0) { - CString error = "Invalid slot."; - Reporting::Warning(error, "Invalid key data", this); + Reporting::Warning("Invalid slot.", "Invalid key data", this); return; } @@ -826,7 +796,6 @@ //Update log m_eReport.GetWindowText(reportHistory); - //reportHistory = reportHistory.Mid(6,reportHistory.GetLength()-1); m_eReport.SetWindowText(report + reportHistory); ForceUpdateGUI(); } @@ -870,7 +839,6 @@ m_sFullPathName = dlg.GetFirstFile(); plocalCmdSet->LoadFile(m_sFullPathName); ForceUpdateGUI(); - //TentativeSetToDefaultFile(m_sFullPathName); } @@ -886,7 +854,6 @@ m_sFullPathName = dlg.GetFirstFile(); plocalCmdSet->SaveFile(m_sFullPathName); - //TentativeSetToDefaultFile(m_sFullPathName); } Modified: trunk/OpenMPT/mptrack/KeyConfigDlg.h =================================================================== --- trunk/OpenMPT/mptrack/KeyConfigDlg.h 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/mptrack/KeyConfigDlg.h 2014-11-09 00:21:59 UTC (rev 4568) @@ -115,7 +115,6 @@ afx_msg void OnCategorySelChanged(); afx_msg void OnSearchTermChanged(); afx_msg void OnChordWaitTimeChanged(); //rewbs.autochord - afx_msg void OnHotKeyChanged(); afx_msg void OnSettingsChanged() { SetModified(TRUE); } afx_msg void OnCheck() { OnSetKeyChoice(); }; afx_msg void OnNotesRepeat(); Modified: trunk/OpenMPT/mptrack/MIDIMapping.h =================================================================== --- trunk/OpenMPT/mptrack/MIDIMapping.h 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/mptrack/MIDIMapping.h 2014-11-09 00:21:59 UTC (rev 4568) @@ -39,14 +39,14 @@ //Note: In these functions, channel value is in range [1,16], //GetChannel() returns 0 on 'any channel'. - void SetChannel(const int c){if(c < 1 || c > 16) m_AnyChannel = true; else {m_ChnEvent &= ~0xF; m_ChnEvent |= c-1; m_AnyChannel = false;}} - BYTE GetChannel() const {return (m_AnyChannel) ? 0 : (m_ChnEvent & 0xF) + 1;} + void SetChannel(const int c){ if(c < 1 || c > 16) m_AnyChannel = true; else { m_ChnEvent &= ~0x0F; m_ChnEvent |= c - 1; m_AnyChannel = false; } } + uint8 GetChannel() const {return (m_AnyChannel) ? 0 : (m_ChnEvent & 0xF) + 1;} - void SetEvent(BYTE e) {if(e > 15) e = 15; m_ChnEvent &= ~0xF0; m_ChnEvent |= (e << 4);} - BYTE GetEvent() const {return static_cast<BYTE>((m_ChnEvent >> 4) & 0xF);} + void SetEvent(uint8 e) {if(e > 15) e = 15; m_ChnEvent &= ~0xF0; m_ChnEvent |= (e << 4);} + uint8 GetEvent() const {return (m_ChnEvent >> 4) & 0x0F;} - void SetController(int controller) {if(controller > 127) controller = 127; m_MIDIByte1 = static_cast<BYTE>(controller);} - BYTE GetController() const {return m_MIDIByte1;} + void SetController(int controller) {if(controller > 127) controller = 127; m_MIDIByte1 = static_cast<uint8>(controller);} + uint8 GetController() const {return m_MIDIByte1;} //Note: Plug index starts from 1. void SetPlugIndex(const int i) {m_PluginIndex = static_cast<PLUGINDEX>(i);} @@ -60,12 +60,12 @@ bool operator==(const CMIDIMappingDirective &other) const { return memcmp(this, &other, sizeof(*this)) == 0; } bool operator<(const CMIDIMappingDirective &other) const { return GetController() < other.GetController(); } - BYTE GetChnEvent() const {return m_ChnEvent;} + uint8 GetChnEvent() const {return m_ChnEvent;} private: uint32 m_Parameter; PLUGINDEX m_PluginIndex; - BYTE m_MIDIByte1; + uint8 m_MIDIByte1; uint8 m_ChnEvent; //0-3 channel, 4-7 event bool m_Active : 1; bool m_CaptureMIDI : 1; //When true, MIDI data should not be processed beyond this directive Modified: trunk/OpenMPT/mptrack/Modedit.cpp =================================================================== --- trunk/OpenMPT/mptrack/Modedit.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/mptrack/Modedit.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -322,7 +322,7 @@ } // Now, create new sample list. - m_SndFile.m_nSamples = newNumSamples; + m_SndFile.m_nSamples = std::max(m_SndFile.m_nSamples, newNumSamples); // Avoid assertions when using GetSample()... for(SAMPLEINDEX i = 0; i < newNumSamples; i++) { const SAMPLEINDEX origSlot = newOrder[i]; @@ -375,6 +375,8 @@ } } + m_SndFile.m_nSamples = newNumSamples; + if(m_SndFile.GetNumInstruments()) { // Instrument mode: Update sample maps. Modified: trunk/OpenMPT/mptrack/TrackerSettings.cpp =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/mptrack/TrackerSettings.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -286,8 +286,8 @@ TrackerDirectories::Instance().SetDefaultDirectory(path, static_cast<Directory>(i), false); } m_szKbdFile = conf.Read<mpt::PathString>("Paths", "Key_Config_File", mpt::PathString()); + conf.Forget("Paths", "Key_Config_File"); - // init old and messy stuff: // Default chords @@ -1041,7 +1041,7 @@ if(stripFilename) { - path = filenameFrom.GetDrive() + filenameFrom.GetDir(); + path = filenameFrom.GetPath(); } else { path = filenameFrom; Modified: trunk/OpenMPT/mptrack/TuningDialog.cpp =================================================================== --- trunk/OpenMPT/mptrack/TuningDialog.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/mptrack/TuningDialog.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -713,7 +713,7 @@ fin.close(); if (pT) { - if (m_TempTunings.AddTuning(pT) == true) + if (m_TempTunings.AddTuning(pT)) { delete pT; pT = nullptr; if (m_TempTunings.GetNumTunings() >= CTuningCollection::s_nMaxTuningCount) @@ -722,16 +722,14 @@ } else // Case: Can't add tuning to tuning collection for unknown reason. { - sLoadReport += L"-Unable to import file \"" + fileNameExt + L"\": unknown reason.\n"; + sLoadReport += L"-Unable to import file \"" + fileNameExt + L"\": unknown reason.\n"; } } - } - else // pT == nullptr + } else // pT == nullptr { - sLoadReport += L"-Unable to import file \"" + fileNameExt + L"\": unrecognized file.\n"; + sLoadReport += L"-Unable to import file \"" + fileNameExt + L"\": unrecognized file.\n"; } - } - else // scl import. + } else // scl import. { EnSclImport a = ImportScl(files[counter], fileName.ToCString()); if (a != enSclImportOk) @@ -990,7 +988,7 @@ } void CTuningDialog::OnNMRclickTreeTuning(NMHDR *, LRESULT *pResult) -//----------------------------------------------------------------------- +//----------------------------------------------------------------- { *pResult = 0; @@ -1483,36 +1481,36 @@ CTuningDialog::EnSclImport CTuningDialog::ImportScl(std::istream& iStrm, LPCTSTR pszName) //--------------------------------------------------------------------------------------- { - std::string str; - SkipCommentLines(iStrm, str); + std::string str; + SkipCommentLines(iStrm, str); // str should now contain comment line. - SkipCommentLines(iStrm, str); + SkipCommentLines(iStrm, str); // str should now contain number of notes. const size_t nNotes = 1 + ConvertStrTo<size_t>(str.c_str()); - if (nNotes > s_nSclImportMaxNoteCount) - return enSclImportFailTooManyNotes; + if (nNotes > s_nSclImportMaxNoteCount) + return enSclImportFailTooManyNotes; std::vector<CTuningRTI::RATIOTYPE> fRatios; fRatios.reserve(nNotes); - fRatios.push_back(1); + fRatios.push_back(1); - char buffer[128]; + char buffer[128]; MemsetZero(buffer); - while (iStrm.getline(buffer, sizeof(buffer))) - { - LPSTR psz = buffer; - LPSTR const pEnd = psz + strlen(buffer); + while (iStrm.getline(buffer, sizeof(buffer))) + { + LPSTR psz = buffer; + LPSTR const pEnd = psz + strlen(buffer); - // Skip tabs and spaces. - while(psz != pEnd && (*psz == ' ' || *psz == '\t')) - psz++; + // Skip tabs and spaces. + while(psz != pEnd && (*psz == ' ' || *psz == '\t')) + psz++; - // Skip empty lines, comment lines and non-text. - if (*psz == 0 || *psz == '!' || *psz < 32) - continue; + // Skip empty lines, comment lines and non-text. + if (*psz == 0 || *psz == '!' || *psz < 32) + continue; - char* pNonDigit = pEnd; + char* pNonDigit = pEnd; // Check type of first non digit. This tells whether to read cent, ratio or plain number. for (pNonDigit = psz; pNonDigit != pEnd; pNonDigit++) @@ -1521,39 +1519,39 @@ break; } - if (*pNonDigit == '.') // Reading cents - { - SclFloat fCent = ConvertStrTo<SclFloat>(psz); + if (*pNonDigit == '.') // Reading cents + { + SclFloat fCent = ConvertStrTo<SclFloat>(psz); fRatios.push_back(static_cast<CTuningRTI::RATIOTYPE>(CentToRatio(fCent))); - } - else if (*pNonDigit == '/') // Reading ratios - { - *pNonDigit = 0; // Replace '/' with null. - int64 nNum = ConvertStrTo<int64>(psz); - psz = pNonDigit + 1; - int64 nDenom = ConvertStrTo<int64>(psz); + } + else if (*pNonDigit == '/') // Reading ratios + { + *pNonDigit = 0; // Replace '/' with null. + int64 nNum = ConvertStrTo<int64>(psz); + psz = pNonDigit + 1; + int64 nDenom = ConvertStrTo<int64>(psz); - if (nNum > int32_max || nDenom > int32_max) - return enSclImportFailTooLargeNumDenomIntegers; - if (nDenom == 0) - return enSclImportFailZeroDenominator; + if (nNum > int32_max || nDenom > int32_max) + return enSclImportFailTooLargeNumDenomIntegers; + if (nDenom == 0) + return enSclImportFailZeroDenominator; - fRatios.push_back(static_cast<CTuningRTI::RATIOTYPE>((SclFloat)nNum / (SclFloat)nDenom)); - } - else // Plain numbers. + fRatios.push_back(static_cast<CTuningRTI::RATIOTYPE>((SclFloat)nNum / (SclFloat)nDenom)); + } + else // Plain numbers. fRatios.push_back(static_cast<CTuningRTI::RATIOTYPE>(ConvertStrTo<int32>(psz))); - } + } - if (nNotes != fRatios.size()) - return enSclImportLineCountMismatch; + if (nNotes != fRatios.size()) + return enSclImportLineCountMismatch; - for(size_t i = 0; i < fRatios.size(); i++) - { - if (fRatios[i] < 0) - return enSclImportFailNegativeRatio; - } + for(size_t i = 0; i < fRatios.size(); i++) + { + if (fRatios[i] < 0) + return enSclImportFailNegativeRatio; + } - CTuning* pT = new CTuningRTI; + CTuning* pT = new CTuningRTI; if (pT->CreateGroupGeometric(fRatios, 1, pT->GetValidityRange(), 0) != false) { delete pT; @@ -1568,7 +1566,7 @@ pT->SetName(pszName); - return enSclImportOk; + return enSclImportOk; } Modified: trunk/OpenMPT/mptrack/Vstplug.cpp =================================================================== --- trunk/OpenMPT/mptrack/Vstplug.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/mptrack/Vstplug.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -985,8 +985,8 @@ char rawname[MAX(kVstMaxProgNameLen + 1, 256)] = ""; // kVstMaxProgNameLen is 24... Dispatch(effGetProgramName, 0, 0, rawname, 0); + mpt::String::SetNullTerminator(rawname); SanitizeFilename(rawname); - mpt::String::SetNullTerminator(rawname); FileDialog dlg = SaveFileDialog() .DefaultExtension("fxb") @@ -1419,8 +1419,8 @@ void CVstPlugin::SetDryRatio(UINT param) //-------------------------------------- { - param = MIN(param, 127); - m_pMixStruct->fDryRatio = static_cast<float>(1.0-(static_cast<double>(param)/127.0)); + param = std::min(param, UINT(127)); + m_pMixStruct->fDryRatio = 1.0f - (param / 127.0f); } Modified: trunk/OpenMPT/soundlib/ITCompression.cpp =================================================================== --- trunk/OpenMPT/soundlib/ITCompression.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/soundlib/ITCompression.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -10,10 +10,11 @@ #include <stdafx.h> +#include <ostream> #include "ITCompression.h" #include "../common/misc_util.h" -#include <ostream> #include "../common/mptIO.h" +#include "ModSample.h" OPENMPT_NAMESPACE_BEGIN Modified: trunk/OpenMPT/soundlib/ITCompression.h =================================================================== --- trunk/OpenMPT/soundlib/ITCompression.h 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/soundlib/ITCompression.h 2014-11-09 00:21:59 UTC (rev 4568) @@ -10,15 +10,15 @@ #pragma once +#include <vector> +#include <iosfwd> #include "Snd_defs.h" -#include <vector> -#include "ModSample.h" #include "FileReader.h" -#include <iosfwd> OPENMPT_NAMESPACE_BEGIN +struct ModSample; //================= class ITCompression @@ -34,7 +34,7 @@ protected: std::vector<int> bwt; // Bit width table uint8 *packedData; // Compressed data for current sample block - std::ostream *file; // File to which compressed data will be written (can be nullptr if you only want to find out the sample size) + std::ostream *file; // File to which compressed data will be written (can be nullptr if you only want to find out the sample size) void *sampleData; // Pre-processed sample data for currently compressed sample block const ModSample &mptSample; // Sample that is being processed size_t packedLength; // Size of currently compressed sample block Modified: trunk/OpenMPT/soundlib/Load_dmf.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_dmf.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/soundlib/Load_dmf.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -48,7 +48,7 @@ idPATT = MAGIC4LE('P','A','T','T'), // Patterns idSMPI = MAGIC4LE('S','M','P','I'), // Sample headers idSMPD = MAGIC4LE('S','M','P','D'), // Sample data - idSMPJ = MAGIC4LE('S','M','P','J'), // Sample jump table (XTrakcker 32 only) + idSMPJ = MAGIC4LE('S','M','P','J'), // Sample jump table (XTracker 32 only) idENDE = MAGIC4LE('E','N','D','E'), // Last four bytes of DMF file idSETT = MAGIC4LE('S','E','T','T'), // Probably contains GUI settings }; @@ -222,7 +222,7 @@ noteBuffer = lastNote = NOTE_NONE; vibratoType = 8; tremoloType = 4; - highOffset = 0; + highOffset = 6; playDir = false; } }; Modified: trunk/OpenMPT/soundlib/Load_it.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/soundlib/Load_it.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -383,11 +383,11 @@ interpretModPlugMade = true; } else if(fileHeader.cwtv == 0x0217 && fileHeader.cmwt == 0x0200 && !memcmp(fileHeader.reserved, "\0\0\0\0", 4)) { - if(memchr(fileHeader.chnpan, 0xFF, sizeof(fileHeader.chnpan)) != NULL) + if(memchr(fileHeader.chnpan, 0xFF, sizeof(fileHeader.chnpan)) != nullptr) { // ModPlug Tracker 1.16 (semi-raped IT format) m_dwLastSavedWithVersion = MAKE_VERSION_NUMERIC(1, 16, 00, 00); - madeWithTracker = "ModPlug tracker 1.09 - 1.16"; + madeWithTracker = "ModPlug Tracker 1.09 - 1.16"; } else { // OpenMPT 1.17 disguised as this in compatible mode, @@ -400,7 +400,7 @@ { // ModPlug Tracker b3.3 - 1.09, instruments 557 bytes apart m_dwLastSavedWithVersion = MAKE_VERSION_NUMERIC(1, 09, 00, 00); - madeWithTracker = "ModPlug tracker b3.3 - 1.09"; + madeWithTracker = "ModPlug Tracker b3.3 - 1.09"; interpretModPlugMade = true; } } else // case: type == MOD_TYPE_MPT @@ -477,26 +477,17 @@ uint32 minPtr = Util::MaxValueOfType(minPtr); for(uint16 n = 0; n < fileHeader.insnum; n++) { - if(insPos[n] > 0) - { - minPtr = std::min(minPtr, insPos[n]); - } + if(insPos[n] > 0) minPtr = std::min(minPtr, insPos[n]); } for(uint16 n = 0; n < fileHeader.smpnum; n++) { - if(smpPos[n] > 0) - { - minPtr = std::min(minPtr, smpPos[n]); - } + if(smpPos[n] > 0) minPtr = std::min(minPtr, smpPos[n]); } for(uint16 n = 0; n < fileHeader.patnum; n++) { - if(patPos[n] > 0) - { - minPtr = std::min(minPtr, patPos[n]); - } + if(patPos[n] > 0) minPtr = std::min(minPtr, patPos[n]); } if(fileHeader.special & ITFileHeader::embedSongMessage) @@ -508,7 +499,7 @@ // This is only supposed to be present if bit 1 of the special flags is set. // However, old versions of Schism and probably other trackers always set this bit // even if they don't write the edit history count. So we have to filter this out... - // This is done by looking at the parapointers. If the history data end after + // This is done by looking at the parapointers. If the history data ends after // the first parapointer, we assume that it's actually no history data. if(fileHeader.special & ITFileHeader::embedEditHistory) { @@ -556,11 +547,6 @@ m_SongFlags.set(SONG_EMBEDMIDICFG); } - if(file.ReadMagic("MODU")) - { - madeWithTracker = "BeRoTracker"; - } - // Read pattern names: "PNAM" FileReader patNames; if(file.ReadMagic("PNAM")) @@ -1946,6 +1932,9 @@ } //end rewbs.modularPlugData } + } else if(!memcmp(code, "MODU", 4)) + { + madeWithTracker = "BeRoTracker"; } else if(!memcmp(code, "XTPM", 4)) { // Read too far, chicken out... Modified: trunk/OpenMPT/soundlib/Load_psm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_psm.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/soundlib/Load_psm.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -1069,16 +1069,16 @@ mptSmp.uFlags.reset(); if(flags & PSM16SampleHeader::smp16Bit) { - mptSmp.uFlags |= CHN_16BIT; + mptSmp.uFlags.set(CHN_16BIT); mptSmp.nLength /= 2; } if(flags & PSM16SampleHeader::smpPingPong) { - mptSmp.uFlags |= CHN_PINGPONGLOOP; + mptSmp.uFlags.set(CHN_PINGPONGLOOP); } if(flags & PSM16SampleHeader::smpLoop) { - mptSmp.uFlags |= CHN_LOOP; + mptSmp.uFlags.set(CHN_LOOP); } } Modified: trunk/OpenMPT/soundlib/Load_stm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_stm.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/soundlib/Load_stm.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -123,10 +123,6 @@ struct PACKED STMPatternData { STMPatternEntry entry[64 * 4]; - void ConvertEndianness() - { - // nothing - } }; STATIC_ASSERT(sizeof(STMPatternData) == 4*64*4); @@ -204,7 +200,7 @@ { STMPatternData patternData; - if(!(loadFlags & loadPatternData) || !Patterns.Insert(pat, 64) || !file.ReadConvertEndianness(patternData)) + if(!(loadFlags & loadPatternData) || !Patterns.Insert(pat, 64) || !file.ReadStruct(patternData)) { file.Skip(sizeof(patternData)); continue; Modified: trunk/OpenMPT/soundlib/MIDIMacros.cpp =================================================================== --- trunk/OpenMPT/soundlib/MIDIMacros.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/soundlib/MIDIMacros.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -476,11 +476,11 @@ } -// Remove blanks and other unwanted characters from macro strings for internal usage. +// Normalize by removing blanks and other unwanted characters from macro strings for internal usage. std::string MIDIMacroConfig::GetSafeMacro(const char *macro) const //---------------------------------------------------------------- { - std::string sanitizedMacro = std::string(macro); + std::string sanitizedMacro = macro; std::string::size_type pos; while((pos = sanitizedMacro.find_first_not_of("0123456789ABCDEFabpcnuvxyz")) != std::string::npos) Modified: trunk/OpenMPT/soundlib/ModSequence.cpp =================================================================== --- trunk/OpenMPT/soundlib/ModSequence.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/soundlib/ModSequence.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -264,7 +264,7 @@ //------------------------------------------------------------------------------------ { if (nPos >= m_sndFile.GetModSpecifications().ordersMax || nCount == 0) - return (nCount = 0); + return 0; const ORDERINDEX nLengthTt = GetLengthTailTrimmed(); // Limit number of orders to be inserted. LimitMax(nCount, ORDERINDEX(m_sndFile.GetModSpecifications().ordersMax - nPos)); Modified: trunk/OpenMPT/soundlib/S3MTools.cpp =================================================================== --- trunk/OpenMPT/soundlib/S3MTools.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/soundlib/S3MTools.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -97,12 +97,12 @@ smpLength = length; - flags = (mptSmp.uFlags & CHN_LOOP) ? smpLoop : 0; - if(mptSmp.uFlags & CHN_16BIT) + flags = (mptSmp.uFlags[CHN_LOOP] ? smpLoop : 0); + if(mptSmp.uFlags[CHN_16BIT]) { flags |= smp16Bit; } - if(mptSmp.uFlags & CHN_STEREO) + if(mptSmp.uFlags[CHN_STEREO]) { flags |= smpStereo; } Modified: trunk/OpenMPT/soundlib/SampleIO.cpp =================================================================== --- trunk/OpenMPT/soundlib/SampleIO.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/soundlib/SampleIO.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -593,25 +593,29 @@ size_t SampleIO::WriteSample(FILE *f, const ModSample &sample, SmpLength maxSamples) const //---------------------------------------------------------------------------------------- { + if(!sample.HasSampleData()) return 0; + size_t len = 0, bufcount = 0; - int8 buffer8[4096]; - int16 buffer16[4096]; + union + { + int8 buffer8[4096]; + int16 buffer16[4096]; + }; const void *const pSampleVoid = sample.pSample; const int8 *const pSample8 = sample.pSample8; const int16 *const pSample16 = sample.pSample16; SmpLength numSamples = sample.nLength; if(maxSamples && numSamples > maxSamples) numSamples = maxSamples; - if(!sample.HasSampleData()) return 0; if(GetBitDepth() == 16 && GetChannelFormat() == mono && GetEndianness() == littleEndian && (GetEncoding() == signedPCM || GetEncoding() == unsignedPCM || GetEncoding() == deltaPCM)) { // 16-bit little-endian mono samples const int16 *p = pSample16; - int s_old = 0, s_ofs; + int s_old = 0; len = numSamples * 2; - s_ofs = (GetEncoding() == unsignedPCM) ? 0x8000 : 0; + const int s_ofs = (GetEncoding() == unsignedPCM) ? 0x8000 : 0; for(SmpLength j = 0; j < numSamples; j++) { int s_new = *p; @@ -644,7 +648,7 @@ (GetEncoding() == signedPCM || GetEncoding() == unsignedPCM || GetEncoding() == deltaPCM)) { // 8-bit Stereo samples (not interleaved) - int s_ofs = (GetEncoding() == unsignedPCM) ? 0x80 : 0; + const int s_ofs = (GetEncoding() == unsignedPCM) ? 0x80 : 0; for (UINT iCh=0; iCh<2; iCh++) { const int8 *p = pSample8 + iCh; @@ -678,14 +682,14 @@ (GetEncoding() == signedPCM || GetEncoding() == unsignedPCM || GetEncoding() == deltaPCM)) { // 16-bit little-endian Stereo samples (not interleaved) - int s_ofs = (GetEncoding() == unsignedPCM) ? 0x8000 : 0; + const int s_ofs = (GetEncoding() == unsignedPCM) ? 0x8000 : 0; for (UINT iCh=0; iCh<2; iCh++) { const int16 *p = pSample16 + iCh; int s_old = 0; bufcount = 0; - for (UINT j=0; j<numSamples; j++) + for (SmpLength j=0; j<numSamples; j++) { int s_new = *p; p += 2; @@ -711,7 +715,7 @@ else if((GetBitDepth() == 8 || (GetBitDepth() == 16 && GetEndianness() == littleEndian)) && GetChannelFormat() == stereoInterleaved && GetEncoding() == signedPCM) { - // Stereo signed interleaved + // Stereo signed interleaved len = sample.GetSampleSizeInBytes(); if(f) fwrite(pSampleVoid, 1, len, f); } @@ -722,7 +726,7 @@ len = numSamples * 2; for(SmpLength j = 0; j < len; j++) { - buffer8[bufcount] = (int8)(uint8)((uint8)(pSample8[j]) + 0x80); + buffer8[bufcount] = (int8)((uint8)(pSample8[j]) + 0x80); bufcount++; if(bufcount >= CountOf(buffer8)) { @@ -747,10 +751,11 @@ len = numSamples; const int8 *p = pSample8; int sinc = (sample.uFlags & CHN_16BIT) ? 2 : 1; - int s_old = 0, s_ofs = (GetEncoding() == unsignedPCM) ? 0x80 : 0; + int s_old = 0; + const int s_ofs = (GetEncoding() == unsignedPCM) ? 0x80 : 0; if (sample.uFlags & CHN_16BIT) p++; - for (UINT j=0; j<len; j++) + for (SmpLength j=0; j<len; j++) { int s_new = (int8)(*p); p += sinc; Modified: trunk/OpenMPT/soundlib/Sndmix.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndmix.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/soundlib/Sndmix.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -129,7 +129,7 @@ // Apply stereo separation factor on an interleaved stereo/quad stream. // count = Number of stereo sample pairs to process -// separation = 0...128 +// separation = -128...128 (negative values = swap L/R, 0 = mono) static void ApplyStereoSeparation(mixsample_t *mixBuf, CSoundFile::samplecount_t count, int32 separation) //------------------------------------------------------------------------------------------------------- { @@ -258,7 +258,7 @@ InterleaveFrontRear(MixSoundBuffer, MixRearBuffer, countChunk); } - if(m_MixerSettings.m_nStereoSeparation < 128 && m_MixerSettings.gnChannels >= 2) + if(m_MixerSettings.m_nStereoSeparation >= -128 && m_MixerSettings.m_nStereoSeparation < 128 && m_MixerSettings.gnChannels >= 2) { // Apply stereo separation ApplyStereoSeparation(MixSoundBuffer, count * m_MixerSettings.gnChannels / 2, m_MixerSettings.m_nStereoSeparation); Modified: trunk/OpenMPT/soundlib/Tables.cpp =================================================================== --- trunk/OpenMPT/soundlib/Tables.cpp 2014-11-09 00:04:15 UTC (rev 4567) +++ trunk/OpenMPT/soundlib/Tables.cpp 2014-11-09 00:21:59 UTC (rev 4568) @@ -324,7 +324,7 @@ }; -const uint16 ProTrackerTunedPeriods[16*12] = +const uint16 ProTrackerTunedPeriods[16*12] = { 1712,1616,1524,1440,1356,1280,1208,1140,1076,1016,960,907, 1700,1604,1514,1430,1348,1274,1202,1134,1070,1010,954,900, @@ -341,7 +341,7 @@ 1762,1664,1570,1482,1398,1320,1246,1176,1110,1048,988,934, 1750,1652,1558,1472,1388,1310,1238,1168,1102,1040,982,926, 1736,1640,1548,1460,1378,1302,1228,1160,1094,1032,974,920, - 1724,1628,1536,1450,1368,1292,1220,1150,1086,1026,968,914 + 1724,1628,1536,1450,1368,1292,1220,1150,1086,1026,968,914 }; // Table for Invert Loop and Funk Repeat effects (EFx, .MOD only) @@ -349,10 +349,10 @@ { 0, 5, 6, 7, 8, 10, 11, 13, 16, 19, 22, 26, 32, 43, 64, 128 -}; +}; // S3M C-4 periods -const uint16 FreqS3MTable[16] = +const uint16 FreqS3MTable[16] = { 1712,1616,1524,1440,1356,1280, 1208,1140,1076,1016,960,907, @@ -360,7 +360,7 @@ }; // S3M FineTune frequencies -const uint16 S3MFineTuneTable[16] = +const uint16 S3MFineTuneTable[16] = { 7895,7941,7985,8046,8107,8169,8232,8280, 8363,8413,8463,8529,8581,8651,8723,8757, // 8363*2^((i-8)/(12*8)) @@ -449,7 +449,7 @@ -const uint16 XMPeriodTable[104] = +const uint16 XMPeriodTable[104] = { 907,900,894,887,881,875,868,862,856,850,844,838,832,826,820,814, 808,802,796,791,785,779,774,768,762,757,752,746,741,736,730,725, @@ -464,7 +464,7 @@ // floor(8363 * 64 * 2**(-n/768)) // 768 = 64 period steps for 12 notes // Table is for highest possible octave -const uint32 XMLinearTable[768] = +const uint32 XMLinearTable[768] = { 535232,534749,534266,533784,533303,532822,532341,531861, 531381,530902,530423,529944,529466,528988,528511,528034, @@ -561,11 +561,11 @@ 275457,275209,274960,274712,274465,274217,273970,273722, 273476,273229,272982,272736,272490,272244,271999,271753, 271508,271263,271018,270774,270530,270286,270042,269798, - 269555,269312,269069,268826,268583,268341,268099,267857 + 269555,269312,269069,268826,268583,268341,268099,267857 }; -const int8 ft2VibratoTable[256] = +const int8 ft2VibratoTable[256] = { 0,-2,-3,-5,-6,-8,-9,-11,-12,-14,-16,-17,-19,-20,-22,-23, -24,-26,-27,-29,-30,-32,-33,-34,-36,-37,-38,-39,-41,-42, @@ -582,7 +582,7 @@ 63,63,64,64,64,64,64,64,64,64,64,64,64,63,63,63,62,62, 62,61,61,60,60,59,59,58,57,56,56,55,54,53,52,51,50,49, 48,47,46,45,44,43,42,41,39,38,37,36,34,33,32,30,29,27, - 26,24,23,22,20,19,17,16,14,12,11,9,8,6,5,3,2 + 26,24,23,22,20,19,17,16,14,12,11,9,8,6,5,3,2 }; @@ -616,38 +616,38 @@ // Table content is in 16.16 format const uint32 LinearSlideUpTable[256] = { - 65536, 65773, 66010, 66249, 66489, 66729, 66971, 67213, - 67456, 67700, 67945, 68190, 68437, 68685, 68933, 69182, - 69432, 69684, 69936, 70189, 70442, 70697, 70953, 71209, - 71467, 71725, 71985, 72245, 72507, 72769, 73032, 73296, - 73561, 73827, 74094, 74362, 74631, 74901, 75172, 75444, - 75717, 75991, 76265, 76541, 76818, 77096, 77375, 77655, - 77935, 78217, 78500, 78784, 79069, 79355, 79642, 79930, - 80219, 80509, 80800, 81093, 81386, 81680, 81976, 82272, - 82570, 82868, 83168, 83469, 83771, 84074, 84378, 84683, - 84989, 85297, 85605, 85915, 86225, 86537, 86850, 87164, - 87480, 87796, 88113, 88432, 88752, 89073, 89395, 89718, - 90043, 90369, 90695, 91023, 91353, 91683, 92015, 92347, - 92681, 93017, 93353, 93691, 94029, 94370, 94711, 95053, - 95397, 95742, 96088, 96436, 96785, 97135, 97486, 97839, - 98193, 98548, 98904, 99262, 99621, 99981, 100343, 100706, - 101070, 101435, 101802, 102170, 102540, 102911, 103283, 103657, - 104031, 104408, 104785, 105164, 105545, 105926, 106309, 106694, - 107080, 107467, 107856, 108246, 108637, 109030, 109425, 109820, - 110217, 110616, 111016, 111418, 111821, 112225, 112631, 113038, - 113447, 113857, 114269, 114682, 115097, 115514, 115931, 116351, - 116771, 117194, 117618, 118043, 118470, 118898, 119328, 119760, - 120193, 120628, 121064, 121502, 121941, 122382, 122825, 123269, - 123715, 124162, 124611, 125062, 125514, 125968, 126424, 126881, - 127340, 127801, 128263, 128727, 129192, 129660, 130129, 130599, - 131072, 131546, 132021, 132499, 132978, 133459, 133942, 134426, - 134912, 135400, 135890, 136381, 136875, 137370, 137866, 138365, - 138865, 139368, 139872, 140378, 140885, 141395, 141906, 142419, - 142935, 143451, 143970, 144491, 145014, 145538, 146064, 146593, - 147123, 147655, 148189, 148725, 149263, 149803, 150344, 150888, - 151434, 151982, 152531, 153083, 153637, 154192, 154750, 155310, - 155871, 156435, 157001, 157569, 158138, 158710, 159284, 159860, - 160439, 161019, 161601, 162186, 162772, 163361, 163952, 164545, + 65536, 65773, 66010, 66249, 66489, 66729, 66971, 67213, + 67456, 67700, 67945, 68190, 68437, 68685, 68933, 69182, + 69432, 69684, 69936, 70189, 70442, 70697, 70953, 71209, + 71467, 71725, 71985, 72245, 72507, 72769, 73032, 73296, + 73561, 73827, 74094, 74362, 74631, 74901, 75172, 75444, + 75717, 75991, 76265, 76541, 76818, 77096, 77375, 77655, + 77935, 78217, 78500, 78784, 79069, 79355, 79642, 79930, + 80219, 80509, 80800, 81093, 81386, 81680, 81976, 82272, + 82570, 82868, 83168, 83469, 83771, 84074, 84378, 84683, + 84989, 85297, 85605, 85915, 86225, 86537, 86850, 87164, + 87480, 87796, 88113, 88432, 88752, 89073, 89395, 89718, + 90043, 90369, 90695, 91023, 91353, 91683, 92015, 92347, + 92681, 93017, 93353, 93691, 94029, 94370, 94711, 95053, + 95397, 95742, 96088, 96436, 96785, 97135, 97486, 97839, + 98193, 98548, 98904, 99262, 99621, 99981, 100343, 100706, + 101070, 101435, 101802, 102170, 102540, 102911, 103283, 103657, + 104031, 104408, 104785, 105164, 105545, 105926, 106309, 106694, + 107080, 107467, 107856, 108246, 108637, 109030, 109425, 109820, + 110217, 110616, 111016, 111418, 111821, 112225, 112631, 113038, + 113447, 113857, 114269, 114682, 115097, 115514, 115931, 116351, + 116771, 117194, 117618, 118043, 118470, 118898, 119328, 119760, + 120193, 120628, 121064, 121502, 121941, 122382, 122825, 123269, + 123715, 124162, 124611, 125062, 125514, 125968, 126424, 126881, + 127340, 127801, 128263, 128727, 129192, 129660, 130129, 130599, + 131072, 131546, 132021, 132499, 132978, 133459, 133942, 134426, + 134912, 135400, 135890, 136381, 136875, 137370, 137866, 138365, + 138865, 139368, 139872, 140378, 140885, 141395, 141906, 142419, + 142935, 143451, 143970, 144491, 145014, 145538, 146064, 146593, + 147123, 147655, 148189, 148725, 149263, 149803, 150344, 150888, + 151434, 151982, 152531, 153083, 153637, 154192, 154750, 155310, + 155871, 156435, 157001, 157569, 158138, 158710, 159284, 159860, + 160439, 161019, 161601, 162186, 162772, 163361, 163952, 164545, }; @@ -656,38 +656,38 @@ // Table content is in 16.16 format const uint32 LinearSlideDownTable[256] = { - 65536, 65299, 65064, 64830, 64596, 64363, 64131, 63900, - 63670, 63440, 63212, 62984, 62757, 62531, 62305, 62081, - 61857, 61634, 61412, 61191, 60970, 60751, 60532, 60314, - 60096, 59880, 59664, 59449, 59235, 59021, 58809, 58597, - 58385, 58175, 57965, 57757, 57548, 57341, 57134, 56928, - 56723, 56519, 56315, 56112, 55910, 55709, 55508, 55308, - 55108, 54910, 54712, 54515, 54318, 54123, 53928, 53733, - 53540, 53347, 53154, 52963, 52772, 52582, 52392, 52204, - 52015, 51828, 51641, 51455, 51270, 51085, 50901, 50717, - 50535, 50353, 50171, 49990, 49810, 49631, 49452, 49274, - 49096, 48919, 48743, 48567, 48392, 48218, 48044, 47871, - 47698, 47526, 47355, 47185, 47014, 46845, 46676, 46508, - 46340, 46173, 46007, 45841, 45676, 45511, 45347, 45184, - 45021, 44859, 44697, 44536, 44376, 44216, 44056, 43898, - 43740, 43582, 43425, 43268, 43112, 42957, 42802, 42648, - 42494, 42341, 42189, 42037, 41885, 41734, 41584, 41434, - 41285, 41136, 40988, 40840, 40693, 40546, 40400, 40254, - 40109, 39965, 39821, 39677, 39534, 39392, 39250, 39108, - 38967, 38827, 38687, 38548, 38409, 38270, 38132, 37995, - 37858, 37722, 37586, 37450, 37315, 37181, 37047, 36913, - 36780, 36648, 36516, 36384, 36253, 36122, 35992, 35862, - 35733, 35604, 35476, 35348, 35221, 35094, 34968, 34842, - 34716, 34591, 34466, 34342, 34218, 34095, 33972, 33850, - 33728, 33606, 33485, 33364, 33244, 33124, 33005, 32886, - 32768, 32649, 32532, 32415, 32298, 32181, 32065, 31950, - 31835, 31720, 31606, 31492, 31378, 31265, 31152, 31040, - 30928, 30817, 30706, 30595, 30485, 30375, 30266, 30157, - 30048, 29940, 29832, 29724, 29617, 29510, 29404, 29298, - 29192, 29087, 28982, 28878, 28774, 28670, 28567, 28464, - 28361, 28259, 28157, 28056, 27955, 27854, 27754, 27654, - 27554, 27455, 27356, 27257, 27159, 27061, 26964, 26866, - 26770, 26673, 26577, 26481, 26386, 26291, 26196, 26102, + 65536, 65299, 65064, 64830, 64596, 64363, 64131, 63900, + 63670, 63440, 63212, 62984, 62757, 62531, 62305, 62081, + 61857, 61634, 61412, 61191, 60970, 60751, 60532, 60314, + 60096, 59880, 59664, 59449, 59235, 59021, 58809, 58597, + 58385, 58175, 57965, 57757, 57548, 57341, 57134, 56928, + 56723, 56519, 56315, 56112, 55910, 55709, 55508, 55308, + 55108, 54910, 54712, 54515, 54318, 54123, 53928, 53733, + 53540, 53347, 53154, 52963, 52772, 52582, 52392, 52204, + 52015, 51828, 51641, 51455, 51270, 51085, 50901, 50717, + 50535, 50353, 50171, 49990, 49810, 49631, 49452, 49274, + 49096, 48919, 48743, 48567, 48392, 48218, 48044, 47871, + 47698, 47526, 47355, 47185, 47014, 46845, 46676, 46508, + 46340, 46173, 46007, 45841, 45676, 45511, 45347, 45184, + 45021, 44859, 44697, 44536, 44376, 44216, 44056, 43898, + 43740, 43582, 43425, 43268, 43112, 42957, 42802, 42648, + 42494, 42341, 42189, 42037, 41885, 41734, 41584, 41434, + 41285, 41136, 40988, 40840, 40693, 40546, 40400, 40254, + 40109, 39965, 39821, 39677, 39534, 39392, 39250, 39108, + 38967, 38827, 38687, 38548, 38409, 38270, 38132, 37995, + 37858, 37722, 37586, 37450, 37315, 37181, 37047, 36913, + 36780, 36648, 36516, 36384, 36253, 36122, 35992, 35862, + 35733, 35604, 35476, 35348, 35221, 35094, 34968, 34842, + 34716, 34591, 34466, 34342, 34218, 34095, 33972, 33850, + 33728, 33606, 33485, 33364, 33244, 33124, 33005, 32886, + 32768, 32649, 32532, 32415, 32298, 32181, 32065, 31950, + 31835, 31720, 31606, 31492, 31378, 31265, 31152, 31040, + 30928, 30817, 30706, 30595, 30485, 30375, 30266, 30157, + 30048, 29940, 29832, 29724, 29617, 29510, 29404, 29298, + 29192, 29087, 28982, 28878, 28774, 28670, 28567, 28464, + 28361, 28259, 28157, 28056, 27955, 27854, 27754, 27654, + 27554, 27455, 27356, 27257, 27159, 27061, 26964, 26866, + 26770, 26673, 26577, 26481, 26386, 26291, 26196, 26102, }; @@ -755,70 +755,70 @@ // Reversed sinc coefficients for 4x256 taps polyphase FIR resampling filter (SchismTracker's lutgen.c should generate a very similar table, but it's more precise) const int16 CResampler::FastSincTable[256*4] = { // Cubic Spline - 0, 16384, 0, 0, -31, 16383, 32, 0, -63, 16381, 65, 0, -93, 16378, 100, -1, - -124, 16374, 135, -1, -153, 16368, 172, -3, -183, 16361, 209, -4, -211, 16353, 247, -5, - -240, 16344, 287, -7, -268, 16334, 327, -9, -295, 16322, 368, -12, -322, 16310, 410, -14, - -348, 16296, 453, -17, -374, 16281, 497, -20, -400, 16265, 541, -23, -425, 16248, 587, -26, - -450, 16230, 634, -30, -474, 16210, 681, -33, -497, 16190, 729, -37, -521, 16168, 778, -41, - -543, 16145, 828, -46, -566, 16121, 878, -50, -588, 16097, 930, -55, -609, 16071, 982, -60, - -630, 16044, 1035, -65, -651, 16016, 1089, -70, -671, 15987, 1144, -75, -691, 15957, 1199, -81, - -710, 15926, 1255, -87, -729, 15894, 1312, -93, -748, 15861, 1370, -99, -766, 15827, 1428, -105, - -784, 15792, 1488, -112, -801, 15756, 1547, -118, -818, 15719, 1608, -125, -834, 15681, 1669, -132, - -850, 15642, 1731, -139, -866, 15602, 1794, -146, -881, 15561, 1857, -153, -896, 15520, 1921, -161, - -911, 15477, 1986, -168, -925, 15434, 2051, -176, -939, 15390, 2117, -184, -952, 15344, 2184, -192, - -965, 15298, 2251, -200, -978, 15251, 2319, -208, -990, 15204, 2387, -216, -1002, 15155, 2456, -225, --1014, 15106, 2526, -234, -1025, 15055, 2596, -242, -1036, 15004, 2666, -251, -1046, 14952, 2738, -260, --1056, 14899, 2810, -269, -1066, 14846, 2882, -278, -1075, 14792, 2955, -287, -1084, 14737, 3028, -296, --1093, 14681, 3102, -306, -1102, 14624, 3177, -315, -1110, 14567, 3252, -325, -1118, 14509, 3327, -334, --1125, 14450, 3403, -344, -1132, 14390, 3480, -354, -1139, 14330, 3556, -364, -1145, 14269, 3634, -374, --1152, 14208, 3712, -384, -1157, 14145, 3790, -394, -1163, 14082, 3868, -404, -1168, 14018, 3947, -414, --1173, 13954, 4027, -424, -1178, 13889, 4107, -434, -1182, 13823, 4187, -445, -1186, 13757, 4268, -455, --1190, 13690, 4349, -465, -1193, 13623, 4430, -476, -1196, 13555, 4512, -486, -1199, 13486, 4594, -497, --1202, 13417, 4676, -507, -1204, 13347, 4759, -518, -1206, 13276, 4842, -528, -1208, 13205, 4926, -539, --1210, 13134, 5010, -550, -1211, 13061, 5094, -560, -1212, 12989, 5178, -571, -1212, 12915, 5262, -581, --1213, 12842, 5347, -592, -1213, 12767, 5432, -603, -1213, 12693, 5518, -613, -1213, 12617, 5603, -624, --1212, 12542, 5689, -635, -1211, 12466, 5775, -645, -1210, 12389, 5862, -656, -1209, 12312, 5948, -667, --1208, 12234, 6035, -677, -1206, 12156, 6122, -688, -1204, 12078, 6209, -698, -1202, 11999, 6296, -709, --1200, 11920, 6384, -720, -1197, 11840, 6471, -730, -1194, 11760, 6559, -740, -1191, 11679, 6647, -751, --1188, 11598, 6735, -761, -1184, 11517, 6823, -772, -1181, 11436, 6911, -782, -1177, 11354, 6999, -792, --1173, 11271, 7088, -802, -1168, 11189, 7176, -812, -1164, 11106, 7265, -822, -1159, 11022, 7354, -832, --1155, 10939, 7442, -842, -1150, 10855, 7531, -852, -1144, 10771, 7620, -862, -1139, 10686, 7709, -872, --1134, 10602, 7798, -882, -1128, 10516, 7886, -891, -1122, 10431, 7975, -901, -1116, 10346, 8064, -910, --1110, 10260, 8153, -919, -1103, 10174, 8242, -929, -1097, 10088, 8331, -938, -1090, 10001, 8420, -947, --1083, 9915, 8508, -956, -1076, 9828, 8597, -965, -1069, 9741, 8686, -973, -1062, 9654, 8774, -982, --1054, 9566, 8863, -991, -1047, 9479, 8951, -999, -1039, 9391, 9039, -1007, -1031, 9303, 9127, -1015, --1024, 9216, 9216, -1024, -1015, 9127, 9303, -1031, -1007, 9039, 9391, -1039, -999, 8951, 9479, -1047, - -991, 8863, 9566, -1054, -982, 8774, 9654, -1062, -973, 8686, 9741, -1069, -965, 8597, 9828, -1076, - -956, 8508, 9915, -1083, -947, 8420, 10001, -1090, -938, 8331, 10088, -1097, -929, 8242, 10174, -1103, - -919, 8153, 10260, -1110, -910, 8064, 10346, -1116, -901, 7975, 10431, -1122, -891, 7886, 10516, -1128, - -882, 7798, 10602, -1134, -872, 7709, 10686, -1139, -862, 7620, 10771, -1144, -852, 7531, 10855, -1150, - -842, 7442, 10939, -1155, -832, 7354, 11022, -1159, -822, 7265, 11106, -1164, -812, 7176, 11189, -1168, - -802, 7088, 11271, -1173, -792, 6999, 11354, -1177, -782, 6911, 11436, -1181, -772, 6823, 11517, -1184, - -761, 6735, 11598, -1188, -751, 6647, 11679, -1191, -740, 6559, 11760, -1194, -730, 6471, 11840, -1197, - -720, 6384, 11920, -1200, -709, 6296, 11999, -1202, -698, 6209, 12078, -1204, -688, 6122, 12156, -1206, - -677, 6035, 12234, -1208, -667, 5948, 12312, -1209, -656, 5862, 12389, -1210, -645, 5775, 12466, -1211, - -635, 5689, 12542, -1212, -624, 5603, 12617, -1213, -613, 5518, 12693, -1213, -603, 5432, 12767, -1213, - -592, 5347, 12842, -1213, -581, 5262, 12915, -1212, -571, 5178, 12989, -1212, -560, 5094, 13061, -1211, - -550, 5010, 13134, -1210, -539, 4926, 13205, -1208, -528, 4842, 13276, -1206, -518, 4759, 13347, -1204, - -507, 4676, 13417, -1202, -497, 4594, 13486, -1199, -486, 4512, 13555, -1196, -476, 4430, 13623, -1193, - -465, 4349, 13690, -1190, -455, 4268, 13757, -1186, -445, 4187, 13823, -1182, -434, 4107, 13889, -1178, - -424, 4027, 13954, -1173, -414, 3947, 14018, -1168, -404, 3868, 14082, -1163, -394, 3790, 14145, -1157, - -384, 3712, 14208, -1152, -374, 3634, 14269, -1145, -364, 3556, 14330, -1139, -354, 3480, 14390, -1132, - -344, 3403, 14450, -1125, -334, 3327, 14509, -1118, -325, 3252, 14567, -1110, -315, 3177, 14624, -1102, - -306, 3102, 14681, -1093, -296, 3028, 14737, -1084, -287, 2955, 14792, -1075, -278, 2882, 14846, -1066, - -269, 2810, 14899, -1056, -260, 2738, 14952, -1046, -251, 2666, 15004, -1036, -242, 2596, 15055, -1025, - -234, 2526, 15106, -1014, -225, 2456, 15155, -1002, -216, 2387, 15204, -990, -208, 2319, 15251, -978, - -200, 2251, 15298, -965, -192, 2184, 15344, -952, -184, 2117, 15390, -939, -176, 2051, 15434, -925, - -168, 1986, 15477, -911, -161, 1921, 15520, -896, -153, 1857, 15561, -881, -146, 1794, 15602, -866, - -139, 1731, 15642, -850, -132, 1669, 15681, -834, -125, 1608, 15719, -818, -118, 1547, 15756, -801, - -112, 1488, 15792, -784, -105, 1428, 15827, -766, -99, 1370, 15861, -748, -93, 1312, 15894, -729, - -87, 1255, 15926, -710, -81, 1199, 15957, -691, -75, 1144, 15987, -671, -70, 1089, 16016, -651, - -65, 1035, 16044, -630, -60, 982, 16071, -609, -55, 930, 16097, -588, -50, 878, 16121, -566, - -46, 828, 16145, -543, -41, 778, 16168, -521, -37, 729, 16190, -497, -33, 681, 16210, -474, - -30, 634, 16230, -450, -26, 587, 16248, -425, -23, 541, 16265, -400, -20, 497, 16281, -374, - -17, 453, 16296, -348, -14, 410, 16310, -322, -12, 368, 16322, -295, -9, 327, 16334, -268, - -7, 287, 16344, -240, -5, 247, 16353, -211, -4, 209, 16361, -183, -3, 172, 16368, -153, - -1, 135, 16374, -124, -1, 100, 16378, -93, 0, 65, 16381, -63, 0, 32, 16383, -31, + 0, 16384, 0, 0, -31, 16383, 32, 0, -63, 16381, 65, 0, -93, 16378, 100, -1, + -124, 16374, 135, -1, -153, 16368, 172, -3, -183, 16361, 209, -4, -211, 16353, 247, -5, + -240, 16344, 287, -7, -268, 16334, 327, -9, -295, 16322, 368, -12, -322, 16310, 410, -14, + -348, 16296, 453, -17, -374, 16281, 497, -20, -400, 16265, 541, -23, -425, 16248, 587, -26, + -450, 16230, 634, -30, -474, 16210, 681, -33, -497, 16190, 729, -37, -521, 16168, 778, -41, + -543, 16145, 828, -46, -566, 16121, 878, -50, -588, 16097, 930, -55, -609, 16071, 982, -60, + -630, 16044, 1035, -65, -651, 16016, 1089, -70, -671, 15987, 1144, -75, -691, 15957, 1199, -81, + -710, 15926, 1255, -87, -729, 15894, 1312, -93, -748, 15861, 1370, -99, -766, 15827, 1428, -105, + -784, 15792, 1488, -112, -801, 15756, 1547, -118, -818, 15719, 1608, -125, -834, 15681, 1669, -132, + -850, 15642, 1731, -139, -866, 15602, 1794, -146, -881, 15561, 1857, -153, -896, 15520, 1921, -161, + -911, 15477, 1986, -168, -925, 15434, 2051, -176, -939, 15390, 2117, -184, -952, 15344, 2184, -192, + -965, 15298, 2251, -200, -978, 15251, 2319, -208, -990, 15204, 2387, -216, -1002, 15155, 2456, -225, +-1014, 15106, 2526, -234, -1025, 15055, 2596, -242, -1036, 15004, 2666, -251, -1046, 14952, 2738, -260, +-1056, 14899, 2810, -269, -1066, 14846, 2882, -278, -1075, 14792, 2955, -287, -1084, 14737, 3028, -296, +-1093, 14681, 3102, -306, -1102, 14624, 3177, -315, -1110, 14567, 3252, -325, -1118, 14509, 3327, -334, +-1125, 14450, 3403, -344, -1132, 14390, 3480, -354, -1139, 14330, 3556, -364, -1145, 14269, 3634, -374, +-1152, 14208, 3712, -384, -1157, 14145, 3790, -394, -1163, 14082, 3868, -404, -1168, 14018, 3947, -414, +-1173, 13954, 4027, -424, -1178, 13889, 4107, -434, -1182, 13823, 4187, -445, -1186, 13757, 4268, -455, +-1190, 13690, 4349, -465, -1193, 13623, 4430, -476, -1196, 13555, 4512, -486, -1199, 13486, 4594, -497, +-1202, 13417, 4676, -507, -1204, 13347, 4759, -518, -1206, 13276, 4842, -528, -1208, 13205, 4926, -539, +-1210, 13134, 5010, -550, -1211, 13061, 5094, -560, -1212, 12989, 5178, -571, -1212, 12915, 5262, -581, +-1213, 12842, 5347, -592, -1213, 12767, 5432, -603, -1213, 12693, 5518, -613, -1213, 12617, 5603, -624, +-1212, 12542, 5689, -635, -1211, 12466, 5775, -645, -1210, 12389, 5862, -656, -1209, 12312, 5948, -667, +-1208, 12234, 6035, -677, -1206, 12156, 6122, -688, -1204, 12078, 6209, -698, -1202, 11999, 6296, -709, +-1200, 11920, 6384, -720, -1197, 11840, 6471, -730, -1194, 11760, 6559, -740, -1191, 11679, 6647, -751, +-1188, 11598, 6735, -761, -1184, 11517, 6823, -772, -1181, 11436, 6911, -782, -1177, 11354, 6999, -792, +-1173, 11271, 7088, -802, -1168, 11189, 7176, -812, -1164, 11106, 7265, -822, -1159, 11022, 7354, -832, +-1155, 10939, 7442, -842, -1150, 10855, 7531, -852, -1144, 10771, 7620, -862, -1139, 10686, 7709, -872, +-1134, 10602, 7798, -882, -1128, 10516, 7886, -891, -1122, 10431, 7975, -901, -1116, 10346, 8064, -910, +-1110, 10260, 8153, -919, -1103, 10174, 8242, -929, -1097, 10088, 8331, -938, -1090, 10001, 8420, -947, +-1083, 9915, 8508, -956, -1076, 9828, 8597, -965, -1069, 9741, 8686, -973, -1062, 9654, 8774, -982, +-1054, 9566, 8863, -991, -1047, 9479, 8951, -999, -1039, 9391, 9039, -1007, -1031, 9303, 9127, -1015, +-1024, 9216, 9216, -1024, -1015, 9127, 9303, -1031, -1007, 9039, 9391, -1039, -999, 8951, 9479, -1047, + -991, 8863, 9566, -1054, -982, 8774, 9654, -1062, -973, 8686, 9741, -1069, -965, 8597, 9828, -1076, + -956, 8508, 9915, -1083, -947, 8420, 10001, -1090, -938, 8331, 10088, -1097, -929, 8242, 10174, -1103, + -919, 8153, 10260, -1110, -910, 8064, 10346, -1116, -901, 7975, 10431, -1122, -891, 7886, 10516, -1128, + -882, 7798, 10602, -1134, -872, 7709, 10686, -1139, -862, 7620, 10771, -1144, -852, 7531, 10855, -1150, + -842, 7442, 10939, -1155, -832, 7354, 11022, -1159, -822, 7265, 11106, -1164, -812, 7176, 11189, -1168, + -802, 7088, 11271, -1173, -792, 6999, 11354, -1177, -782, 6911, 11436, -1181, -772, 6823, 11517, -1184, + -761, 6735, 11598, -1188, -751, 6647, 11679, -1191, -740, 6559, 11760, -1194, -730, 6471, 11840, -1197, + -720, 6384, 11920, -1200, -709, 6296, 11999, -1202, -698, 6209, 12078, -1204, -688, 6122, 12156, -1206, + -677, 6035, 12234, -1208, -667, 5948, 12312, -1209, -656, 5862, 12389, -1210, -645, 5775, 12466, -1211, + -635, 5689, 12542, -1212, -624, 5603, 12617, -1213, -613, 5518, 12693, -1213, -603, 5432, 12767, -1213, + -592, 5347, 12842, -1213, -581, 5262, 12915, -1212, -571, 5178, 12989, -1212, -560, 5094, 13061, -1211, + -550, 5010, 13134, -1210, -539, 4926, 13205, -1208, -528, 4842, 13276, -1206, -518, 4759, 13347, -1204, + -507, 4676, 13417, -1202, -497, 4594, 13486, -1199, -486, 4512, 13555, -1196, -476, 4430, 13623, -1193, + -465, 4349, 13690, -1190, -455, 4268, 13757, -1186, -445, 4187, 13823, -1182, -434, 4107, 13889, -1178, + -424, 4027, 13954, -1173, -414, 3947, 14018, -1168, -404, 3868, 14082, -1163, -394, 3790, 14145, -1157, + -384, 3712, 14208, -1152, -374, 3634, 14269, -1145, -364, 3556, 14330, -1139, -354, 3480, 14390, -1132, + -344, 3403, 14450, -1125, -334, 3327, 14509, -1118, -325, 3252, 14567, -1110, -315, 3177, 14624, -1102, + -306, 3102, 14681, -1093, -296, 3028, 14737, -1084, -287, 2955, 14792, -1075, -278, 2882, 14846, -1066, + -269, 2810, 14899, -1056, -260, 2738, 14952, -1046, -251, 2666, 15004, -1036, -242, 2596, 15055, -1025, + -234, 2526, 15106, -1014, -225, 2456, 15155, -1002, -216, 2387, 15204, -990, -208, 2319, 15251, -978, + -200, 2251, 15298, -965, -192, 2184, 15344, -952, -184, 2117, 15390, -939, -176, 2051, 15434, -925, + -168, 1986, 15477, -911, -161, 1921, 15520, -896, -153, 1857, 15561, -881, -146, 1794, 15602, -866, + -139, 1731, 15642, -850, -132, 1669, 15681, -834, -125, 1608, 15719, -818, -118, 1547, 15756, -801, + -112, 1488, 15792, -784, -105, 1428, 15827, -766, -99, 1370, 15861, -748, -93, 1312, 15894, -729, + -87, 1255, 15926, -710, -81, 1199, 15957, -691, -75, 1144, 15987, -671, -70, 1089, 16016, -651, + -65, 1035, 16044, -630, -60, 982, 16071, -609, -55, 930, 16097, -588, -50, 878, 16121, -566, + -46, 828, 16145, -543, -41, 778, 16168, -521, -37, 729, 16190, -497, -33, 681, 16210, -474, + -30, 634, 16230, -450, -26, 587, 16248, -425, -23, 541, 16265, -400, -20, 497, 16281, -374, + -17, 453, 16296, -348, -14, 410, 16310, -322, -12, 368, 16322, -295, -9, 327, 16334, -268, + -7, 287, 16344, -240, -5, 247, 16353, -211, -4, 209, 16361, -183, -3, 172, 16368, -153, + -1, 135, 16374, -124, -1, 100, 16378, -93, 0, 65, 16381, -63, 0, 32, 16383, -31, }; Modified: trunk/OpenM... [truncated message content] |