comparison cdd_mcu.c @ 2421:bcfa5e272f5e

Fix regression in Prince of Persia
author Michael Pavone <pavone@retrodev.com>
date Sat, 20 Jan 2024 01:30:19 -0800
parents 0871f555eff6
children
comparison
equal deleted inserted replaced
2420:1fba97414ba6 2421:bcfa5e272f5e
404 } else { 404 } else {
405 // Did not receive our first command so just send zeroes 405 // Did not receive our first command so just send zeroes
406 memset(&context->status_buffer, 0, sizeof(context->status_buffer) - 1); 406 memset(&context->status_buffer, 0, sizeof(context->status_buffer) - 1);
407 } 407 }
408 context->status_buffer.checksum = checksum((uint8_t *)&context->status_buffer); 408 context->status_buffer.checksum = checksum((uint8_t *)&context->status_buffer);
409 if (context->status_buffer.format != SF_NOTREADY) { 409 if (context->status_buffer.format != SF_NOTREADY || (context->status != DS_STOP && context->status < DS_SUM_ERROR)) {
410 printf("CDD Status %X%X.%X%X%X%X%X%X.%X%X (lba %u)\n", 410 printf("CDD Status %X%X.%X%X%X%X%X%X.%X%X (lba %u)\n",
411 context->status_buffer.status, context->status_buffer.format, 411 context->status_buffer.status, context->status_buffer.format,
412 context->status_buffer.b.time.min_high, context->status_buffer.b.time.min_low, 412 context->status_buffer.b.time.min_high, context->status_buffer.b.time.min_low,
413 context->status_buffer.b.time.sec_high, context->status_buffer.b.time.sec_low, 413 context->status_buffer.b.time.sec_high, context->status_buffer.b.time.sec_low,
414 context->status_buffer.b.time.frame_high, context->status_buffer.b.time.frame_low, 414 context->status_buffer.b.time.frame_high, context->status_buffer.b.time.frame_low,
465 if (lba >= context->media->tracks[0].fake_pregap + context->media->tracks[context->media->num_tracks - 1].end_lba) { 465 if (lba >= context->media->tracks[0].fake_pregap + context->media->tracks[context->media->num_tracks - 1].end_lba) {
466 context->error_status = DS_CMD_ERROR; 466 context->error_status = DS_CMD_ERROR;
467 break; 467 break;
468 } 468 }
469 context->seek_pba = lba + LEADIN_SECTORS - 3; 469 context->seek_pba = lba + LEADIN_SECTORS - 3;
470 if (context->cmd_buffer.cmd_type == CMD_SEEK) {
471 context->pause_pba = lba + LEADIN_SECTORS;
472 }
470 context->seeking = 1; 473 context->seeking = 1;
471 context->status = context->cmd_buffer.cmd_type == CMD_READ ? DS_PLAY : DS_PAUSE; 474 context->status = context->cmd_buffer.cmd_type == CMD_READ ? DS_PLAY : DS_PAUSE;
472 break; 475 break;
473 } 476 }
474 case CMD_REPORT_REQUEST: 477 case CMD_REPORT_REQUEST: