From: <sag...@us...> - 2010-10-03 16:11:14
|
Revision: 729 http://modplug.svn.sourceforge.net/modplug/?rev=729&view=rev Author: saga-games Date: 2010-10-03 16:11:07 +0000 (Sun, 03 Oct 2010) Log Message: ----------- [Mod] ITP Loader: Added version check (why was this not there in the first place?) [Mod] Mod Conversion: Added warning if the edit history will be lost [Ref] Some minor changes here and there Modified Paths: -------------- trunk/OpenMPT/mptrack/Mod2wave.cpp trunk/OpenMPT/mptrack/ModConvert.cpp trunk/OpenMPT/mptrack/ModConvert.h trunk/OpenMPT/soundlib/Load_itp.cpp trunk/OpenMPT/soundlib/Snd_defs.h trunk/OpenMPT/soundlib/Sndmix.cpp Modified: trunk/OpenMPT/mptrack/Mod2wave.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mod2wave.cpp 2010-09-30 22:44:28 UTC (rev 728) +++ trunk/OpenMPT/mptrack/Mod2wave.cpp 2010-10-03 16:11:07 UTC (rev 729) @@ -708,12 +708,12 @@ DWORD dwSleepTime = dwStartTime; CMainFrame::GetMainFrame()->InitRenderer(m_pSndFile); //rewbs.VSTTimeInfo - for (UINT n=0; ; n++) + for (UINT n = 0; ; n++) { UINT lRead = m_pSndFile->Read(buffer, sizeof(buffer)); // Process cue points (add base offset), if there are any to process. - vector<PatternCuePoint>::reverse_iterator iter = m_pSndFile->m_PatternCuePoints.rbegin(); + vector<PatternCuePoint>::reverse_iterator iter; for(iter = m_pSndFile->m_PatternCuePoints.rbegin(); iter != m_pSndFile->m_PatternCuePoints.rend(); ++iter) { if(iter->processed) @@ -857,6 +857,7 @@ DWORD cuePointLength = 0; if(m_pSndFile->m_PatternCuePoints.size() > 0) { + // Cue point header WAVCUEHEADER cuehdr; cuehdr.cue_id = LittleEndian(IFFID_cue); cuehdr.cue_num = m_pSndFile->m_PatternCuePoints.size(); @@ -867,7 +868,7 @@ fwrite(&cuehdr, 1, sizeof(WAVCUEHEADER), f); // Write all cue points - vector<PatternCuePoint>::iterator iter; + vector<PatternCuePoint>::const_iterator iter; DWORD num = 0; for(iter = m_pSndFile->m_PatternCuePoints.begin(); iter != m_pSndFile->m_PatternCuePoints.end(); ++iter) { @@ -875,11 +876,12 @@ cuepoint.cp_id = LittleEndian(num++); cuepoint.cp_pos = LittleEndian((DWORD)iter->offset); cuepoint.cp_chunkid = LittleEndian(IFFID_data); - cuepoint.cp_chunkstart = 0; // we use no Wave List Chunk (wavl) as we have only one data block, so this should be 0. - cuepoint.cp_blockstart = 0; + cuepoint.cp_chunkstart = 0; // we use no Wave List Chunk (wavl) as we have only one data block, so this should be 0. + cuepoint.cp_blockstart = 0; // dito cuepoint.cp_offset = LittleEndian((DWORD)iter->offset); fwrite(&cuepoint, 1, sizeof(WAVCUEPOINT), f); } + m_pSndFile->m_PatternCuePoints.clear(); } header.filesize = (sizeof(WAVEFILEHEADER) - 8) + (8 + fmthdr.length) + (8 + datahdr.length) + (cuePointLength); Modified: trunk/OpenMPT/mptrack/ModConvert.cpp =================================================================== --- trunk/OpenMPT/mptrack/ModConvert.cpp 2010-09-30 22:44:28 UTC (rev 728) +++ trunk/OpenMPT/mptrack/ModConvert.cpp 2010-10-03 16:11:07 UTC (rev 729) @@ -409,6 +409,12 @@ } } + // Check whether the new format supports embedding the edit history in the file. + if(oldTypeIsIT_MPT && !newTypeIsIT_MPT && GetFileHistory()->size() > 0) + { + CHANGEMODTYPE_WARNING(wEditHistory); + } + BEGIN_CRITICAL(); m_SndFile.ChangeModTypeTo(nNewType); if(!newTypeIsXM_IT_MPT && (m_SndFile.m_dwSongFlags & SONG_LINEARSLIDES)) @@ -456,6 +462,7 @@ CHANGEMODTYPE_CHECK(wLinearSlides, "Linear Frequency Slides not supported by the new format.\n"); CHANGEMODTYPE_CHECK(wTrimmedEnvelopes, "Instrument envelopes have been shortened.\n"); CHANGEMODTYPE_CHECK(wReleaseNode, "Instrument envelope release nodes are not supported by the new format.\n"); + CHANGEMODTYPE_CHECK(wEditHistory, "Edit history will not be saved in the new format.\n"); SetModified(); GetPatternUndo()->ClearUndo(); Modified: trunk/OpenMPT/mptrack/ModConvert.h =================================================================== --- trunk/OpenMPT/mptrack/ModConvert.h 2010-09-30 22:44:28 UTC (rev 728) +++ trunk/OpenMPT/mptrack/ModConvert.h 2010-10-03 16:11:07 UTC (rev 729) @@ -32,6 +32,7 @@ wLinearSlides, wTrimmedEnvelopes, wReleaseNode, + wEditHistory, wNumWarnings }; Modified: trunk/OpenMPT/soundlib/Load_itp.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_itp.cpp 2010-09-30 22:44:28 UTC (rev 728) +++ trunk/OpenMPT/soundlib/Load_itp.cpp 2010-10-03 16:11:07 UTC (rev 729) @@ -43,6 +43,12 @@ version = id; dwMemPos += sizeof(DWORD); + // max supported version + if(version > ITP_VERSION) + { + return false; + } + m_nType = MOD_TYPE_IT; // Song name @@ -402,7 +408,8 @@ } // Embed instruments' header [v1.01] - if(version >= 0x00000101 && m_dwSongFlags & SONG_ITPEMBEDIH && fcode == 'EBIH'){ + if(version >= 0x00000101 && m_dwSongFlags & SONG_ITPEMBEDIH && fcode == 'EBIH') + { // jump embeded instrument header tag ptr += sizeof(__int32); @@ -698,13 +705,15 @@ // Embed instruments' header [v1.01] - if(m_dwSongFlags & SONG_ITPEMBEDIH){ + if(m_dwSongFlags & SONG_ITPEMBEDIH) + { // embeded instrument header tag __int32 code = 'EBIH'; fwrite(&code, 1, sizeof(__int32), f); // instruments' header - for(i=0; i<m_nInstruments; i++){ + for(i=0; i<m_nInstruments; i++) + { if(Instruments[i+1]) WriteInstrumentHeaderStruct(Instruments[i+1], f); // write separator tag code = 'SEP@'; Modified: trunk/OpenMPT/soundlib/Snd_defs.h =================================================================== --- trunk/OpenMPT/soundlib/Snd_defs.h 2010-09-30 22:44:28 UTC (rev 728) +++ trunk/OpenMPT/soundlib/Snd_defs.h 2010-10-03 16:11:07 UTC (rev 729) @@ -117,11 +117,11 @@ #define MOD_TYPE_UMX 0x80000000 // Fake type // For compatibility mode -#define TRK_IMPULSETRACKER MOD_TYPE_IT | MOD_TYPE_MPT -#define TRK_FASTTRACKER2 MOD_TYPE_XM -#define TRK_SCREAMTRACKER MOD_TYPE_S3M -#define TRK_PROTRACKER MOD_TYPE_MOD -#define TRK_ALLTRACKERS TRK_IMPULSETRACKER | TRK_FASTTRACKER2 | TRK_SCREAMTRACKER | TRK_PROTRACKER +#define TRK_IMPULSETRACKER (MOD_TYPE_IT | MOD_TYPE_MPT) +#define TRK_FASTTRACKER2 (MOD_TYPE_XM) +#define TRK_SCREAMTRACKER (MOD_TYPE_S3M) +#define TRK_PROTRACKER (MOD_TYPE_MOD) +#define TRK_ALLTRACKERS (TRK_IMPULSETRACKER | TRK_FASTTRACKER2 | TRK_SCREAMTRACKER | TRK_PROTRACKER) Modified: trunk/OpenMPT/soundlib/Sndmix.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndmix.cpp 2010-09-30 22:44:28 UTC (rev 728) +++ trunk/OpenMPT/soundlib/Sndmix.cpp 2010-10-03 16:11:07 UTC (rev 729) @@ -320,7 +320,7 @@ PatternCuePoint cue; cue.offset = lMax - lRead; cue.order = m_nCurrentPattern; - cue.processed = false; + cue.processed = false; // We don't know the base offset in the file here. It has to be added in the main conversion loop. m_PatternCuePoints.push_back(cue); } } else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |