From 73d90aeeb2424521c27667ca6f59c31e6beeca1f Mon Sep 17 00:00:00 2001 From: Chris Moeller Date: Fri, 7 Nov 2014 16:42:03 -0800 Subject: [PATCH] Updated ft2play to v0.68 with a real fix instead of a stupid hack --- Frameworks/modplay/modplay/ft2play.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Frameworks/modplay/modplay/ft2play.c b/Frameworks/modplay/modplay/ft2play.c index 698641d13..9b6236bf0 100644 --- a/Frameworks/modplay/modplay/ft2play.c +++ b/Frameworks/modplay/modplay/ft2play.c @@ -1,6 +1,9 @@ /* -** FT2PLAY v0.67 - 30th of September 2014 -** ====================================== +** FT2PLAY v0.68 - 7th of November 2014 +** ==================================== +** +** Changelog from v0.67: +** - Bug in GetNewNote() (cmd 390 would fail - "unreal2 scirreal mix.xm" fix) ** ** Changelog from v0.66: ** - Auto-vibrato was wrong on every type except for sine @@ -1267,7 +1270,7 @@ static inline void GetNewNote(PLAYER *pl, StmTyp *ch, TonTyp *p) return; /* we have a note delay (ED1..EDF) */ } - if (p->Eff != 0x90) /* E90 is 'retrig' speed 0 */ + if (!((p->EffTyp == 0x0E) && (p->Eff == 0x90))) /* E90 is 'retrig' speed 0 */ { if ((ch->VolKolVol & 0xF0) == 0xF0) /* gxx */ { @@ -1634,18 +1637,18 @@ static void TonePorta(PLAYER *p, StmTyp *ch) if (ch->PortaDir > 1) { ch->RealPeriod -= ch->PortaSpeed; - if (ch->RealPeriod <= ch->WantPeriod) + if (ch->RealPeriod <= (int16_t)ch->WantPeriod) { - ch->PortaDir = 0; + ch->PortaDir = 1; ch->RealPeriod = ch->WantPeriod; } } else { ch->RealPeriod += ch->PortaSpeed; - if (ch->RealPeriod >= ch->WantPeriod) + if ((uint16_t)ch->RealPeriod >= ch->WantPeriod) { - ch->PortaDir = 0; + ch->PortaDir = 1; ch->RealPeriod = ch->WantPeriod; } } @@ -1840,7 +1843,7 @@ static inline void DoEffects(PLAYER *p, StmTyp *ch) ch->Status |= IS_Period; } - /* 2xx - period slide up */ + /* 2xx - period slide down */ else if (ch->EffTyp == 2) { tmpEff = ch->Eff;