shithub: psxe

Download patch

ref: dd6976f79391a1d98690efa28a77d8674c2d746b
parent: 69a1076197fd30228ab21b06961bc5d7b305ff79
author: allkern <lisandroaalarcon@gmail.com>
date: Sun Jul 23 07:05:36 EDT 2023

Implement No Disc GetID response

--- a/psx/dev/cdrom.c
+++ b/psx/dev/cdrom.c
@@ -401,14 +401,26 @@
 
         case CD_STATE_RESP2: {
             SET_BITS(ifr, IFR_INT, 2);
-            RESP_PUSH(0x41);
-            RESP_PUSH(0x45);
-            RESP_PUSH(0x43);
-            RESP_PUSH(0x53);
-            RESP_PUSH(0x00);
-            RESP_PUSH(0x20);
-            RESP_PUSH(0x00);
-            RESP_PUSH(0x02);
+
+            if (cdrom->disc) {
+                RESP_PUSH(0x41);
+                RESP_PUSH(0x45);
+                RESP_PUSH(0x43);
+                RESP_PUSH(0x53);
+                RESP_PUSH(0x00);
+                RESP_PUSH(0x20);
+                RESP_PUSH(0x00);
+                RESP_PUSH(0x02);
+            } else {
+                RESP_PUSH(0x00);
+                RESP_PUSH(0x00);
+                RESP_PUSH(0x00);
+                RESP_PUSH(0x00);
+                RESP_PUSH(0x00);
+                RESP_PUSH(0x00);
+                RESP_PUSH(0x40);
+                RESP_PUSH(0x08);
+            }
 
             cdrom->state = CD_STATE_CMD;
             cdrom->delayed_command = CDL_NONE;
--- a/psx/dev/timer.c
+++ b/psx/dev/timer.c
@@ -177,8 +177,6 @@
     if (T0_MODE & MODE_RESETC) {
         if (reached_target)
             T0_COUNTER -= T0_TARGET;
-    } else {
-        T0_COUNTER -= 0xffff;
     }
 }
 
--