#include #include #include #include #include "mtypes.h" #include "mloader.h" BOOL UNI_Test(void) { char id[4]; _mm_lseek(modfd,0,SEEK_SET); if(_mm_read(modfd,id,4)<4) return 0; if(! _mm_memcmp(id,"UN04",4)) return 1; return 0; } BOOL UNI_Init(void) { return 1; } void UNI_Cleanup(void) { ; } char *StrRead(void) { char *s; UWORD len=0; _mm_read(modfd,&len,sizeof(UWORD)); if(!len) return NULL; s=_mm_malloc(len+1); _mm_read(modfd,s,len); s[len]=0; return s; } UBYTE *TrkRead(void) { UBYTE *t; UWORD len; _mm_read(modfd,&len,sizeof(UWORD)); t=_mm_malloc(len); _mm_read(modfd,t,len); return t; } BOOL UNI_Load(void) { int t,u; _mm_lseek(modfd,4,SEEK_SET); // try to _mm_read module header if(_mm_read(modfd,&oof,sizeof(UNIHEADER))insname=StrRead(); if(!AllocSamples(i)) return 0; for(u=0;unumsmp;u++){ SAMPLE *s=&i->samples[u]; _mm_read(modfd,s,sizeof(UNISAMPLE)); s->samplename=StrRead(); s->seekpos=0; } } // Read patterns _mm_read(modfd,oof.pattrows,sizeof(UWORD)*oof.numpat); _mm_read(modfd,oof.patterns,sizeof(UWORD)*oof.numpat*oof.numchn); // Read tracks for(t=0;t