X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fcdriso.c;h=e46901cd36ffbc3c0da10fdacbb50e0d845b1039;hb=1f665cddc3500efa9a508a016fe656d570f1ee6a;hp=d42132274b720b827fb70b4e8de5dc6649329334;hpb=1290ebe47bb6af9a832b438422c4d0e94deca4a7;p=pcsx_rearmed.git diff --git a/libpcsxcore/cdriso.c b/libpcsxcore/cdriso.c index d4213227..e46901cd 100644 --- a/libpcsxcore/cdriso.c +++ b/libpcsxcore/cdriso.c @@ -70,16 +70,13 @@ static unsigned char subbuffer[SUB_FRAMESIZE]; static boolean playing = FALSE; static boolean cddaBigEndian = FALSE; -// cdda sectors in toc, byte offset in file -static unsigned int cdda_cur_sector; -static unsigned int cdda_file_offset; /* Frame offset into CD image where pregap data would be found if it was there. * If a game seeks there we must *not* return subchannel data since it's * not in the CD image, so that cdrom code can fake subchannel data instead. * XXX: there could be multiple pregaps but PSX dumps only have one? */ static unsigned int pregapOffset; -#define cddaCurPos cdda_cur_sector +static unsigned int cddaCurPos; // compressed image stuff static struct { @@ -1423,6 +1420,7 @@ static int cdread_chd(FILE *f, unsigned int base, void *dest, int sector) return CD_FRAMESIZE_RAW; } #endif + static int cdread_2048(FILE *f, unsigned int base, void *dest, int sector) { int ret; @@ -1435,7 +1433,7 @@ static int cdread_2048(FILE *f, unsigned int base, void *dest, int sector) sec2msf(sector + 2 * 75, (char *)&cdbuffer[12]); cdbuffer[12 + 3] = 1; - return ret; + return 12*2 + ret; } #ifndef _WIN32 @@ -1652,8 +1650,6 @@ static long CALLBACK ISOopen(void) { if (numtracks > 1 && ti[1].handle == NULL) { ti[1].handle = fopen(bin_filename, "rb"); } - cdda_cur_sector = 0; - cdda_file_offset = 0; if (Config.AsyncCD) { readThreadStart(); @@ -1805,7 +1801,7 @@ static boolean CALLBACK ISOreadTrack(unsigned char *time) { } ret = cdimg_read_func(cdHandle, 0, cdbuffer, sector); - if (ret < 0) + if (ret < 12*2 + 2048) return 0; if (subHandle != NULL) {