changeset 2124:ad346054ca78

Return "not ready" status sometimes when seeking. Fixes issues in multiple games
author Michael Pavone <pavone@retrodev.com>
date Fri, 11 Mar 2022 00:40:17 -0800
parents 50385ae2617b
children 8a67b043ba25
files cdd_mcu.c
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/cdd_mcu.c	Thu Mar 10 22:33:08 2022 -0800
+++ b/cdd_mcu.c	Fri Mar 11 00:40:17 2022 -0800
@@ -185,8 +185,13 @@
 		}
 		break;
 	}
+	uint8_t force_not_ready = 0;
+	if (context->seeking && context->head_pba - prev_pba != 1) {
+		//BIOS depends on getting a not ready status during seeking to clear certain state
+		force_not_ready = context->status_buffer.format != SF_NOTREADY;
+	}
 	if (context->first_cmd_received) {
-		switch (context->requested_format)
+		switch (force_not_ready ? SF_NOTREADY : context->requested_format)
 		{
 		case SF_ABSOLUTE:
 			if (context->toc_valid && prev_pba >= LEADIN_SECTORS) {