DVDInterface: Move fast disc speed check to ExecuteReadCommand
This breaks the workaround used for Star Wars: Rouge Leader, but that problem has gotten a more proper solution in 4.0-4889.
This commit is contained in:
parent
7df55d220f
commit
de86d539f2
|
@ -544,19 +544,10 @@ void RegisterMMIO(MMIO::Mapping* mmio, u32 base)
|
|||
DVDCommandResult result = ExecuteCommand(
|
||||
m_DICMDBUF[0].Hex, m_DICMDBUF[1].Hex, m_DICMDBUF[2].Hex,
|
||||
m_DIMAR.Hex, m_DILENGTH.Hex, true);
|
||||
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bFastDiscSpeed)
|
||||
{
|
||||
// Make sure fast disc speed performs "instant" reads; in addition
|
||||
// to being used to speed up games, fast disc speed is used as a
|
||||
// workaround for crashes in Star Wars Rogue Leader.
|
||||
TransferComplete(result.interrupt_type, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
// The transfer is finished after a delay
|
||||
CoreTiming::ScheduleEvent((int)result.ticks_until_completion, tc, result.interrupt_type);
|
||||
}
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
|
@ -621,6 +612,9 @@ DVDCommandResult ExecuteReadCommand(u64 DVD_offset, u32 output_address,
|
|||
}
|
||||
|
||||
DVDCommandResult result;
|
||||
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bFastDiscSpeed)
|
||||
result.ticks_until_completion = 0; // An optional hack to speed up loading times
|
||||
else
|
||||
result.ticks_until_completion = SimulateDiscReadTime(DVD_offset, DVD_length);
|
||||
|
||||
if (!g_bDiscInside)
|
||||
|
|
|
@ -67,9 +67,6 @@ IPCCommandResult CWII_IPC_HLE_Device_di::IOCtl(u32 _CommandAddress)
|
|||
BufferOut, BufferOutSize, false);
|
||||
Memory::Write_U32(result.interrupt_type, _CommandAddress + 0x4);
|
||||
|
||||
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bFastDiscSpeed)
|
||||
result.ticks_until_completion = 0; // An optional hack to speed up loading times
|
||||
|
||||
return { true, result.ticks_until_completion };
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue