From de86d539f2c437600ae13a3adafe9ad2f20e06a0 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sat, 3 Jan 2015 10:28:57 +0100 Subject: [PATCH] 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. --- Source/Core/Core/HW/DVDInterface.cpp | 20 +++++++------------ .../Core/IPC_HLE/WII_IPC_HLE_Device_DI.cpp | 3 --- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/Source/Core/Core/HW/DVDInterface.cpp b/Source/Core/Core/HW/DVDInterface.cpp index 860c0ce4d4..be23b62d19 100644 --- a/Source/Core/Core/HW/DVDInterface.cpp +++ b/Source/Core/Core/HW/DVDInterface.cpp @@ -544,18 +544,9 @@ 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); - } + + // The transfer is finished after a delay + CoreTiming::ScheduleEvent((int)result.ticks_until_completion, tc, result.interrupt_type); } }) ); @@ -621,7 +612,10 @@ DVDCommandResult ExecuteReadCommand(u64 DVD_offset, u32 output_address, } DVDCommandResult result; - result.ticks_until_completion = SimulateDiscReadTime(DVD_offset, DVD_length); + 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) { diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_DI.cpp b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_DI.cpp index 9628afde9b..6592b54881 100644 --- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_DI.cpp +++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_DI.cpp @@ -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 }; }