clean up switching between dynarec and interpreter
[pcsx_rearmed.git] / libpcsxcore / plugins.c
index 57e7ef2..23474f1 100644 (file)
@@ -48,7 +48,6 @@ GPUmakeSnapshot       GPU_makeSnapshot;
 GPUfreeze             GPU_freeze;\r
 GPUgetScreenPic       GPU_getScreenPic;\r
 GPUshowScreenPic      GPU_showScreenPic;\r
-GPUclearDynarec       GPU_clearDynarec;\r
 GPUvBlank             GPU_vBlank;\r
 \r
 CDRinit               CDR_init;\r
@@ -88,6 +87,7 @@ SPUreadDMAMem         SPU_readDMAMem;
 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
@@ -199,7 +199,6 @@ void CALLBACK GPU__makeSnapshot(void) {}
 void CALLBACK GPU__keypressed(int key) {}\r
 long CALLBACK GPU__getScreenPic(unsigned char *pMem) { return -1; }\r
 long CALLBACK GPU__showScreenPic(unsigned char *pMem) { return -1; }\r
-void CALLBACK GPU__clearDynarec(void (CALLBACK *callback)(void)) {}\r
 void CALLBACK GPU__vBlank(int val) {}\r
 \r
 #define LoadGpuSym1(dest, name) \\r
@@ -239,7 +238,6 @@ static int LoadGPUplugin(const char *GPUdll) {
        LoadGpuSym1(freeze, "GPUfreeze");\r
        LoadGpuSym0(getScreenPic, "GPUgetScreenPic");\r
        LoadGpuSym0(showScreenPic, "GPUshowScreenPic");\r
-       LoadGpuSym0(clearDynarec, "GPUclearDynarec");\r
     LoadGpuSym0(vBlank, "GPUvBlank");\r
        LoadGpuSym0(configure, "GPUconfigure");\r
        LoadGpuSym0(test, "GPUtest");\r
@@ -320,6 +318,7 @@ void *hSPUDriver = NULL;
 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
@@ -356,6 +355,7 @@ static int LoadSPUplugin(const char *SPUdll) {
        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
@@ -693,15 +693,12 @@ static int LoadSIO1plugin(const char *SIO1dll) {
 \r
 #endif\r
 \r
-void CALLBACK clearDynarec(void) {\r
-       psxCpu->Reset();\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
@@ -775,11 +772,11 @@ void ReleasePlugins() {
 \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
@@ -798,12 +795,12 @@ void ReleasePlugins() {
 int ReloadCdromPlugin()\r
 {\r
        if (hCDRDriver != NULL || cdrIsoActive()) CDR_shutdown();\r
-       if (hCDRDriver != NULL) SysCloseLibrary(hCDRDriver); hCDRDriver = NULL;\r
+       if (hCDRDriver != NULL) { SysCloseLibrary(hCDRDriver); hCDRDriver = NULL; }\r
 \r
        if (UsingIso()) {\r
                LoadCDRplugin(NULL);\r
        } else {\r
-               char Plugin[MAXPATHLEN];\r
+               char Plugin[MAXPATHLEN * 2];\r
                sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Cdr);\r
                if (LoadCDRplugin(Plugin) == -1) return -1;\r
        }\r
@@ -816,7 +813,7 @@ void SetIsoFile(const char *filename) {
                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