cdrom: some swap cd tuning
[pcsx_rearmed.git] / libpcsxcore / cdrom.c
index 3117a9b..bcf83e7 100644 (file)
@@ -298,13 +298,14 @@ static void Check_Shell( int Irq )
                                {
                                        // Vib Ribbon: pre-CD swap
                                        StopCdda();
+                                       StopReading();
 
 
                                        // GameShark Lite: Death if DiskError happens
                                        //
                                        // Vib Ribbon: Needs DiskError for CD swap
 
-                                       if (Irq != CdlNop)
+                                       //if (Irq != CdlNop)
                                        {
                                                cdr.Stat = DiskError;
 
@@ -852,11 +853,6 @@ void cdrInterrupt() {
                        break;
 
                case CdlGetTN:
-                       // 5-Star Racing: don't stop CDDA
-                       //
-                       // Vib Ribbon: CD swap
-                       StopReading();
-
                        cdr.CmdProcess = 0;
                        SetResultSize(3);
                        cdr.StatP |= STATUS_ROTATING;
@@ -946,9 +942,9 @@ void cdrInterrupt() {
                        cdr.Result[2] = 0;
                        cdr.Result[3] = 0;
 
-                       // 0x10 - audio | 0x80 - unlicensed
-                       if (CDR_getStatus(&stat) == -1) {
-                               cdr.Result[1] = 0x80; // 0x80 leads to the menu in the bios, else loads CD
+                       // 0x10 - audio | 0x40 - disk missing | 0x80 - unlicensed
+                       if (CDR_getStatus(&stat) == -1 || stat.Type == 0 || stat.Type == 0xff) {
+                               cdr.Result[1] = 0xc0;
                        }
                        else {
                                if (stat.Type == 2)