mirror of https://github.com/PCSX2/pcsx2.git
CDVD: Added missing busy/ready checks
This commit is contained in:
parent
8637f8ee9b
commit
99bb35f109
|
@ -1668,6 +1668,7 @@ static void cdvdWrite04(u8 rt)
|
||||||
{
|
{
|
||||||
case N_CD_SYNC: // CdSync
|
case N_CD_SYNC: // CdSync
|
||||||
case N_CD_NOP: // CdNop_
|
case N_CD_NOP: // CdNop_
|
||||||
|
cdvd.Ready = CDVD_DRIVE_READY | CDVD_DRIVE_DEV9CON;
|
||||||
cdvdSetIrq();
|
cdvdSetIrq();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1675,7 +1676,7 @@ static void cdvdWrite04(u8 rt)
|
||||||
|
|
||||||
// Seek to sector zero. The cdvdStartSeek function will simulate
|
// Seek to sector zero. The cdvdStartSeek function will simulate
|
||||||
// spinup times if needed.
|
// spinup times if needed.
|
||||||
|
cdvd.Ready = CDVD_DRIVE_BUSY | CDVD_DRIVE_DEV9CON;
|
||||||
DevCon.Warning("CdStandby : %d", rt);
|
DevCon.Warning("CdStandby : %d", rt);
|
||||||
cdvd.Action = cdvdAction_Standby;
|
cdvd.Action = cdvdAction_Standby;
|
||||||
cdvd.ReadTime = cdvdBlockReadTime((CDVD_MODE_TYPE)cdvdIsDVD());
|
cdvd.ReadTime = cdvdBlockReadTime((CDVD_MODE_TYPE)cdvdIsDVD());
|
||||||
|
@ -1688,6 +1689,7 @@ static void cdvdWrite04(u8 rt)
|
||||||
case N_CD_STOP: // CdStop
|
case N_CD_STOP: // CdStop
|
||||||
DevCon.Warning("CdStop : %d", rt);
|
DevCon.Warning("CdStop : %d", rt);
|
||||||
cdvd.Action = cdvdAction_Stop;
|
cdvd.Action = cdvdAction_Stop;
|
||||||
|
cdvd.Ready = CDVD_DRIVE_BUSY | CDVD_DRIVE_DEV9CON;
|
||||||
cdvd.nextSectorsBuffered = 0;
|
cdvd.nextSectorsBuffered = 0;
|
||||||
psxRegs.interrupt &= ~(1 << IopEvt_CdvdSectorReady);
|
psxRegs.interrupt &= ~(1 << IopEvt_CdvdSectorReady);
|
||||||
cdvdUpdateStatus(CDVD_STATUS_SPIN);
|
cdvdUpdateStatus(CDVD_STATUS_SPIN);
|
||||||
|
@ -1708,6 +1710,7 @@ static void cdvdWrite04(u8 rt)
|
||||||
|
|
||||||
case N_CD_SEEK: // CdSeek
|
case N_CD_SEEK: // CdSeek
|
||||||
cdvd.Action = cdvdAction_Seek;
|
cdvd.Action = cdvdAction_Seek;
|
||||||
|
cdvd.Ready = CDVD_DRIVE_BUSY | CDVD_DRIVE_DEV9CON;
|
||||||
cdvd.ReadTime = cdvdBlockReadTime((CDVD_MODE_TYPE)cdvdIsDVD());
|
cdvd.ReadTime = cdvdBlockReadTime((CDVD_MODE_TYPE)cdvdIsDVD());
|
||||||
CDVD_INT(cdvdStartSeek(*(uint*)(cdvd.Param + 0), (CDVD_MODE_TYPE)cdvdIsDVD()));
|
CDVD_INT(cdvdStartSeek(*(uint*)(cdvd.Param + 0), (CDVD_MODE_TYPE)cdvdIsDVD()));
|
||||||
cdvdUpdateStatus(CDVD_STATUS_SEEK);
|
cdvdUpdateStatus(CDVD_STATUS_SEEK);
|
||||||
|
@ -1936,6 +1939,7 @@ static void cdvdWrite04(u8 rt)
|
||||||
cdvdSetIrq();
|
cdvdSetIrq();
|
||||||
HW_DMA3_CHCR &= ~0x01000000;
|
HW_DMA3_CHCR &= ~0x01000000;
|
||||||
psxDmaInterrupt(3);
|
psxDmaInterrupt(3);
|
||||||
|
cdvd.Ready = CDVD_DRIVE_READY | CDVD_DRIVE_DEV9CON;
|
||||||
//After reading the TOC it needs to go back to buffer the next sector
|
//After reading the TOC it needs to go back to buffer the next sector
|
||||||
cdvdUpdateStatus(CDVD_STATUS_PAUSE);
|
cdvdUpdateStatus(CDVD_STATUS_PAUSE);
|
||||||
cdvd.nextSectorsBuffered = 0;
|
cdvd.nextSectorsBuffered = 0;
|
||||||
|
@ -1953,6 +1957,7 @@ static void cdvdWrite04(u8 rt)
|
||||||
cdvdSetIrq();
|
cdvdSetIrq();
|
||||||
//After reading the key it needs to go back to buffer the next sector
|
//After reading the key it needs to go back to buffer the next sector
|
||||||
cdvdUpdateStatus(CDVD_STATUS_PAUSE);
|
cdvdUpdateStatus(CDVD_STATUS_PAUSE);
|
||||||
|
cdvd.Ready = CDVD_DRIVE_READY | CDVD_DRIVE_DEV9CON;
|
||||||
cdvd.nextSectorsBuffered = 0;
|
cdvd.nextSectorsBuffered = 0;
|
||||||
CDVDSECTORREADY_INT(cdvd.ReadTime);
|
CDVDSECTORREADY_INT(cdvd.ReadTime);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue