From: <sag...@us...> - 2010-03-14 18:43:37
|
Revision: 532 http://modplug.svn.sourceforge.net/modplug/?rev=532&view=rev Author: saga-games Date: 2010-03-14 18:43:27 +0000 (Sun, 14 Mar 2010) Log Message: ----------- [Fix] Comments tab: Correct C-5 frequency is now also shown if the module is an XM file. [Fix] Slightly better MT2 (MadTracker) handling: Release node is not set anymore for each and every instrument envelope. MT2 files are now loaded as IT files by default (instead of XM) because of their extended instrument properties (NNAs, filters, etc) - I wonder what this breaks, but I don't bother because MT2 support was already 100% broken before this. :) Some MT example tunes sound a bit better now at least. [Imp] Pattern Editor: Since the behaviour of sliding commands with both nibbles set varies from tracker to tracker, "undefined" is always shown in the note properties in such cases. [Imp] Module creation: When creating a new .MOD, it has 31 samples by default. [Ref] IsPortable is now static. [Ref] Some minor refactoring. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/Mptrack.h trunk/OpenMPT/mptrack/View_ins.cpp trunk/OpenMPT/mptrack/view_com.cpp trunk/OpenMPT/soundlib/Load_mt2.cpp trunk/OpenMPT/soundlib/Sndfile.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2010-03-14 14:26:37 UTC (rev 531) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2010-03-14 18:43:27 UTC (rev 532) @@ -338,14 +338,15 @@ case MOD_TYPE_OKT: case MOD_TYPE_AMS: case MOD_TYPE_MT2: - m_SndFile.ChangeModTypeTo(MOD_TYPE_XM); + m_SndFile.ChangeModTypeTo(MOD_TYPE_IT); + /*m_SndFile.ChangeModTypeTo(MOD_TYPE_XM); if ((m_SndFile.m_nDefaultTempo == 125) && (m_SndFile.m_nDefaultSpeed == 6) && (!m_SndFile.m_nInstruments)) { m_SndFile.m_nType = MOD_TYPE_MOD; for (UINT i=0; i<m_SndFile.Patterns.Size(); i++) if ((m_SndFile.Patterns[i]) && (m_SndFile.PatternSize[i] != 64)) m_SndFile.m_nType = MOD_TYPE_XM; - } + }*/ break; case MOD_TYPE_FAR: case MOD_TYPE_PTM: @@ -654,7 +655,7 @@ m_SndFile.m_nSamplePreAmp = m_SndFile.m_nVSTiVolume = 128; } - for (CHANNELINDEX nChn=0; nChn < MAX_BASECHANNELS; nChn++) + for (CHANNELINDEX nChn = 0; nChn < MAX_BASECHANNELS; nChn++) { m_SndFile.ChnSettings[nChn].dwFlags = 0; m_SndFile.ChnSettings[nChn].nVolume = 64; @@ -667,7 +668,7 @@ if (!m_SndFile.m_nSamples) { strcpy(m_SndFile.m_szNames[1], "untitled"); - m_SndFile.m_nSamples = 1; + m_SndFile.m_nSamples = (GetModType() == MOD_TYPE_MOD) ? 31 : 1; ctrlSmp::ResetSamples(m_SndFile, ctrlSmp::SmpResetInit); @@ -2523,6 +2524,10 @@ { wsprintf(s, "fine %s%d", sMinusChar.c_str(), param & 0x0F); } else + if ((param & 0x0F) != param && (param & 0xF0) != param) // both nibbles are set. + { + strcpy(s, "undefined"); + } else if (param & 0x0F) { wsprintf(s, "%s%d", sMinusChar.c_str(), param & 0x0F); @@ -2946,6 +2951,7 @@ } int CModDoc::GetMacroType(CString value) +//-------------------------------------- { if (value.Compare("")==0) return sfx_unused; if (value.Compare("F0F000z")==0) return sfx_cutoff; @@ -2960,6 +2966,7 @@ } int CModDoc::MacroToPlugParam(CString macro) +//------------------------------------------ { int code=0; char* param = (char *) (LPCTSTR) macro; @@ -2975,7 +2982,9 @@ return (code+128); } } -int CModDoc::MacroToMidiCC(CString macro) { +int CModDoc::MacroToMidiCC(CString macro) +//--------------------------------------- +{ int code=0; char* param = (char *) (LPCTSTR) macro; param +=2; @@ -2987,8 +2996,9 @@ return code; } -int CModDoc::FindMacroForParam(long param) { -//------------------------------------------ +int CModDoc::FindMacroForParam(long param) +//---------------------------------------- +{ for (int macro=0; macro<16; macro++) { //what's the named_const for num macros?? :D CString macroString = &(GetSoundFile()->m_MidiCfg.szMidiSFXExt[macro*32]); if (GetMacroType(macroString) == sfx_plug && MacroToPlugParam(macroString) == param) { Modified: trunk/OpenMPT/mptrack/Mptrack.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp 2010-03-14 14:26:37 UTC (rev 531) +++ trunk/OpenMPT/mptrack/Mptrack.cpp 2010-03-14 18:43:27 UTC (rev 532) @@ -253,6 +253,7 @@ TCHAR CTrackApp::m_szExePath[_MAX_PATH] = TEXT(""); +bool CTrackApp::m_bPortableMode = false; ///////////////////////////////////////////////////////////////////////////// // MPTRACK Command Line options Modified: trunk/OpenMPT/mptrack/Mptrack.h =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.h 2010-03-14 14:26:37 UTC (rev 531) +++ trunk/OpenMPT/mptrack/Mptrack.h 2010-03-14 18:43:27 UTC (rev 532) @@ -158,7 +158,7 @@ TCHAR m_szConfigFileName[_MAX_PATH]; TCHAR m_szPluginCacheFileName[_MAX_PATH]; TCHAR m_szStringsFileName[_MAX_PATH]; - bool m_bPortableMode; + static bool m_bPortableMode; #ifdef UPDATECHECKENABLED // Internet request context @@ -202,7 +202,7 @@ BOOL IsWaveExEnabled() const { return m_bExWaveSupport; } BOOL IsDebug() const { return m_bDebugMode; } LPCSTR GetConfigFileName() const { return m_szConfigFileName; } - bool IsPortableMode() const { return m_bPortableMode; } + static bool IsPortableMode() { return m_bPortableMode; } LPCSTR GetPluginCacheFileName() const { return m_szPluginCacheFileName; } LPCSTR GetConfigPath() const { return m_szConfigDirectory; } void SetupPaths(); Modified: trunk/OpenMPT/mptrack/View_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_ins.cpp 2010-03-14 14:26:37 UTC (rev 531) +++ trunk/OpenMPT/mptrack/View_ins.cpp 2010-03-14 18:43:27 UTC (rev 532) @@ -223,28 +223,12 @@ UINT CViewInstrument::EnvGetTick(int nPoint) const //------------------------------------------------ { - CModDoc *pModDoc = GetDocument(); - if (pModDoc) - { - CSoundFile *pSndFile = pModDoc->GetSoundFile(); - MODINSTRUMENT *pIns = pSndFile->Instruments[m_nInstrument]; - if ((pIns) && (nPoint >= 0)) - { - switch(m_nEnv) - { - case ENV_VOLUME: - if (nPoint < (int)pIns->VolEnv.nNodes) return pIns->VolEnv.Ticks[nPoint]; - break; - case ENV_PANNING: - if (nPoint < (int)pIns->PanEnv.nNodes) return pIns->PanEnv.Ticks[nPoint]; - break; - case ENV_PITCH: - if (nPoint < (int)pIns->PitchEnv.nNodes) return pIns->PitchEnv.Ticks[nPoint]; - break; - } - } - } - return 0; + INSTRUMENTENVELOPE *envelope = GetEnvelopePtr(); + if(envelope == nullptr) return 0; + if((nPoint >= 0) && (nPoint < (int)envelope->nNodes)) + return envelope->Ticks[nPoint]; + else + return 0; } @@ -253,8 +237,10 @@ { INSTRUMENTENVELOPE *envelope = GetEnvelopePtr(); if(envelope == nullptr) return 0; - if(nPoint >= 0 && nPoint < (int)envelope->nNodes) return envelope->Values[nPoint]; - return 0; + if(nPoint >= 0 && nPoint < (int)envelope->nNodes) + return envelope->Values[nPoint]; + else + return 0; } Modified: trunk/OpenMPT/mptrack/view_com.cpp =================================================================== --- trunk/OpenMPT/mptrack/view_com.cpp 2010-03-14 14:26:37 UTC (rev 531) +++ trunk/OpenMPT/mptrack/view_com.cpp 2010-03-14 18:43:27 UTC (rev 532) @@ -298,7 +298,7 @@ { wsprintf(s, "%d Hz", pSndFile->GetFreqFromPeriod( - pSndFile->GetPeriodFromNote(NOTE_MIDDLEC, pSmp->nFineTune, pSmp->nC5Speed), + pSndFile->GetPeriodFromNote(NOTE_MIDDLEC + pSmp->RelativeTone, pSmp->nFineTune, pSmp->nC5Speed), pSmp->nC5Speed)); } break; Modified: trunk/OpenMPT/soundlib/Load_mt2.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mt2.cpp 2010-03-14 14:26:37 UTC (rev 531) +++ trunk/OpenMPT/soundlib/Load_mt2.cpp 2010-03-14 18:43:27 UTC (rev 532) @@ -124,7 +124,7 @@ #pragma pack() -static VOID ConvertMT2Command(CSoundFile *that, MODCOMMAND *m, MT2COMMAND *p) +static void ConvertMT2Command(CSoundFile *that, MODCOMMAND *m, MT2COMMAND *p) //--------------------------------------------------------------------------- { // Note @@ -172,6 +172,7 @@ m->command = p->fxparam2; m->param = p->fxparam1; that->ConvertModCommand(m); + that->MODExx2S3MSxx(m); } else { // TODO: MT2 Effects @@ -200,6 +201,7 @@ m_nRestartPos = pfh->wRestart; m_nDefaultSpeed = pfh->bTicksPerLine; m_nDefaultTempo = 125; + m_dwSongFlags = SONG_ITCOMPATMODE; if ((pfh->wSamplesPerTick > 100) && (pfh->wSamplesPerTick < 5000)) { m_nDefaultTempo = 110250 / pfh->wSamplesPerTick; @@ -406,9 +408,9 @@ Instruments[iIns] = pIns; if (pIns) { - memset(pIns, 0, sizeof(MODINSTRUMENT)); + memcpy(Instruments[iIns], &m_defaultInstrument, sizeof(MODINSTRUMENT)); memcpy(pIns->name, pmi->szName, 32); - SpaceToNullStringFixed(pIns->name, 32); + SpaceToNullStringFixed(pIns->name, 31); pIns->nGlobalVol = 64; pIns->nPan = 128; for (BYTE i = 0; i < NOTE_MAX; i++) Modified: trunk/OpenMPT/soundlib/Sndfile.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp 2010-03-14 14:26:37 UTC (rev 531) +++ trunk/OpenMPT/soundlib/Sndfile.cpp 2010-03-14 18:43:27 UTC (rev 532) @@ -1414,7 +1414,7 @@ return MOD_TYPE_MOD; if (m_nType & (MOD_TYPE_S3M|MOD_TYPE_STM|MOD_TYPE_ULT|MOD_TYPE_FAR|MOD_TYPE_PTM)) return MOD_TYPE_S3M; - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MED|MOD_TYPE_MTM|MOD_TYPE_MT2)) + if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MED|MOD_TYPE_MTM/*|MOD_TYPE_MT2*/)) return MOD_TYPE_XM; if(m_nType & MOD_TYPE_MPT) return MOD_TYPE_MPT; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |