X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=libpcsxcore%2Fcdrom.c;h=d7e36ccb4882cc5a857b074793daf08cd5ec546f;hb=e7e33ef281952a0e413f2c1f969472da5d2b6b37;hp=6b3285c13ee4f443fe6ed9711e19db8e11760ccc;hpb=496d88d4f697ab13e84bf8c40cdac98369bd6a04;p=pcsx_rearmed.git diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c index 6b3285c1..d7e36ccb 100644 --- a/libpcsxcore/cdrom.c +++ b/libpcsxcore/cdrom.c @@ -650,13 +650,18 @@ static void cdrPlayInterrupt_Autopause() void cdrPlayInterrupt() { if (cdr.Seeked == SEEK_DOING_CMD) { + if (cdr.Stat) { + SysPrintf("cdrom: seek stat hack\n"); + CDRMISC_INT(0x1000); + return; + } SetResultSize(1); cdr.StatP |= STATUS_ROTATING; cdr.StatP &= ~STATUS_SEEK; cdr.Result[0] = cdr.StatP; if (cdr.Irq == 0 || cdr.Irq == 0xff) { cdr.Stat = Complete; - if (cdr.Stat != NoIntr) + if (cdr.Reg2 != 0x18) psxHu32ref(0x1070) |= SWAP32(0x4); } @@ -704,7 +709,8 @@ void cdrInterrupt() { // Reschedule IRQ if (cdr.Stat) { - CDR_INT( 0x100 ); + SysPrintf("cdrom: stat hack: %02x %x\n", cdr.Irq, cdr.Stat); + CDR_INT(0x1000); return; } @@ -1294,7 +1300,8 @@ void cdrReadInterrupt() { return; if (cdr.Irq || cdr.Stat) { - CDREAD_INT(0x100); + SysPrintf("cdrom: read stat hack %02x %x\n", cdr.Irq, cdr.Stat); + CDREAD_INT(0x1000); return; }