mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Make realistic timing optional.
This commit is contained in:
parent
8f3a8fd233
commit
efae9e0612
2 changed files with 20 additions and 18 deletions
|
@ -328,13 +328,13 @@ static void __IoAsyncNotify(u64 userdata, int cyclesLate) {
|
|||
CoreTiming::ScheduleEvent(usToCycles(500) - cyclesLate, asyncNotifyEvent, userdata);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
u64 finishTicks = __IoCompleteAsyncIO(f);
|
||||
if (finishTicks > CoreTiming::GetTicks()) {
|
||||
// Reschedule for later, since we now know how long it ought to take.
|
||||
CoreTiming::ScheduleEvent(finishTicks - CoreTiming::GetTicks(), asyncNotifyEvent, userdata);
|
||||
return;
|
||||
} else if (g_Config.iIOTimingMethod == IOTIMING_REALISTIC) {
|
||||
u64 finishTicks = __IoCompleteAsyncIO(f);
|
||||
if (finishTicks > CoreTiming::GetTicks()) {
|
||||
// Reschedule for later, since we now know how long it ought to take.
|
||||
CoreTiming::ScheduleEvent(finishTicks - CoreTiming::GetTicks(), asyncNotifyEvent, userdata);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (f->waitingThreads.empty()) {
|
||||
|
@ -379,13 +379,13 @@ static void __IoSyncNotify(u64 userdata, int cyclesLate) {
|
|||
CoreTiming::ScheduleEvent(usToCycles(500) - cyclesLate, syncNotifyEvent, userdata);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
u64 finishTicks = ioManager.ResultFinishTicks(f->handle);
|
||||
if (finishTicks > CoreTiming::GetTicks()) {
|
||||
// Reschedule for later when the result should finish.
|
||||
CoreTiming::ScheduleEvent(finishTicks - CoreTiming::GetTicks(), syncNotifyEvent, userdata);
|
||||
return;
|
||||
} else if (g_Config.iIOTimingMethod == IOTIMING_REALISTIC) {
|
||||
u64 finishTicks = ioManager.ResultFinishTicks(f->handle);
|
||||
if (finishTicks > CoreTiming::GetTicks()) {
|
||||
// Reschedule for later when the result should finish.
|
||||
CoreTiming::ScheduleEvent(finishTicks - CoreTiming::GetTicks(), syncNotifyEvent, userdata);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
f->pendingAsyncResult = false;
|
||||
|
@ -610,9 +610,11 @@ static u32 sceKernelStderr() {
|
|||
}
|
||||
|
||||
u64 __IoCompleteAsyncIO(FileNode *f) {
|
||||
u64 finishTicks = ioManager.ResultFinishTicks(f->handle);
|
||||
if (finishTicks > CoreTiming::GetTicks()) {
|
||||
return finishTicks;
|
||||
if (g_Config.iIOTimingMethod == IOTIMING_REALISTIC) {
|
||||
u64 finishTicks = ioManager.ResultFinishTicks(f->handle);
|
||||
if (finishTicks > CoreTiming::GetTicks()) {
|
||||
return finishTicks;
|
||||
}
|
||||
}
|
||||
AsyncIOResult managerResult;
|
||||
if (ioManager.WaitResult(f->handle, managerResult)) {
|
||||
|
|
|
@ -392,7 +392,7 @@ void GameSettingsScreen::CreateViews() {
|
|||
|
||||
systemSettings->Add(new CheckBox(&g_Config.bSeparateCPUThread, s->T("Multithreaded (experimental)")));
|
||||
systemSettings->Add(new CheckBox(&g_Config.bSeparateIOThread, s->T("I/O on thread (experimental)")))->SetEnabled(!PSP_IsInited());
|
||||
static const char *ioTimingMethods[] = { "Fast (lag on slow storage)", "Host (bugs, less lag)" };
|
||||
static const char *ioTimingMethods[] = { "Fast (lag on slow storage)", "Host (bugs, less lag)", "Simulate UMD delays" };
|
||||
View *ioTimingMethod = systemSettings->Add(new PopupMultiChoice(&g_Config.iIOTimingMethod, s->T("IO timing method"), ioTimingMethods, 0, ARRAY_SIZE(ioTimingMethods), s, screenManager()));
|
||||
ioTimingMethod->SetEnabledPtr(&g_Config.bSeparateIOThread);
|
||||
systemSettings->Add(new CheckBox(&g_Config.bForceLagSync, s->T("Force real clock sync (slower, less lag)")));
|
||||
|
|
Loading…
Add table
Reference in a new issue