From b4e70422a3455e327433a7471c929ef100ef3b10 Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Sat, 8 Aug 2020 21:56:15 -0400 Subject: mikmod: Upgrade mikmod core from v3.2.0 to v3.3.11 * Get rid of the non-functional GT2 loader * Add the UMX loader * Add HQ mixer routines (and make it configurable) * Allow samplerate to be configured at run/playtime * Support >64KHz mixing/playback * Correctly restore non-boost status (The diff to upstream is much smaller now too!) Change-Id: Iaa4ac901ba9cd4123bb225656976e78271353a72 --- apps/plugins/mikmod/load_far.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) (limited to 'apps/plugins/mikmod/load_far.c') diff --git a/apps/plugins/mikmod/load_far.c b/apps/plugins/mikmod/load_far.c index 2a1a44eda9..643cf15d49 100644 --- a/apps/plugins/mikmod/load_far.c +++ b/apps/plugins/mikmod/load_far.c @@ -6,12 +6,12 @@ it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. - + You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA @@ -20,7 +20,7 @@ /*============================================================================== - $Id: load_far.c,v 1.3 2005/04/07 19:57:38 realtech Exp $ + $Id$ Farandole (FAR) module loader @@ -92,7 +92,7 @@ static FARHEADER1 *mh1 = NULL; static FARHEADER2 *mh2 = NULL; static FARNOTE *pat = NULL; -static unsigned char FARSIG[4+3]={'F','A','R',0xfe,13,10,26}; +static const unsigned char FARSIG[4+3]={'F','A','R',0xfe,13,10,26}; /*========== Loader code */ @@ -119,6 +119,9 @@ static void FAR_Cleanup(void) MikMod_free(mh1); MikMod_free(mh2); MikMod_free(pat); + mh1 = NULL; + mh2 = NULL; + pat = NULL; } static UBYTE *FAR_ConvertTrack(FARNOTE* n,int rows) @@ -180,7 +183,7 @@ static int FAR_Load(int curious) FARSAMPLE s; FARNOTE *crow; UBYTE smap[8]; - (void)curious; + (void)curious; /* try to read module header (first part) */ _mm_read_UBYTES(mh1->id,4,modreader); @@ -196,7 +199,7 @@ static int FAR_Load(int curious) mh1->stlen = _mm_read_I_UWORD (modreader); /* init modfile data */ - of.modtype = StrDup(FAR_Version); + of.modtype = MikMod_strdup(FAR_Version); of.songname = DupStr(mh1->songname,40,1); of.numchn = 16; of.initspeed = mh1->speed; @@ -207,7 +210,12 @@ static int FAR_Load(int curious) /* read songtext into comment field */ if(mh1->stlen) - if (!ReadLinedComment(mh1->stlen, 66)) return 0; + if (!ReadLinedComment(mh1->stlen, 132)) return 0; + + if(_mm_eof(modreader)) { + _mm_errno = MMERR_LOADING_HEADER; + return 0; + } /* try to read module header (second part) */ _mm_read_UBYTES(mh2->orders,256,modreader); @@ -238,12 +246,14 @@ static int FAR_Load(int curious) if(!AllocPatterns()) return 0; for(t=0;tpatsiz[t]) { rows = _mm_read_UBYTE(modreader); - /* tempo = */ (void)_mm_read_UBYTE(modreader); + tempo = _mm_read_UBYTE(modreader); + (void)tempo; /* unused */ crow = pat; /* file often allocates 64 rows even if there are less in pattern */ @@ -284,7 +294,7 @@ static int FAR_Load(int curious) of.numins = 0; for(t=0;t<64;t++) if(smap[t>>3]&(1<<(t&7))) of.numins=t+1; - of.numsmp = of.numins; + of.numsmp = of.numins; /* alloc sample structs */ if(!AllocSamples()) return 0; @@ -314,8 +324,8 @@ static int FAR_Load(int curious) q->seekpos = _mm_ftell(modreader); _mm_fseek(modreader,q->length,SEEK_CUR); - } else - q->samplename = DupStr(NULL,0,0); + } else + q->samplename = MikMod_strdup(""); q++; } return 1; @@ -327,8 +337,8 @@ static CHAR *FAR_LoadTitle(void) _mm_fseek(modreader,4,SEEK_SET); if(!_mm_read_UBYTES(s,40,modreader)) return NULL; - - return(DupStr(s,40,1)); + + return (DupStr(s,40,1)); } /*========== Loader information */ -- cgit v1.2.3