adjust irq10 and rcnt for pal
[pcsx_rearmed.git] / libpcsxcore / plugins.c
index f965e0d..a77c728 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
@@ -71,23 +70,18 @@ CDRsetfilename        CDR_setfilename;
 CDRreadCDDA           CDR_readCDDA;\r
 CDRgetTE              CDR_getTE;\r
 \r
-SPUconfigure          SPU_configure;\r
-SPUabout              SPU_about;\r
 SPUinit               SPU_init;\r
 SPUshutdown           SPU_shutdown;\r
-SPUtest               SPU_test;\r
 SPUopen               SPU_open;\r
 SPUclose              SPU_close;\r
-SPUplaySample         SPU_playSample;\r
 SPUwriteRegister      SPU_writeRegister;\r
 SPUreadRegister       SPU_readRegister;\r
-SPUwriteDMA           SPU_writeDMA;\r
-SPUreadDMA            SPU_readDMA;\r
 SPUwriteDMAMem        SPU_writeDMAMem;\r
 SPUreadDMAMem         SPU_readDMAMem;\r
 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 +193,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 +232,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
@@ -315,11 +307,8 @@ static int LoadCDRplugin(const char *CDRdll) {
        return 0;\r
 }\r
 \r
-void *hSPUDriver = NULL;\r
-\r
-long CALLBACK SPU__configure(void) { return 0; }\r
-void CALLBACK SPU__about(void) {}\r
-long CALLBACK SPU__test(void) { return 0; }\r
+static void *hSPUDriver = NULL;\r
+static void CALLBACK SPU__registerScheduleCb(void (CALLBACK *cb)(unsigned int)) {}\r
 \r
 #define LoadSpuSym1(dest, name) \\r
        LoadSym(SPU_##dest, SPU##dest, name, TRUE);\r
@@ -336,7 +325,6 @@ static int LoadSPUplugin(const char *SPUdll) {
 \r
        hSPUDriver = SysLoadLibrary(SPUdll);\r
        if (hSPUDriver == NULL) {\r
-               SPU_configure = NULL;\r
                SysMessage (_("Could not load SPU plugin %s!"), SPUdll); return -1;\r
        }\r
        drv = hSPUDriver;\r
@@ -344,18 +332,14 @@ static int LoadSPUplugin(const char *SPUdll) {
        LoadSpuSym1(shutdown, "SPUshutdown");\r
        LoadSpuSym1(open, "SPUopen");\r
        LoadSpuSym1(close, "SPUclose");\r
-       LoadSpuSym0(configure, "SPUconfigure");\r
-       LoadSpuSym0(about, "SPUabout");\r
-       LoadSpuSym0(test, "SPUtest");\r
        LoadSpuSym1(writeRegister, "SPUwriteRegister");\r
        LoadSpuSym1(readRegister, "SPUreadRegister");           \r
-       LoadSpuSym1(writeDMA, "SPUwriteDMA");\r
-       LoadSpuSym1(readDMA, "SPUreadDMA");\r
        LoadSpuSym1(writeDMAMem, "SPUwriteDMAMem");\r
        LoadSpuSym1(readDMAMem, "SPUreadDMAMem");\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
@@ -693,15 +677,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 +756,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
@@ -794,12 +775,29 @@ void ReleasePlugins() {
 #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