From 238287ee6e1f0dc629419024f7dba59d2b9c083d Mon Sep 17 00:00:00 2001 From: A <> Date: Sat, 23 May 2020 15:04:05 +0100 Subject: [PATCH 1/3] Fixed issue with Batman Arcade game --- src/ISOExtract.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/ISOExtract.cpp b/src/ISOExtract.cpp index 39599e0..2ea4f85 100644 --- a/src/ISOExtract.cpp +++ b/src/ISOExtract.cpp @@ -29,6 +29,9 @@ #include #include "ISOExtract.h" #include "iso.h" +#include +#include +#include #ifndef _WIN32 #include @@ -549,7 +552,7 @@ enum errorcode ISOExtractClass::extractFiles(dirrec_struct *dirrec, uint32_t num #endif for (i = 0; i < numdirrec; i++) - { + { bool mpegMultiplexDemux=false; if (!(dirrec[i].FileFlags & ISOATTR_DIRECTORY)) { @@ -558,7 +561,8 @@ enum errorcode ISOExtractClass::extractFiles(dirrec_struct *dirrec, uint32_t num int trackindex=0; // Check first sector to make sure it isn't a CDDA track - trackinfo_struct *track = FADToTrack((dirrec[i].LocationOfExtentL-cdinfo.trackinfo[trackindex].fileoffset / 2048)+150); + unsigned int fad = (dirrec[i].LocationOfExtentL - cdinfo.trackinfo[trackindex].fileoffset) / 2048; + trackinfo_struct *track = FADToTrack(fad+150); if (track->type == TT_CDDA) { dirrec[i].XAAttributes.attributes = 0x4111; @@ -576,12 +580,11 @@ enum errorcode ISOExtractClass::extractFiles(dirrec_struct *dirrec, uint32_t num mpegMultiplexDemux = true; #endif } - + if (dirrec[i].ParentRecord != 0xFFFFFFFF) { dirrec_struct *parent=&dirrec[dirrec[i].ParentRecord]; strcpy(filename3, (char *)dirrec[i].FileIdentifier); - for(;;) { sprintf(filename2, "%s%c%s", parent->FileIdentifier, FILE_SEPARATOR, filename3); @@ -636,10 +639,13 @@ enum errorcode ISOExtractClass::extractFiles(dirrec_struct *dirrec, uint32_t num { if (detailedStatus) printf("\r%s:(%ld/%ld)", dirrec[i].FileIdentifier, i2 / 2048, dirrec[i].DataLengthL / 2048); - if (!readUserSector(dirrec[i].LocationOfExtentL-cdinfo.trackinfo[trackindex].fileoffset + i2 / 2048, sector, &readsize, track, §orinfo)) + int offset = dirrec[i].LocationOfExtentL - cdinfo.trackinfo[trackindex].fileoffset + (i2 / 2048); + if (!readUserSector(offset, sector, &readsize, track, §orinfo)) { - err = ERR_READ; - goto error; + printf("WARNING: Could not read User sector for file: SKIPPING\n"); + // err = ERR_READ; + // goto error; + break; } FILE *curOutput=NULL; From 141e05e233b474b6b3fdc3d70e23c4a50fb0430f Mon Sep 17 00:00:00 2001 From: A <> Date: Sat, 23 May 2020 15:07:11 +0100 Subject: [PATCH 2/3] removed inclujdes not longer required --- src/ISOExtract.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/ISOExtract.cpp b/src/ISOExtract.cpp index 2ea4f85..c6b3a01 100644 --- a/src/ISOExtract.cpp +++ b/src/ISOExtract.cpp @@ -29,9 +29,6 @@ #include #include "ISOExtract.h" #include "iso.h" -#include -#include -#include #ifndef _WIN32 #include From e6cdc69db3e9f94d602b1e7ba8ac95bb00985a3c Mon Sep 17 00:00:00 2001 From: A <> Date: Sat, 23 May 2020 15:10:45 +0100 Subject: [PATCH 3/3] Added name into warning message --- src/ISOExtract.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ISOExtract.cpp b/src/ISOExtract.cpp index c6b3a01..471cb57 100644 --- a/src/ISOExtract.cpp +++ b/src/ISOExtract.cpp @@ -639,7 +639,7 @@ enum errorcode ISOExtractClass::extractFiles(dirrec_struct *dirrec, uint32_t num int offset = dirrec[i].LocationOfExtentL - cdinfo.trackinfo[trackindex].fileoffset + (i2 / 2048); if (!readUserSector(offset, sector, &readsize, track, §orinfo)) { - printf("WARNING: Could not read User sector for file: SKIPPING\n"); + printf("\nWARNING: Could not read User sector for file: %s SKIPPING\n\n", dirrec[i].FileIdentifier); // err = ERR_READ; // goto error; break;