X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fvgmsnd%2FvgmSnd.c;h=2cfd8690c36a008a07cdd7df39d383de07a833f9;hb=3bcd7fdc88a1ae0a536e7631b50719ae7b320d4b;hp=d501edd09f27e0df0e5218f257f7d84e469e1e44;hpb=fb3f702a6acf4d653082c4d0db083a1ad90b76ff;p=16.git diff --git a/src/lib/vgmsnd/vgmSnd.c b/src/lib/vgmsnd/vgmSnd.c index d501edd0..2cfd8690 100755 --- a/src/lib/vgmsnd/vgmSnd.c +++ b/src/lib/vgmsnd/vgmSnd.c @@ -21,18 +21,18 @@ typedef struct _vgm_file_header_base { - sdword fccVGM; // 00 - UINT32 lngEOFOffset; // 04 - UINT32 lngVersion; // 08 - UINT32 lngSkip1[2]; // 0C - UINT32 lngGD3Offset; // 14 - UINT32 lngTotalSamples; // 18 - UINT32 lngLoopOffset; // 1C - UINT32 lngLoopSamples; // 20 - UINT32 lngRate; // 24 - UINT32 lngSkip2[3]; // 28 - UINT32 lngDataOffset; // 34 - UINT32 lngSkip3[2]; // 38 + dword fccVGM; // 00 + dword/*32*/ lngEOFOffset; // 04 + dword/*32*/ lngVersion; // 08 + dword/*32*/ lngSkip1[2]; // 0C + dword/*32*/ lngGD3Offset; // 14 + dword/*32*/ lngTotalSamples; // 18 + dword/*32*/ lngLoopOffset; // 1C + dword/*32*/ lngLoopSamples; // 20 + dword/*32*/ lngRate; // 24 + dword/*32*/ lngSkip2[3]; // 28 + dword/*32*/ lngDataOffset; // 34 + dword/*32*/ lngSkip3[2]; // 38 } VGM_BASE_HDR; #define PBMODE_MUSIC 0x00 @@ -42,9 +42,9 @@ typedef struct _vgm_playback UINT8 pbMode; UINT8 vgmEnd; // 00 - running, 01 - finished, FF - not loaded UINT16 curLoopCnt; - UINT32 vgmPos; - UINT32 vgmSmplPos; - UINT32 pbSmplPos; + dword/*32*/ vgmPos; + dword/*32*/ vgmSmplPos; + dword/*32*/ pbSmplPos; VGM_FILE* file; // oplChnMask: @@ -66,10 +66,10 @@ INLINE UINT16 ReadLE16(const UINT8* buffer) #endif } -INLINE UINT32 ReadLE32(const UINT8* buffer) +INLINE dword/*32*/ ReadLE32(const UINT8* buffer) { #ifdef QUICK_READ - return *(UINT32*)buffer; + return *(dword/*32*/*)buffer; #else return (buffer[0x00] << 0) | (buffer[0x01] << 8) | (buffer[0x02] << 16) | (buffer[0x03] << 24); @@ -137,14 +137,14 @@ static const UINT8 CHN_OPMASK_REV[0x20] = 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; -UINT8 OpenVGMFile(const char* FileName, VGM_FILE* vgmFile) +UINT8 OpenVGMFile(const char* FileName, VGM_FILE* vgmFile, global_game_variables_t *gvar) { size_t hdrSize; size_t readEl; // 'elements' read from file size_t bytesToRead; VGM_BASE_HDR vgmBaseHdr; FILE* hFile; - UINT32 CurPos; + dword/*32*/ CurPos; memset(vgmFile, 0x00, sizeof(VGM_FILE)); @@ -171,7 +171,9 @@ UINT8 OpenVGMFile(const char* FileName, VGM_FILE* vgmFile) } vgmFile->dataLen = vgmBaseHdr.lngEOFOffset + 0x04; - vgmFile->data = (UINT8*)malloc(vgmFile->dataLen); + //vgmFile->data = (UINT8*)malloc(vgmFile->dataLen); + MM_GetPtr(MEMPTRCONV gvar->ca.audiosegs[0], vgmFile->dataLen, gvar); + vgmFile->data = (UINT8*)gvar->ca.audiosegs[0]; if (vgmFile->data == NULL) { fclose(hFile); @@ -212,12 +214,14 @@ UINT8 OpenVGMFile(const char* FileName, VGM_FILE* vgmFile) return 0x00; } -void FreeVGMFile(VGM_FILE* vgmFile) +void FreeVGMFile(VGM_FILE* vgmFile, global_game_variables_t *gvar) { - free(vgmFile->data); vgmFile->data = NULL; + //if(vgmFile->data){ free(vgmFile->data); vgmFile->data = NULL; } + MM_FreePtr(MEMPTRCONV gvar->ca.audiosegs[0], gvar); + if(vgmFile->data) free(vgmFile->data); vgmFile->dataLen = 0; - return; +// return; } @@ -239,14 +243,14 @@ static boolean DoVgmLoop(VGM_PBK* vgmPlay) static void UpdateVGM(VGM_PBK* vgmPlay, UINT16 Samples) { - const UINT32 vgmLen = vgmPlay->file->dataLen; + const dword/*32*/ vgmLen = vgmPlay->file->dataLen; const UINT8* vgmData = vgmPlay->file->data; const UINT8* VGMPnt; - UINT32 VGMPos; - UINT32 VGMSmplPos; + dword/*32*/ VGMPos; + dword/*32*/ VGMSmplPos; UINT8 Command; UINT8 blockType; - UINT32 blockLen; + dword/*32*/ blockLen; vgmPlay->pbSmplPos += Samples; VGMPos = vgmPlay->vgmPos;