changeset 2421:bcfa5e272f5e

Fix regression in Prince of Persia
author Michael Pavone <pavone@retrodev.com>
date Sat, 20 Jan 2024 01:30:19 -0800
parents 1fba97414ba6
children 1978bd770023
files cdd_mcu.c
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/cdd_mcu.c	Fri Jan 19 22:30:25 2024 -0800
+++ b/cdd_mcu.c	Sat Jan 20 01:30:19 2024 -0800
@@ -406,7 +406,7 @@
 		memset(&context->status_buffer, 0, sizeof(context->status_buffer) - 1);
 	}
 	context->status_buffer.checksum = checksum((uint8_t *)&context->status_buffer);
-	if (context->status_buffer.format != SF_NOTREADY) {
+	if (context->status_buffer.format != SF_NOTREADY || (context->status != DS_STOP && context->status < DS_SUM_ERROR)) {
 		printf("CDD Status %X%X.%X%X%X%X%X%X.%X%X (lba %u)\n",
 			context->status_buffer.status, context->status_buffer.format,
 			context->status_buffer.b.time.min_high, context->status_buffer.b.time.min_low,
@@ -467,6 +467,9 @@
 			break;
 		}
 		context->seek_pba = lba + LEADIN_SECTORS - 3;
+		if (context->cmd_buffer.cmd_type == CMD_SEEK) {
+			context->pause_pba = lba + LEADIN_SECTORS;
+		}
 		context->seeking = 1;
 		context->status = context->cmd_buffer.cmd_type == CMD_READ ? DS_PLAY : DS_PAUSE;
 		break;