X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fcdriso.c;h=515370f756d2a0ec88d232fa9e8ea8382709dc1f;hb=HEAD;hp=660d109cc45c2ebc7283baef7ec620f7922bb551;hpb=f0d80aa4838a05c8e86d99bb1379ba0579794e10;p=pcsx_rearmed.git diff --git a/libpcsxcore/cdriso.c b/libpcsxcore/cdriso.c index 660d109c..cd2d2026 100644 --- a/libpcsxcore/cdriso.c +++ b/libpcsxcore/cdriso.c @@ -60,7 +60,6 @@ static boolean multifile = FALSE; static unsigned char cdbuffer[CD_FRAMESIZE_RAW]; static unsigned char subbuffer[SUB_FRAMESIZE]; -static boolean playing = FALSE; static boolean cddaBigEndian = FALSE; /* 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 @@ -68,8 +67,6 @@ static boolean cddaBigEndian = FALSE; * XXX: there could be multiple pregaps but PSX dumps only have one? */ static unsigned int pregapOffset; -static unsigned int cddaCurPos; - // compressed image stuff static struct { unsigned char buff_raw[16][CD_FRAMESIZE_RAW]; @@ -103,7 +100,7 @@ long CALLBACK CDR__configure(void); long CALLBACK CDR__test(void); void CALLBACK CDR__about(void); long CALLBACK CDR__setfilename(char *filename); -long CALLBACK CDR__getStatus(struct CdrStat *stat); +long CALLBACK CDR__prefetch(u8 m, u8 s, u8 f); static void DecodeRawSubData(void); @@ -220,7 +217,8 @@ static int parsetoc(const char *isofile) { // check if it's really a TOC named as a .cue if (fgets(linebuf, sizeof(linebuf), fi) != NULL) { token = strtok(linebuf, " "); - if (token && strncmp(token, "CD", 2) != 0 && strcmp(token, "CATALOG") != 0) { + if (token && strncmp(token, "CD", 2) != 0) { + // && strcmp(token, "CATALOG") != 0) - valid for a real .cue fclose(fi); return -1; } @@ -1329,7 +1327,7 @@ static unsigned char * CALLBACK ISOgetBuffer_chd(void) { } #endif -static unsigned char * CALLBACK ISOgetBuffer(void) { +unsigned char * CALLBACK ISOgetBuffer(void) { return cdbuffer + 12; } @@ -1338,7 +1336,8 @@ static void PrintTracks(void) { for (i = 1; i <= numtracks; i++) { SysPrintf(_("Track %.2d (%s) - Start %.2d:%.2d:%.2d, Length %.2d:%.2d:%.2d\n"), - i, (ti[i].type == DATA ? "DATA" : "AUDIO"), + i, (ti[i].type == DATA ? "DATA" : + (ti[i].type == CDDA ? "AUDIO" : "UNKNOWN")), ti[i].start[0], ti[i].start[1], ti[i].start[2], ti[i].length[0], ti[i].length[1], ti[i].length[2]); } @@ -1485,7 +1484,6 @@ static long CALLBACK ISOclose(void) { fclose(subHandle); subHandle = NULL; } - playing = FALSE; cddaHandle = NULL; if (compr_img != NULL) { @@ -1617,13 +1615,11 @@ static boolean CALLBACK ISOreadTrack(unsigned char *time) { // sector: byte 0 - minute; byte 1 - second; byte 2 - frame // does NOT uses bcd format static long CALLBACK ISOplay(unsigned char *time) { - playing = TRUE; return 0; } // stops cdda audio static long CALLBACK ISOstop(void) { - playing = FALSE; return 0; } @@ -1654,22 +1650,10 @@ static unsigned char* CALLBACK ISOgetBufferSub(int sector) { } static long CALLBACK ISOgetStatus(struct CdrStat *stat) { - u32 sect; - CDR__getStatus(stat); - if (playing) { - stat->Type = 0x02; - stat->Status |= 0x80; - } - else { - // BIOS - boot ID (CD type) - stat->Type = ti[1].type; - } - - // relative -> absolute time - sect = cddaCurPos; - sec2msf(sect, (char *)stat->Time); + // BIOS - boot ID (CD type) + stat->Type = ti[1].type; return 0; } @@ -1679,6 +1663,7 @@ long CALLBACK ISOreadCDDA(unsigned char m, unsigned char s, unsigned char f, uns unsigned char msf[3] = {m, s, f}; unsigned int track, track_start = 0; FILE *handle = cdHandle; + unsigned int cddaCurPos; int ret; cddaCurPos = msf2sec((char *)msf); @@ -1754,6 +1739,7 @@ void cdrIsoInit(void) { CDR_test = CDR__test; CDR_about = CDR__about; CDR_setfilename = CDR__setfilename; + CDR_prefetch = CDR__prefetch; numtracks = 0; }