ref: db273a45b868d3de4b768c2f49c6d965dd4da2cf
parent: a2fbacf6aa6dac7f47439ac5139db9d13b5ab0a5
author: allkern <lisandroaalarcon@gmail.com>
date: Fri Sep 8 20:34:21 EDT 2023
Fix Setloc bug
--- a/psx/dev/cdrom.c
+++ b/psx/dev/cdrom.c
@@ -97,15 +97,14 @@
return;
}
- cdrom->seek_ff = BTOI(f);
- cdrom->seek_ss = BTOI(s);
- cdrom->seek_mm = BTOI(m);
+ cdrom->seek_ff = f;
+ cdrom->seek_ss = s;
+ cdrom->seek_mm = m;
- log_fatal("setloc: %02u:%02u:%02u (%08x)",+ log_fatal("setloc: %02x:%02x:%02x",cdrom->seek_mm,
cdrom->seek_ss,
- cdrom->seek_ff,
- cdrom->seek_offset
+ cdrom->seek_ff
);
} break;
@@ -142,6 +141,8 @@
msf.s = cdrom->seek_ss;
msf.f = cdrom->seek_ff;
+ msf_from_bcd(&msf);
+
int err = psx_disc_seek(cdrom->disc, msf);
if (err) {@@ -179,6 +180,8 @@
msf.s = cdrom->seek_ss;
msf.f = cdrom->seek_ff;
+ msf_from_bcd(&msf);
+
psx_disc_seek(cdrom->disc, msf);
psx_disc_read_sector(cdrom->disc, cdrom->dfifo);
@@ -768,7 +771,7 @@
}
void cdrom_write_cmd(psx_cdrom_t* cdrom, uint8_t value) {- //log_set_quiet(0);
+ log_set_quiet(0);
log_fatal("%s(%02x) %u params=[%02x, %02x, %02x, %02x, %02x, %02x]",g_psx_cdrom_command_names[value],
value,
@@ -780,7 +783,7 @@
cdrom->pfifo[4],
cdrom->pfifo[5]
);
- //log_set_quiet(1);
+ log_set_quiet(1);
cdrom->command = value;
cdrom->state = CD_STATE_RECV_CMD;
@@ -801,6 +804,7 @@
SET_BITS(status, STAT_DRQSTS_MASK, STAT_DRQSTS_MASK);
cdrom->dfifo_full = 1;
+ cdrom->dfifo_index = 0;
} else {SET_BITS(status, STAT_DRQSTS_MASK, 0);
--- a/psx/disc/cue.c
+++ b/psx/disc/cue.c
@@ -6,6 +6,7 @@
#include <stdint.h>
#include <stdio.h>
+#include <stddef.h>
#include <string.h>
#include <ctype.h>
--- a/psx/msf.c
+++ b/psx/msf.c
@@ -31,15 +31,15 @@
}
void msf_to_bcd(msf_t* msf) {- msf->m = BTOI(msf->m);
- msf->s = BTOI(msf->s);
- msf->f = BTOI(msf->f);
-}
-
-void msf_from_bcd(msf_t* msf) {msf->m = ITOB(msf->m);
msf->s = ITOB(msf->s);
msf->f = ITOB(msf->f);
+}
+
+void msf_from_bcd(msf_t* msf) {+ msf->m = BTOI(msf->m);
+ msf->s = BTOI(msf->s);
+ msf->f = BTOI(msf->f);
}
uint32_t msf_to_address(msf_t msf) {--
⑨