diff options
Diffstat (limited to 'libpcsxcore')
-rw-r--r-- | libpcsxcore/cdrom.h | 1 | ||||
-rw-r--r-- | libpcsxcore/plugins.c | 17 | ||||
-rw-r--r-- | libpcsxcore/plugins.h | 3 |
3 files changed, 20 insertions, 1 deletions
diff --git a/libpcsxcore/cdrom.h b/libpcsxcore/cdrom.h index 90523c3..1f70ff3 100644 --- a/libpcsxcore/cdrom.h +++ b/libpcsxcore/cdrom.h @@ -108,6 +108,7 @@ void cdrRepplayInterrupt(); void cdrLidSeekInterrupt(); void cdrPlayInterrupt(); void cdrDmaInterrupt(); +void LidInterrupt(); unsigned char cdrRead0(void); unsigned char cdrRead1(void); unsigned char cdrRead2(void); diff --git a/libpcsxcore/plugins.c b/libpcsxcore/plugins.c index f965e0d..57e7ef2 100644 --- a/libpcsxcore/plugins.c +++ b/libpcsxcore/plugins.c @@ -794,6 +794,23 @@ void ReleasePlugins() { #endif
}
+// for CD swap
+int ReloadCdromPlugin()
+{
+ if (hCDRDriver != NULL || cdrIsoActive()) CDR_shutdown();
+ if (hCDRDriver != NULL) SysCloseLibrary(hCDRDriver); hCDRDriver = NULL;
+
+ if (UsingIso()) {
+ LoadCDRplugin(NULL);
+ } else {
+ char Plugin[MAXPATHLEN];
+ sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Cdr);
+ if (LoadCDRplugin(Plugin) == -1) return -1;
+ }
+
+ return CDR_init();
+}
+
void SetIsoFile(const char *filename) {
if (filename == NULL) {
IsoFile[0] = '\0';
diff --git a/libpcsxcore/plugins.h b/libpcsxcore/plugins.h index 9c24ece..8084143 100644 --- a/libpcsxcore/plugins.h +++ b/libpcsxcore/plugins.h @@ -60,6 +60,7 @@ int LoadPlugins(); void ReleasePlugins();
int OpenPlugins();
void ClosePlugins();
+int ReloadCdromPlugin();
typedef unsigned long (CALLBACK* PSEgetLibType)(void);
typedef unsigned long (CALLBACK* PSEgetLibVersion)(void);
@@ -150,7 +151,7 @@ struct SubQ { unsigned char IndexNumber;
unsigned char TrackRelativeAddress[3];
unsigned char Filler;
- unsigned char AbsoluteAddress[3]; + unsigned char AbsoluteAddress[3];
unsigned char CRC[2];
char res1[72];
};
|