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
char Plugin[MAXPATHLEN];\r
\r
ReleasePlugins();\r
+ SysLibError();\r
\r
if (UsingIso()) {\r
LoadCDRplugin(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];\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