SPUplayADPCMchannel SPU_playADPCMchannel;\r
SPUfreeze SPU_freeze;\r
SPUregisterCallback SPU_registerCallback;\r
+SPUregisterScheduleCb SPU_registerScheduleCb;\r
SPUasync SPU_async;\r
SPUplayCDDAchannel SPU_playCDDAchannel;\r
\r
long CALLBACK SPU__configure(void) { return 0; }\r
void CALLBACK SPU__about(void) {}\r
long CALLBACK SPU__test(void) { return 0; }\r
+void CALLBACK SPU__registerScheduleCb(void (CALLBACK *cb)(unsigned int)) {}\r
\r
#define LoadSpuSym1(dest, name) \\r
LoadSym(SPU_##dest, SPU##dest, name, TRUE);\r
LoadSpuSym1(playADPCMchannel, "SPUplayADPCMchannel");\r
LoadSpuSym1(freeze, "SPUfreeze");\r
LoadSpuSym1(registerCallback, "SPUregisterCallback");\r
+ LoadSpuSym0(registerScheduleCb, "SPUregisterScheduleCb");\r
LoadSpuSymN(async, "SPUasync");\r
LoadSpuSymN(playCDDAchannel, "SPUplayCDDAchannel");\r
\r
\r
int LoadPlugins() {\r
int ret;\r
- char Plugin[MAXPATHLEN];\r
+ char Plugin[MAXPATHLEN * 2];\r
\r
ReleasePlugins();\r
+ SysLibError();\r
\r
if (UsingIso()) {\r
LoadCDRplugin(NULL);\r
\r
if (Config.UseNet && hNETDriver != NULL) NET_shutdown(); \r
\r
- if (hCDRDriver != NULL) SysCloseLibrary(hCDRDriver); hCDRDriver = NULL;\r
- if (hGPUDriver != NULL) SysCloseLibrary(hGPUDriver); hGPUDriver = NULL;\r
- if (hSPUDriver != NULL) SysCloseLibrary(hSPUDriver); hSPUDriver = NULL;\r
- if (hPAD1Driver != NULL) SysCloseLibrary(hPAD1Driver); hPAD1Driver = NULL;\r
- if (hPAD2Driver != NULL) SysCloseLibrary(hPAD2Driver); hPAD2Driver = NULL;\r
+ if (hCDRDriver != NULL) { SysCloseLibrary(hCDRDriver); hCDRDriver = NULL; }\r
+ if (hGPUDriver != NULL) { SysCloseLibrary(hGPUDriver); hGPUDriver = NULL; }\r
+ if (hSPUDriver != NULL) { SysCloseLibrary(hSPUDriver); hSPUDriver = NULL; }\r
+ if (hPAD1Driver != NULL) { SysCloseLibrary(hPAD1Driver); hPAD1Driver = NULL; }\r
+ if (hPAD2Driver != NULL) { SysCloseLibrary(hPAD2Driver); hPAD2Driver = NULL; }\r
\r
if (Config.UseNet && hNETDriver != NULL) {\r
SysCloseLibrary(hNETDriver); hNETDriver = NULL;\r
#endif\r
}\r
\r
+// for CD swap\r
+int ReloadCdromPlugin()\r
+{\r
+ if (hCDRDriver != NULL || cdrIsoActive()) CDR_shutdown();\r
+ if (hCDRDriver != NULL) { SysCloseLibrary(hCDRDriver); hCDRDriver = NULL; }\r
+\r
+ if (UsingIso()) {\r
+ LoadCDRplugin(NULL);\r
+ } else {\r
+ char Plugin[MAXPATHLEN * 2];\r
+ sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Cdr);\r
+ if (LoadCDRplugin(Plugin) == -1) return -1;\r
+ }\r
+\r
+ return CDR_init();\r
+}\r
+\r
void SetIsoFile(const char *filename) {\r
if (filename == NULL) {\r
IsoFile[0] = '\0';\r
return;\r
}\r
- strncpy(IsoFile, filename, MAXPATHLEN);\r
+ strncpy(IsoFile, filename, MAXPATHLEN - 1);\r
}\r
\r
const char *GetIsoFile(void) {\r