diff options
Diffstat (limited to 'libpcsxcore/cdrom.c')
| -rw-r--r-- | libpcsxcore/cdrom.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c index 9c095aa1..1928e09a 100644 --- a/libpcsxcore/cdrom.c +++ b/libpcsxcore/cdrom.c @@ -816,7 +816,6 @@ void cdrReadInterrupt() { memcpy(cdr.Transfer, buf, DATA_SIZE); CheckPPFCache(cdr.Transfer, cdr.Prev[0], cdr.Prev[1], cdr.Prev[2]); - cdr.Stat = DataReady; #ifdef CDR_LOG fprintf(emuLog, "cdrReadInterrupt() Log: cdr.Transfer %x:%x:%x\n", cdr.Transfer[0], cdr.Transfer[1], cdr.Transfer[2]); @@ -863,7 +862,13 @@ void cdrReadInterrupt() { else { CDREAD_INT((cdr.Mode & 0x80) ? (cdReadTime / 2) : cdReadTime); } - psxHu32ref(0x1070) |= SWAP32((u32)0x4); +
+ // Judge Dredd: don't return FORM2 during XA playback (movie playing)
+ if( (cdr.Mode & 0x40) == 0 || ( cdr.Transfer[4+3] == 0 )) {
+ cdr.Stat = DataReady;
+
+ psxHu32ref(0x1070) |= SWAP32((u32)0x4);
+ }
} /* |
