cdrom: do a NULL check, some plugins may return that
[pcsx_rearmed.git] / libpcsxcore / cdrom.c
index ee74835..c82b6da 100644 (file)
@@ -1216,7 +1216,8 @@ void cdrInterrupt() {
                        // - fixes cutscene speech
                        {
                                u8 *buf = CDR_getBuffer();
-                               memcpy(cdr.Transfer, buf, 8);
+                               if (buf != NULL)
+                                       memcpy(cdr.Transfer, buf, 8);
                        }
                        
                        
@@ -1330,11 +1331,14 @@ void cdrReadInterrupt() {
                                SPU_playADPCMchannel(&cdr.Xa);
                                cdr.FirstSector = 0;
 
-
+#if 0
                                // Crash Team Racing: music, speech
+                               // - done using cdda decoded buffer (spu irq)
+                               // - don't do here
 
                                // signal ADPCM data ready
                                psxHu32ref(0x1070) |= SWAP32((u32)0x200);
+#endif
                        }
                        else cdr.FirstSector = -1;
                }
@@ -1897,11 +1901,10 @@ void cdrWrite3(unsigned char rt) {
                // - Final Fantasy Tactics
                // - various other games
 
-               /*
+               if (cdr.Irq) // rearmed guesswork hack
                if (cdr.Reading && !cdr.ResultReady) {
                        CDREAD_INT((cdr.Mode & MODE_SPEED) ? (cdReadTime / 2) : cdReadTime);
                }
-               */
 
                return;
        }