aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/cdrom.h1
-rw-r--r--libpcsxcore/plugins.c17
-rw-r--r--libpcsxcore/plugins.h3
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];
};