|
From: <sag...@us...> - 2014-01-12 18:03:32
|
Revision: 3569
http://sourceforge.net/p/modplug/code/3569
Author: saga-games
Date: 2014-01-12 18:03:25 +0000 (Sun, 12 Jan 2014)
Log Message:
-----------
[Fix] MT2: Channel volume was not imported. Some volume slide commands didn't work in libopenmpt, too.
Modified Paths:
--------------
trunk/OpenMPT/soundlib/Load_mt2.cpp
trunk/OpenMPT/soundlib/Snd_fx.cpp
Modified: trunk/OpenMPT/soundlib/Load_mt2.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Load_mt2.cpp 2014-01-12 12:44:10 UTC (rev 3568)
+++ trunk/OpenMPT/soundlib/Load_mt2.cpp 2014-01-12 18:03:25 UTC (rev 3569)
@@ -207,7 +207,9 @@
m->command = p->fxparam2;
m->param = p->fxparam1;
that->ConvertModCommand(*m);
+#ifdef MODPLUG_TRACKER
m->Convert(MOD_TYPE_XM, MOD_TYPE_IT);
+#endif // MODPLUG_TRACKER
} else
{
// TODO: MT2 Effects
@@ -296,7 +298,7 @@
switch(dwId)
{
// MSG
- case 0x0047534D:
+ case MAGIC4LE('M','S','G','\0'):
if (dwLen > 3)
{
DWORD nTxtLen = dwLen;
@@ -304,11 +306,25 @@
songMessage.Read(lpStream + dwMemPos + 1, nTxtLen - 1, SongMessage::leCRLF);
}
break;
+ case MAGIC4LE('T','R','K','S'):
+ if (dwLen >= 2)
+ {
+ m_nSamplePreAmp = LittleEndianW(*(uint16 *)(lpStream+dwMemPos)) >> 9;
+ dwMemPos += 2;
+ }
+ for(CHANNELINDEX c = 0; c < GetNumChannels(); c++)
+ {
+ ChnSettings[c].Reset();
+ if(dwMemPos + 1030 < dwMemLength)
+ {
+ ChnSettings[c].nVolume = LittleEndianW(*(uint16 *)(lpStream+dwMemPos)) >> 9;
+ LimitMax(ChnSettings[c].nVolume, uint16(64));
+ dwMemPos += 1030;
+ }
+ }
+ break;
// SUM -> author name (or "Unregistered")
// TMAP
- // TRKS
- case 0x534b5254:
- break;
}
dwMemPos += dwLen;
}
Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Snd_fx.cpp 2014-01-12 12:44:10 UTC (rev 3568)
+++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2014-01-12 18:03:25 UTC (rev 3569)
@@ -28,7 +28,12 @@
// Formats which have 7-bit (0...128) instead of 6-bit (0...64) global volume commands, or which are imported to this range (mostly formats which are converted to IT internally)
-#define GLOBALVOL_7BIT_FORMATS (MOD_TYPE_IT | MOD_TYPE_MPT | MOD_TYPE_MT2 | MOD_TYPE_IMF | MOD_TYPE_J2B | MOD_TYPE_MID | MOD_TYPE_AMS | MOD_TYPE_AMS2 | MOD_TYPE_DBM | MOD_TYPE_PTM)
+#ifdef MODPLUG_TRACKER
+#define GLOBALVOL_7BIT_FORMATS_EXT (MOD_TYPE_MT2)
+#else
+#define GLOBALVOL_7BIT_FORMATS_EXT 0
+#endif // MODPLUG_TRACKER
+#define GLOBALVOL_7BIT_FORMATS (MOD_TYPE_IT | MOD_TYPE_MPT | MOD_TYPE_IMF | MOD_TYPE_J2B | MOD_TYPE_MID | MOD_TYPE_AMS | MOD_TYPE_AMS2 | MOD_TYPE_DBM | MOD_TYPE_PTM | GLOBALVOL_7BIT_FORMATS_EXT)
////////////////////////////////////////////////////////////
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|