diff options
| -rw-r--r-- | ChangeLog | 1 | ||||
| -rw-r--r-- | libpcsxcore/cdrom.c | 15 |
2 files changed, 11 insertions, 5 deletions
@@ -4,6 +4,7 @@ September 20, 2009 Wei Mingzhi <weimingzhi@gmail.com> malloc() and free(). * libpcsxcore/ix86/iR3000A.c: Minor cleanup. * po/zh_TW.po: Updated. + * libpcsxcore/cdrom.c: Close & reopen the CDR plugin after switching discs. September 18, 2009 Wei Mingzhi <weimingzhi@gmail.com> diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c index 8ab80e12..31446ef4 100644 --- a/libpcsxcore/cdrom.c +++ b/libpcsxcore/cdrom.c @@ -156,8 +156,8 @@ void AddIrqQueue(unsigned char irq, unsigned long ecycle) { } else { CDR_INT(ecycle); } -} - +}
+
void cdrInterrupt() { int i; unsigned char Irq = cdr.Irq; @@ -190,14 +190,19 @@ void cdrInterrupt() { cdr.Result[0] |= 0x11; cdr.Result[0] &= ~0x02; } - else if (i & 0x10) { + else if (i & 0x10) {
+ extern void *hCDRDriver;
cdr.StatP |= 0x2; - cdr.Result[0] |= 0x2; + cdr.Result[0] |= 0x2;
+ if (hCDRDriver != NULL) {
+ CDR_close();
+ CDR_open();
+ } CheckCdrom(); } } break; - + case CdlSetloc: cdr.CmdProcess = 0; SetResultSize(1); |
