Mercurial > repos > blastem
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 | 69c28808b49a |
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: |