diff options
| author | skidau <skidau@gmail.com> | 2014-11-20 19:24:58 +1100 |
|---|---|---|
| committer | skidau <skidau@gmail.com> | 2014-11-20 19:24:58 +1100 |
| commit | da962a3d2b035875518df079fd286337e85de371 (patch) | |
| tree | 399ae344f0fd92adcce9ff91d5da7fcc409a7554 /Source/Core | |
| parent | ba1a8d2ef3e5dd602fa9ac054bcc787d7b400b16 (diff) | |
| parent | 2968cb138c3948a12eff278c33364a371bbc4fee (diff) | |
Merge pull request #1578 from skidau/Fix-Fast-Disc-Speed
Fixed the fast disc speed option (immediately service the interrupt instead of going through the scheduler).
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/HW/DVDInterface.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/Source/Core/Core/HW/DVDInterface.cpp b/Source/Core/Core/HW/DVDInterface.cpp index 825c9bce8a..95c26c5fb3 100644 --- a/Source/Core/Core/HW/DVDInterface.cpp +++ b/Source/Core/Core/HW/DVDInterface.cpp @@ -1046,8 +1046,19 @@ void ExecuteCommand() break; } - // The transfer is finished after a delay - CoreTiming::ScheduleEvent((int)ticks_until_TC, tc); + if (ticks_until_TC) + { + // The transfer is finished after a delay + CoreTiming::ScheduleEvent((int)ticks_until_TC, tc); + } + else + { + // transfer is done + m_DICR.TSTART = 0; + m_DILENGTH.Length = 0; + GenerateDIInterrupt(INT_TCINT); + g_ErrorCode = 0; + } } // Simulates the timing aspects of reading data from a disc. |
