|
From: <sag...@us...> - 2012-07-14 18:18:55
|
Revision: 1326
http://modplug.svn.sourceforge.net/modplug/?rev=1326&view=rev
Author: saga-games
Date: 2012-07-14 18:18:48 +0000 (Sat, 14 Jul 2012)
Log Message:
-----------
[Fix] XM Compatibility export broke X1x and X2x (extra-fine portamento) commands.
[Fix] Overly long sample / instrument name strings found in IT files made with older versions of MPT are now read correctly.
Modified Paths:
--------------
trunk/OpenMPT/soundlib/ITTools.cpp
trunk/OpenMPT/soundlib/Load_it.cpp
trunk/OpenMPT/soundlib/Load_mod.cpp
Modified: trunk/OpenMPT/soundlib/ITTools.cpp
===================================================================
--- trunk/OpenMPT/soundlib/ITTools.cpp 2012-07-13 18:45:15 UTC (rev 1325)
+++ trunk/OpenMPT/soundlib/ITTools.cpp 2012-07-14 18:18:48 UTC (rev 1326)
@@ -124,7 +124,7 @@
return;
}
- StringFixer::ReadString<StringFixer::spacePaddedNull>(mptIns.name, name);
+ StringFixer::ReadString<StringFixer::spacePadded>(mptIns.name, name);
StringFixer::ReadString<StringFixer::nullTerminated>(mptIns.filename, filename);
// Volume / Panning
@@ -148,8 +148,7 @@
if(note < 120)
{
mptIns.NoteMap[i] = note + 1u;
- }
- else
+ } else
{
mptIns.NoteMap[i] = static_cast<BYTE>(i + 1);
}
@@ -274,7 +273,7 @@
return 0;
}
- StringFixer::ReadString<StringFixer::spacePaddedNull>(mptIns.name, name);
+ StringFixer::ReadString<StringFixer::spacePadded>(mptIns.name, name);
StringFixer::ReadString<StringFixer::nullTerminated>(mptIns.filename, filename);
// Volume / Panning
@@ -342,8 +341,7 @@
if(note < 120)
{
mptIns.NoteMap[i] = note + 1u;
- }
- else
+ } else
{
mptIns.NoteMap[i] = static_cast<BYTE>(i + 1);
}
@@ -353,7 +351,7 @@
}
-// Convert OpenMPT's internal instrument representation to an ITInstrumentEx. Returns true if instrument extension is actually necessary.
+// Convert OpenMPT's internal instrument representation to an ITInstrumentEx. Returns amount of bytes that need to be written to file.
size_t ITInstrumentEx::ConvertToIT(const ModInstrument &mptIns, bool compatExport, const CSoundFile &sndFile)
//-----------------------------------------------------------------------------------------------------------
{
@@ -459,8 +457,7 @@
flags |= ITSample::sample16Bit;
}
cvt = ITSample::cvtSignedSample;
- }
- else
+ } else
{
flags = 0x00;
}
Modified: trunk/OpenMPT/soundlib/Load_it.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Load_it.cpp 2012-07-13 18:45:15 UTC (rev 1325)
+++ trunk/OpenMPT/soundlib/Load_it.cpp 2012-07-14 18:18:48 UTC (rev 1326)
@@ -406,7 +406,7 @@
if ((itHeader.flags & ITFileHeader::reqEmbeddedMIDIConfig) || (itHeader.special & ITFileHeader::embedMIDIConfiguration)) m_dwSongFlags |= SONG_EMBEDMIDICFG;
if (itHeader.flags & ITFileHeader::extendedFilterRange) m_dwSongFlags |= SONG_EXFILTERRANGE;
- StringFixer::ReadString<StringFixer::spacePaddedNull>(m_szNames[0], itHeader.songname);
+ StringFixer::ReadString<StringFixer::spacePadded>(m_szNames[0], itHeader.songname);
// Global Volume
m_nDefaultGlobalVolume = itHeader.globalvol << 1;
@@ -759,7 +759,7 @@
{
size_t sampleOffset = pis->ConvertToMPT(Samples[nsmp + 1]);
- StringFixer::ReadString<StringFixer::spacePaddedNull>(m_szNames[nsmp + 1], pis->name);
+ StringFixer::ReadString<StringFixer::spacePadded>(m_szNames[nsmp + 1], pis->name);
lastSampleOffset = Util::Max(lastSampleOffset, sampleOffset + pis->GetSampleFormat(itHeader.cwtv).ReadSample(Samples[nsmp + 1], (LPSTR)(lpStream + sampleOffset), dwMemLength - sampleOffset));
}
Modified: trunk/OpenMPT/soundlib/Load_mod.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Load_mod.cpp 2012-07-13 18:45:15 UTC (rev 1325)
+++ trunk/OpenMPT/soundlib/Load_mod.cpp 2012-07-14 18:18:48 UTC (rev 1326)
@@ -123,11 +123,9 @@
case CMD_PANNINGSLIDE: command = 'P' - 55; break;
case CMD_RETRIG: command = 'R' - 55; break;
case CMD_TREMOR: command = 'T' - 55; break;
- case CMD_XFINEPORTAUPDOWN:
- if(compatibilityExport && (param & 0xF0) > 2) // X1x and X2x are legit, everything above are MPT extensions, which don't belong here.
- command = param = 0;
- else
- command = 'X' - 55;
+ case CMD_XFINEPORTAUPDOWN: command = 'X' - 55;
+ if(compatibilityExport && param >= 0x30) // X1x and X2x are legit, everything above are MPT extensions, which don't belong here.
+ param = 0; // Don't set command to 0 to indicate that there *was* some X command here...
break;
case CMD_PANBRELLO:
if(compatibilityExport)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|