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);
}
// Reschedule IRQ
if (cdr.Stat) {
- CDR_INT( 0x100 );
+ SysPrintf("cdrom: stat hack: %02x %x\n", cdr.Irq, cdr.Stat);
+ CDR_INT(0x1000);
return;
}
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;
}