GE Debugger: Fix replay timing drift.

This commit is contained in:
Unknown W. Brackets 2017-06-04 20:08:17 -07:00
parent 7e26c75a27
commit 73fd75c0e2
2 changed files with 9 additions and 2 deletions

View File

@ -573,6 +573,10 @@ void ForceCheck()
currentMIPS->downcount = -1;
// But let's not eat a bunch more time in Advance() because of this.
slicelength = -1;
#ifdef _DEBUG
_dbg_assert_msg_(CPU, cyclesExecuted >= 0, "Shouldn't have a negative cyclesExecuted");
#endif
}
void Advance()
@ -613,7 +617,7 @@ void LogPendingEvents()
Event *ptr = first;
while (ptr)
{
//INFO_LOG(TIMER, "PENDING: Now: %lld Pending: %lld Type: %d", globalTimer, ptr->time, ptr->type);
//INFO_LOG(CPU, "PENDING: Now: %lld Pending: %lld Type: %d", globalTimer, ptr->time, ptr->type);
ptr = ptr->next;
}
}

View File

@ -767,7 +767,10 @@ static bool ExecuteSubmitCmds(void *p, u32 sz) {
execListQueue.clear();
gpu->UpdateStall(execListID, execListPos);
currentMIPS->downcount -= gpu->GetListTicks(execListID) - CoreTiming::GetTicks();
s64 listTicks = gpu->GetListTicks(execListID);
if (listTicks != -1) {
currentMIPS->downcount -= listTicks - CoreTiming::GetTicks();
}
// Make sure downcount doesn't overflow.
CoreTiming::ForceCheck();