#ifndef _ZDSPCDLL_H_ #define _ZDSPCDLL_H_ #define SPC_APU 1 #define SPC_SND 2 #ifdef __cplusplus extern "C"{ #endif DWORD WINAPI InitialiseSPC(DWORD,DWORD,DWORD,DWORD,DWORD); // void WINAPI DeinitialiseSPC(DWORD); void WINAPI RestoreSPC(); DWORD WINAPI LoadSPC(LPCSTR); void WINAPI PlaySPC(); void WINAPI PauseSPC(); #ifdef __cplusplus } #endif #endif /* Example of the uses- MMRESULT mmResult; int iChan=2,iBits=16,iFreq=32000,iVM=4; //Default, you can change if you want. if((mmResult=InitialiseSPC(SPC_SND|SPC_APU,iChan,iBits,iFreq,iVM))!=MMSYSERR_NOERROR) { //Oops, The soundcard is in use. char szBuffer[MAXERRORLENGTH]; waveOutGetErrorText(mmResult,szBuffer,MAXERRORLENGTH); MessageBox(szBuffer,"Failed to initialize ZD-SPC DLL..."); return; }else{ if((LoadSPC("c:\\whatever.spc")==0){ PlaySPC(); } } Then when your done, you just call this void WINAPI DeinitialiseSPC(SPC_SND|SPC_APU); */