summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorskidau <skidau@gmail.com>2014-11-20 19:24:58 +1100
committerskidau <skidau@gmail.com>2014-11-20 19:24:58 +1100
commitda962a3d2b035875518df079fd286337e85de371 (patch)
tree399ae344f0fd92adcce9ff91d5da7fcc409a7554 /Source/Core
parentba1a8d2ef3e5dd602fa9ac054bcc787d7b400b16 (diff)
parent2968cb138c3948a12eff278c33364a371bbc4fee (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.cpp15
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.