aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authorDaniel Silsby2019-11-12 18:48:44 -0500
committerDaniel Silsby2019-11-12 18:48:44 -0500
commitf84d4864a52c1d948c30dcc0f565232c6d1500df (patch)
tree50f8a8c8fe87585c044115bdc08ae23882f26ac3 /libpcsxcore
parent31d997216cc3ed116125a344a44d2c813d322fc1 (diff)
downloadpcsx_rearmed-f84d4864a52c1d948c30dcc0f565232c6d1500df.tar.gz
pcsx_rearmed-f84d4864a52c1d948c30dcc0f565232c6d1500df.tar.bz2
pcsx_rearmed-f84d4864a52c1d948c30dcc0f565232c6d1500df.zip
cdrom: add missing BCD->int convert in cdrFreeze()
For some Eboot .PBP game images, when loading a savestate, a zlib error like 'uncompress failed with -5 for block 5383, sector 86132' would be output to stdout/stderr. The savestate would still be playable, though. Traced it down to cdrFreeze() failing to convert cdr.Prev from BCD->int when calling ReadTrack(). Note that the odd 'cdr.Prev[0]++;' line seems to be someone's hacky way of forcing ReadTrack() to avoid skipping what it thinks is a duplicate sector read.
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/cdrom.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c
index 17d65ab..3e31c0a 100644
--- a/libpcsxcore/cdrom.c
+++ b/libpcsxcore/cdrom.c
@@ -1498,7 +1498,9 @@ int cdrFreeze(void *f, int Mode) {
pTransfer = cdr.Transfer + tmp;
// read right sub data
- memcpy(tmpp, cdr.Prev, 3);
+ tmpp[0] = btoi(cdr.Prev[0]);
+ tmpp[1] = btoi(cdr.Prev[1]);
+ tmpp[2] = btoi(cdr.Prev[2]);
cdr.Prev[0]++;
ReadTrack(tmpp);