|
From: <sag...@us...> - 2011-10-02 16:40:57
|
Revision: 1076
http://modplug.svn.sourceforge.net/modplug/?rev=1076&view=rev
Author: saga-games
Date: 2011-10-02 16:40:50 +0000 (Sun, 02 Oct 2011)
Log Message:
-----------
[Fix] XM panning conversion was a bit off due to lack of rounding.
Modified Paths:
--------------
trunk/OpenMPT/soundlib/Load_xm.cpp
trunk/OpenMPT/soundlib/modcommand.cpp
Modified: trunk/OpenMPT/soundlib/Load_xm.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Load_xm.cpp 2011-10-02 16:01:29 UTC (rev 1075)
+++ trunk/OpenMPT/soundlib/Load_xm.cpp 2011-10-02 16:40:50 UTC (rev 1076)
@@ -204,7 +204,7 @@
// B0-BF: Vibrato
case 0xB0: p->volcmd = VOLCMD_VIBRATODEPTH; break;
// C0-CF: Set Panning
- case 0xC0: p->volcmd = VOLCMD_PANNING; p->vol = (vol * 64 / 15); break;
+ case 0xC0: p->volcmd = VOLCMD_PANNING; p->vol = ((vol * 64 + 8) / 15); break;
// D0-DF: Panning Slide Left
case 0xD0: p->volcmd = VOLCMD_PANSLIDELEFT; break;
// E0-EF: Panning Slide Right
@@ -855,7 +855,7 @@
case VOLCMD_FINEVOLUP: vol = 0x90 + (p->vol & 0x0F); break;
case VOLCMD_VIBRATOSPEED: vol = 0xA0 + (p->vol & 0x0F); break;
case VOLCMD_VIBRATODEPTH: vol = 0xB0 + (p->vol & 0x0F); break;
- case VOLCMD_PANNING: vol = 0xC0 + (p->vol * 15 / 64); if (vol > 0xCF) vol = 0xCF; break;
+ case VOLCMD_PANNING: vol = 0xC0 + ((p->vol * 15 + 32) / 64); if (vol > 0xCF) vol = 0xCF; break;
case VOLCMD_PANSLIDELEFT: vol = 0xD0 + (p->vol & 0x0F); break;
case VOLCMD_PANSLIDERIGHT: vol = 0xE0 + (p->vol & 0x0F); break;
case VOLCMD_TONEPORTAMENTO: vol = 0xF0 + (p->vol & 0x0F); break;
Modified: trunk/OpenMPT/soundlib/modcommand.cpp
===================================================================
--- trunk/OpenMPT/soundlib/modcommand.cpp 2011-10-02 16:01:29 UTC (rev 1075)
+++ trunk/OpenMPT/soundlib/modcommand.cpp 2011-10-02 16:40:50 UTC (rev 1076)
@@ -159,7 +159,7 @@
m->volcmd = VOLCMD_VOLUME;
if(m->vol > 64) m->vol = 64;
m->command = CMD_S3MCMDEX;
- m->param = 0x80 | (m->param * 15 / 64); // XM volcol panning is 4-Bit, so we can use 4-Bit panning here.
+ m->param = 0x80 | ((m->param * 15 + 32) / 64); // XM volcol panning is 4-Bit, so we can use 4-Bit panning here.
}
break;
case CMD_PORTAMENTOUP:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|