X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fcdrom.c;h=41dc1513632b93421a8d86ebd5f96edfae0eb707;hb=e0f25b64cf98406b7059b373b04a18b45e2a0aa7;hp=cace6d90bd381c34280744e793fa71124cf05e4b;hpb=ececcc61fa9115edcc51892a27aaa720d983e23e;p=pcsx_rearmed.git diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c index cace6d90..41dc1513 100644 --- a/libpcsxcore/cdrom.c +++ b/libpcsxcore/cdrom.c @@ -463,7 +463,8 @@ static int ReadTrack(const u8 *time) { CDR_LOG("ReadTrack *** %02x:%02x:%02x\n", tmp[0], tmp[1], tmp[2]); read_ok = CDR_readTrack(tmp); - memcpy(cdr.Prev, tmp, 3); + if (read_ok) + memcpy(cdr.Prev, tmp, 3); if (CheckSBI(time)) return read_ok; @@ -1006,6 +1007,7 @@ void cdrInterrupt(void) { case CdlSeekL + CMD_PART2: case CdlSeekP + CMD_PART2: SetPlaySeekRead(cdr.StatP, 0); + cdr.Result[0] = cdr.StatP; cdr.Stat = Complete; Find_CurTrack(cdr.SetSectorPlay); @@ -1252,7 +1254,6 @@ static void cdrReadInterrupt(void) if (!read_ok) { CDR_LOG_I("cdrReadInterrupt() Log: err\n"); - memset(cdr.Transfer, 0, DATA_SIZE); cdrReadInterruptSetResult(cdr.StatP | STATUS_ERROR); return; } @@ -1517,7 +1518,7 @@ void psxDma3(u32 madr, u32 bcr, u32 chcr) { switch (chcr & 0x71000000) { case 0x11000000: ptr = (u8 *)PSXM(madr); - if (ptr == NULL) { + if (ptr == INVALID_PTR) { CDR_LOG_I("psxDma3() Log: *** DMA 3 *** NULL Pointer!\n"); break; }