mirror of https://github.com/PCSX2/pcsx2.git
CDVD: Don't auto mount disc again if game ejects it.
This commit is contained in:
parent
caf8eedd76
commit
72b38ce712
|
@ -681,20 +681,11 @@ s32 cdvdCtrlTrayOpen()
|
||||||
}
|
}
|
||||||
|
|
||||||
cdvdDetectDisk();
|
cdvdDetectDisk();
|
||||||
|
|
||||||
DiscSwapTimerSeconds = cdvd.RTC.second; // remember the PS2 time when this happened
|
|
||||||
cdvdUpdateStatus(CDVD_STATUS_TRAY_OPEN);
|
cdvdUpdateStatus(CDVD_STATUS_TRAY_OPEN);
|
||||||
cdvdUpdateReady(0);
|
cdvdUpdateReady(0);
|
||||||
cdvd.Spinning = false;
|
cdvd.Spinning = false;
|
||||||
cdvdSetIrq(1 << Irq_Eject);
|
cdvdSetIrq(1 << Irq_Eject);
|
||||||
|
|
||||||
if (cdvd.Type > 0 || CDVDsys_GetSourceType() == CDVD_SourceType::NoDisc)
|
|
||||||
{
|
|
||||||
cdvd.Tray.cdvdActionSeconds = 3;
|
|
||||||
cdvd.Tray.trayState = CDVD_DISC_EJECT;
|
|
||||||
DevCon.WriteLn(Color_Green, "Simulating ejected media");
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0; // needs to be 0 for success according to homebrew test "CDVD"
|
return 0; // needs to be 0 for success according to homebrew test "CDVD"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1446,6 +1437,16 @@ void cdvdUpdateTrayState()
|
||||||
{
|
{
|
||||||
switch (cdvd.Tray.trayState)
|
switch (cdvd.Tray.trayState)
|
||||||
{
|
{
|
||||||
|
case CDVD_DISC_OPEN:
|
||||||
|
cdvdCtrlTrayOpen();
|
||||||
|
if (cdvd.Type > 0 || CDVDsys_GetSourceType() == CDVD_SourceType::NoDisc)
|
||||||
|
{
|
||||||
|
cdvd.Tray.cdvdActionSeconds = 3;
|
||||||
|
cdvd.Tray.trayState = CDVD_DISC_EJECT;
|
||||||
|
DevCon.WriteLn(Color_Green, "Simulating ejected media");
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
case CDVD_DISC_EJECT:
|
case CDVD_DISC_EJECT:
|
||||||
cdvdCtrlTrayClose();
|
cdvdCtrlTrayClose();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -81,7 +81,8 @@ enum TrayStates
|
||||||
CDVD_DISC_ENGAGED,
|
CDVD_DISC_ENGAGED,
|
||||||
CDVD_DISC_DETECTING,
|
CDVD_DISC_DETECTING,
|
||||||
CDVD_DISC_SEEKING,
|
CDVD_DISC_SEEKING,
|
||||||
CDVD_DISC_EJECT
|
CDVD_DISC_EJECT,
|
||||||
|
CDVD_DISC_OPEN
|
||||||
};
|
};
|
||||||
|
|
||||||
struct cdvdTrayTimer
|
struct cdvdTrayTimer
|
||||||
|
|
|
@ -170,7 +170,6 @@ static const uint DVD_MAX_ROTATION_X1 = 1515;
|
||||||
|
|
||||||
static const uint Cdvd_FullSeek_Cycles = (PSXCLK * 100) / 1000; // average number of cycles per fullseek (100ms)
|
static const uint Cdvd_FullSeek_Cycles = (PSXCLK * 100) / 1000; // average number of cycles per fullseek (100ms)
|
||||||
static const uint Cdvd_FastSeek_Cycles = (PSXCLK * 30) / 1000; // average number of cycles per fastseek (37ms)
|
static const uint Cdvd_FastSeek_Cycles = (PSXCLK * 30) / 1000; // average number of cycles per fastseek (37ms)
|
||||||
short DiscSwapTimerSeconds = 0;
|
|
||||||
bool trayState = 0; // Used to check if the CD tray status has changed since the last time
|
bool trayState = 0; // Used to check if the CD tray status has changed since the last time
|
||||||
|
|
||||||
static const char* mg_zones[8] = {"Japan", "USA", "Europe", "Oceania", "Asia", "Russia", "China", "Mexico"};
|
static const char* mg_zones[8] = {"Japan", "USA", "Europe", "Oceania", "Asia", "Russia", "China", "Mexico"};
|
||||||
|
|
|
@ -1522,8 +1522,8 @@ bool VMManager::ChangeDisc(CDVD_SourceType source, std::string path)
|
||||||
DoCDVDopen();
|
DoCDVDopen();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
cdvd.Tray.cdvdActionSeconds = 1;
|
||||||
cdvdCtrlTrayOpen();
|
cdvd.Tray.trayState = CDVD_DISC_OPEN;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue