--- /dev/null
+#ifndef __VGMSNDDRV_H__\r
+#define __VGMSNDDRV_H__\r
+\r
+#ifdef __cplusplus\r
+extern "C"\r
+{\r
+#endif\r
+\r
+#include "src/lib/vgmsnd/stdtype.h"\r
+\r
+typedef struct _vgm_file_header\r
+{\r
+ sdword fccVGM;\r
+ UINT32 lngEOFOffset;\r
+ UINT32 lngVersion;\r
+ UINT32 lngHzPSG;\r
+ UINT32 lngHzYM2413;\r
+ UINT32 lngGD3Offset;\r
+ UINT32 lngTotalSamples;\r
+ UINT32 lngLoopOffset;\r
+ UINT32 lngLoopSamples;\r
+ UINT32 lngRate;\r
+ UINT8 bytPSGCfg[4];\r
+ UINT32 lngHzYM2612;\r
+ UINT32 lngHzYM2151;\r
+ UINT32 lngDataOffset;\r
+ UINT32 lngHzSPCM;\r
+ UINT32 lngSPCMIntf;\r
+ UINT32 lngHzRF5C68;\r
+ UINT32 lngHzYM2203;\r
+ UINT32 lngHzYM2608;\r
+ UINT32 lngHzYM2610;\r
+ UINT32 lngHzYM3812;\r
+ UINT32 lngHzYM3526;\r
+ UINT32 lngHzY8950;\r
+ UINT32 lngHzYMF262;\r
+ UINT32 lngHzYMF278B;\r
+ UINT32 lngHzYMF271;\r
+ UINT32 lngHzYMZ280B;\r
+ UINT32 lngHzRF5C164;\r
+ UINT32 lngHzPWM;\r
+ UINT32 lngHzAY8910;\r
+ UINT8 bytAYCfg[4];\r
+ UINT8 bytVolumeModifier;\r
+ UINT8 bytReserved2;\r
+ INT8 bytLoopBase;\r
+ UINT8 bytLoopModifier;\r
+} VGM_HEADER;\r
+\r
+typedef struct _vgm_file\r
+{\r
+ UINT32 dataLen;\r
+ UINT8* data;\r
+ VGM_HEADER header;\r
+} VGM_FILE;\r
+\r
+\r
+UINT8 OpenVGMFile(const char* FileName, VGM_FILE* vgmFile);\r
+void FreeVGMFile(VGM_FILE* vgmFile);\r
+\r
+void InitEngine(void);\r
+void DeinitEngine(void);\r
+\r
+UINT8 PlayMusic(VGM_FILE* vgmFile);\r
+UINT8 PlaySFX(VGM_FILE* vgmFile, UINT8 sfxChnID);\r
+UINT8 StopMusic(void);\r
+UINT8 StopSFX(UINT8 sfxChnID);\r
+UINT8 PauseMusic(void);\r
+UINT8 ResumeMusic(void);\r
+\r
+void UpdateSoundEngine(void);\r
+\r
+\r
+// Functions that must be supplied by external library:\r
+//extern void OPL2_Write(UINT8 reg, UINT8 data);\r
+//extern UINT8 OPL2_ReadStatus(void);\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif // ! __VGMSNDDRV_H__\r