From 1df403c52368a3930b67dedabf8c0e1d522f1cc3 Mon Sep 17 00:00:00 2001 From: notaz Date: Tue, 8 Feb 2011 18:21:17 +0200 Subject: add cd swap functionality --- libpcsxcore/cdrom.h | 1 + libpcsxcore/plugins.c | 17 +++++++++++++++++ libpcsxcore/plugins.h | 3 ++- 3 files changed, 20 insertions(+), 1 deletion(-) (limited to 'libpcsxcore') 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]; }; -- cgit v1.2.3