mirror of https://github.com/PCSX2/pcsx2.git
CDVD: Adjust abort behaviour on action.
This commit is contained in:
parent
c2bd21922f
commit
a7271697a2
|
@ -1146,23 +1146,24 @@ int cdvdReadSector()
|
||||||
// inlined due to being referenced in only one place.
|
// inlined due to being referenced in only one place.
|
||||||
__fi void cdvdActionInterrupt()
|
__fi void cdvdActionInterrupt()
|
||||||
{
|
{
|
||||||
|
u8 ready_status = CDVD_DRIVE_READY;
|
||||||
if (cdvd.AbortRequested)
|
if (cdvd.AbortRequested)
|
||||||
{
|
{
|
||||||
Console.Warning("Action Abort");
|
Console.Warning("Action Abort %d", cdvd.Action);
|
||||||
cdvd.Error = 0x1; // Abort Error
|
cdvd.Error = 0x1; // Abort Error
|
||||||
cdvdUpdateReady(CDVD_DRIVE_READY | CDVD_DRIVE_ERROR);
|
ready_status |= CDVD_DRIVE_ERROR;
|
||||||
|
cdvdUpdateReady(ready_status);
|
||||||
cdvdUpdateStatus(CDVD_STATUS_PAUSE);
|
cdvdUpdateStatus(CDVD_STATUS_PAUSE);
|
||||||
cdvd.WaitingDMA = false;
|
cdvd.WaitingDMA = false;
|
||||||
CDVDCancelReadAhead();
|
CDVDCancelReadAhead();
|
||||||
cdvdSetIrq();
|
psxRegs.interrupt &= ~(1 << IopEvt_Cdvd); // Stop any current reads
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (cdvd.Action)
|
switch (cdvd.Action)
|
||||||
{
|
{
|
||||||
case cdvdAction_Seek:
|
case cdvdAction_Seek:
|
||||||
cdvd.Spinning = true;
|
cdvd.Spinning = true;
|
||||||
cdvdUpdateReady(CDVD_DRIVE_READY);
|
cdvdUpdateReady(ready_status);
|
||||||
cdvd.CurrentSector = cdvd.SeekToSector;
|
cdvd.CurrentSector = cdvd.SeekToSector;
|
||||||
cdvdUpdateStatus(CDVD_STATUS_PAUSE);
|
cdvdUpdateStatus(CDVD_STATUS_PAUSE);
|
||||||
CDVDSECTORREADY_INT(cdvd.ReadTime);
|
CDVDSECTORREADY_INT(cdvd.ReadTime);
|
||||||
|
@ -1171,7 +1172,7 @@ __fi void cdvdActionInterrupt()
|
||||||
case cdvdAction_Standby:
|
case cdvdAction_Standby:
|
||||||
DevCon.Warning("CDVD Standby Call");
|
DevCon.Warning("CDVD Standby Call");
|
||||||
cdvd.Spinning = true; //check (rama)
|
cdvd.Spinning = true; //check (rama)
|
||||||
cdvdUpdateReady(CDVD_DRIVE_READY);
|
cdvdUpdateReady(ready_status);
|
||||||
cdvd.CurrentSector = cdvd.SeekToSector;
|
cdvd.CurrentSector = cdvd.SeekToSector;
|
||||||
cdvdUpdateStatus(CDVD_STATUS_PAUSE);
|
cdvdUpdateStatus(CDVD_STATUS_PAUSE);
|
||||||
cdvd.nextSectorsBuffered = 0;
|
cdvd.nextSectorsBuffered = 0;
|
||||||
|
@ -1180,7 +1181,7 @@ __fi void cdvdActionInterrupt()
|
||||||
|
|
||||||
case cdvdAction_Stop:
|
case cdvdAction_Stop:
|
||||||
cdvd.Spinning = false;
|
cdvd.Spinning = false;
|
||||||
cdvdUpdateReady(CDVD_DRIVE_READY);
|
cdvdUpdateReady(ready_status);
|
||||||
cdvd.CurrentSector = 0;
|
cdvd.CurrentSector = 0;
|
||||||
cdvdUpdateStatus(CDVD_STATUS_STOP);
|
cdvdUpdateStatus(CDVD_STATUS_STOP);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue