shithub: dumb

Download patch

ref: b844f7ce65c15ee70426640de1802ba97d409dec
parent: ef97e29d06fdf5c3b9584eeacee58fd0914a0007
author: Chris Moeller <[email protected]>
date: Mon Jan 11 03:58:42 EST 2010

{10/13/2005 1:58:16 AM}Arpeggio fix for FastTracker 2 bug

git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C21

--- a/dumb/src/it/itrender.c
+++ b/dumb/src/it/itrender.c
@@ -3550,7 +3550,14 @@
 					* playing->sample->C5_speed * (1.f / 65536.f);
 			}
 
-			playing->delta *= (float)pow(DUMB_SEMITONE_BASE, channel->arpeggio >> 8);
+			if ( channel->arpeggio ) { // another FT2 bug...
+				if ((sigdata->flags & (IT_LINEAR_SLIDES|IT_WAS_AN_XM|IT_WAS_A_MOD)) == (IT_WAS_AN_XM|IT_LINEAR_SLIDES))
+				{
+					if ( channel->arpeggio > 0xFF )
+						playing->delta = playing->sample->C5_speed * (1.f / 65536.f);
+				}
+				else playing->delta *= (float)pow(DUMB_SEMITONE_BASE, channel->arpeggio >> 8);
+			}
 
 			if (playing->finetune)
 				playing->delta *= (float)pow(DUMB_PITCH_BASE, playing->finetune);