]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/vgmsnd/vgmSnd.c
16_ca needs huge amounts of work and I should remember what needs to be done soon...
[16.git] / src / lib / vgmsnd / vgmSnd.c
index d501edd09f27e0df0e5218f257f7d84e469e1e44..2cfd8690c36a008a07cdd7df39d383de07a833f9 100755 (executable)
 \r
 typedef struct _vgm_file_header_base\r
 {\r
-       sdword fccVGM;                  // 00\r
-       UINT32 lngEOFOffset;    // 04\r
-       UINT32 lngVersion;              // 08\r
-       UINT32 lngSkip1[2];             // 0C\r
-       UINT32 lngGD3Offset;    // 14\r
-       UINT32 lngTotalSamples; // 18\r
-       UINT32 lngLoopOffset;   // 1C\r
-       UINT32 lngLoopSamples;  // 20\r
-       UINT32 lngRate;                 // 24\r
-       UINT32 lngSkip2[3];             // 28\r
-       UINT32 lngDataOffset;   // 34\r
-       UINT32 lngSkip3[2];             // 38\r
+       dword fccVGM;                   // 00\r
+       dword/*32*/ lngEOFOffset;       // 04\r
+       dword/*32*/ lngVersion;         // 08\r
+       dword/*32*/ lngSkip1[2];                // 0C\r
+       dword/*32*/ lngGD3Offset;       // 14\r
+       dword/*32*/ lngTotalSamples;    // 18\r
+       dword/*32*/ lngLoopOffset;      // 1C\r
+       dword/*32*/ lngLoopSamples;     // 20\r
+       dword/*32*/ lngRate;                    // 24\r
+       dword/*32*/ lngSkip2[3];                // 28\r
+       dword/*32*/ lngDataOffset;      // 34\r
+       dword/*32*/ lngSkip3[2];                // 38\r
 } VGM_BASE_HDR;\r
 \r
 #define PBMODE_MUSIC   0x00\r
@@ -42,9 +42,9 @@ typedef struct _vgm_playback
        UINT8 pbMode;\r
        UINT8 vgmEnd;   // 00 - running, 01 - finished, FF - not loaded\r
        UINT16 curLoopCnt;\r
-       UINT32 vgmPos;\r
-       UINT32 vgmSmplPos;\r
-       UINT32 pbSmplPos;\r
+       dword/*32*/ vgmPos;\r
+       dword/*32*/ vgmSmplPos;\r
+       dword/*32*/ pbSmplPos;\r
        VGM_FILE* file;\r
 \r
        // oplChnMask:\r
@@ -66,10 +66,10 @@ INLINE UINT16 ReadLE16(const UINT8* buffer)
 #endif\r
 }\r
 \r
-INLINE UINT32 ReadLE32(const UINT8* buffer)\r
+INLINE dword/*32*/ ReadLE32(const UINT8* buffer)\r
 {\r
 #ifdef QUICK_READ\r
-       return *(UINT32*)buffer;\r
+       return *(dword/*32*/*)buffer;\r
 #else\r
        return  (buffer[0x00] <<  0) | (buffer[0x01] <<  8) |\r
                        (buffer[0x02] << 16) | (buffer[0x03] << 24);\r
@@ -137,14 +137,14 @@ static const UINT8 CHN_OPMASK_REV[0x20] =
        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};\r
 \r
 \r
-UINT8 OpenVGMFile(const char* FileName, VGM_FILE* vgmFile)\r
+UINT8 OpenVGMFile(const char* FileName, VGM_FILE* vgmFile, global_game_variables_t *gvar)\r
 {\r
        size_t hdrSize;\r
        size_t readEl;  // 'elements' read from file\r
        size_t bytesToRead;\r
        VGM_BASE_HDR vgmBaseHdr;\r
        FILE* hFile;\r
-       UINT32 CurPos;\r
+       dword/*32*/ CurPos;\r
 \r
        memset(vgmFile, 0x00, sizeof(VGM_FILE));\r
 \r
@@ -171,7 +171,9 @@ UINT8 OpenVGMFile(const char* FileName, VGM_FILE* vgmFile)
        }\r
 \r
        vgmFile->dataLen = vgmBaseHdr.lngEOFOffset + 0x04;\r
-       vgmFile->data = (UINT8*)malloc(vgmFile->dataLen);\r
+       //vgmFile->data = (UINT8*)malloc(vgmFile->dataLen);\r
+       MM_GetPtr(MEMPTRCONV gvar->ca.audiosegs[0], vgmFile->dataLen, gvar);\r
+       vgmFile->data = (UINT8*)gvar->ca.audiosegs[0];\r
        if (vgmFile->data == NULL)\r
        {\r
                fclose(hFile);\r
@@ -212,12 +214,14 @@ UINT8 OpenVGMFile(const char* FileName, VGM_FILE* vgmFile)
        return 0x00;\r
 }\r
 \r
-void FreeVGMFile(VGM_FILE* vgmFile)\r
+void FreeVGMFile(VGM_FILE* vgmFile, global_game_variables_t *gvar)\r
 {\r
-       free(vgmFile->data);    vgmFile->data = NULL;\r
+       //if(vgmFile->data){ free(vgmFile->data);       vgmFile->data = NULL; }\r
+       MM_FreePtr(MEMPTRCONV gvar->ca.audiosegs[0], gvar);\r
+       if(vgmFile->data) free(vgmFile->data);\r
        vgmFile->dataLen = 0;\r
 \r
-       return;\r
+//     return;\r
 }\r
 \r
 \r
@@ -239,14 +243,14 @@ static boolean DoVgmLoop(VGM_PBK* vgmPlay)
 \r
 static void UpdateVGM(VGM_PBK* vgmPlay, UINT16 Samples)\r
 {\r
-       const UINT32 vgmLen = vgmPlay->file->dataLen;\r
+       const dword/*32*/ vgmLen = vgmPlay->file->dataLen;\r
        const UINT8* vgmData = vgmPlay->file->data;\r
        const UINT8* VGMPnt;\r
-       UINT32 VGMPos;\r
-       UINT32 VGMSmplPos;\r
+       dword/*32*/ VGMPos;\r
+       dword/*32*/ VGMSmplPos;\r
        UINT8 Command;\r
        UINT8 blockType;\r
-       UINT32 blockLen;\r
+       dword/*32*/ blockLen;\r
 \r
        vgmPlay->pbSmplPos += Samples;\r
        VGMPos = vgmPlay->vgmPos;\r