forked from len0rd/rockbox
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
This commit is contained in:
parent
8c7780bafc
commit
b4e70422a3
43 changed files with 5072 additions and 2802 deletions
|
@ -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;t<of.numpat;t++) {
|
||||
UBYTE rows=0/* ,tempo */;
|
||||
UBYTE rows=0;
|
||||
UBYTE tempo;
|
||||
|
||||
memset(pat,0,256*16*4*sizeof(FARNOTE));
|
||||
if(mh2->patsiz[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 */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue