ref: 0f73e41c1fa19b5e13345f35024f182143edb068
parent: 6091f3ba98fc8c7a686d27afd7935c3a34029b9f
author: allkern <lisandroaalarcon@gmail.com>
date: Tue Aug 1 19:19:54 EDT 2023
Stub CdlSetfilter
--- a/psx/dev/cdrom.c
+++ b/psx/dev/cdrom.c
@@ -282,7 +282,39 @@
} break;
}
}
-void cdrom_cmd_setfilter(psx_cdrom_t* cdrom) { log_fatal("setfilter: Unimplemented"); exit(1); }+void cdrom_cmd_setfilter(psx_cdrom_t* cdrom) {+ switch (cdrom->state) {+ case CD_STATE_RECV_CMD: {+ if (cdrom->pfifo_index != 2) {+ log_fatal("CdlSetfilter: Expected exactly 2 parameter");+
+ cdrom->irq_delay = DELAY_1MS;
+ cdrom->delayed_command = CDL_ERROR;
+ cdrom->state = CD_STATE_ERROR;
+ cdrom->error = ERR_PCOUNT;
+ cdrom->error_flags = GETSTAT_ERROR;
+
+ return;
+ }
+
+ PFIFO_POP;
+ PFIFO_POP;
+
+ cdrom->irq_delay = DELAY_1MS;
+ cdrom->delayed_command = CDL_SETFILTER;
+ cdrom->state = CD_STATE_SEND_RESP1;
+ } break;
+
+ case CD_STATE_SEND_RESP1: {+ cdrom->delayed_command = CDL_NONE;
+
+ SET_BITS(ifr, IFR_INT, IFR_INT3);
+ RESP_PUSH(cdrom->stat);
+
+ cdrom->state = CD_STATE_RECV_CMD;
+ } break;
+ }
+}
void cdrom_cmd_setmode(psx_cdrom_t* cdrom) { switch (cdrom->state) { case CD_STATE_RECV_CMD: {--
⑨