mirror of
https://github.com/citra-emu/citra.git
synced 2024-11-25 23:20:15 +00:00
core: fix removed AddTicks
This commit is contained in:
parent
51dd13b8a0
commit
d69f82c2fb
@ -109,6 +109,12 @@ System::ResultStatus System::Load(EmuWindow* emu_window, const std::string& file
|
||||
}
|
||||
|
||||
void System::PrepareReschedule() {
|
||||
// TODO(bunnei): It seems that games depend on some CPU execution time elapsing during HLE
|
||||
// routines. This simulates that time by artificially advancing the number of CPU "ticks".
|
||||
// The value was chosen empirically, it seems to work well enough for everything tested, but
|
||||
// is likely not ideal. We should find a more accurate way to simulate timing with HLE.
|
||||
cpu_core->AddTicks(4000);
|
||||
|
||||
cpu_core->PrepareReschedule();
|
||||
reschedule_pending = true;
|
||||
}
|
||||
|
@ -1,58 +0,0 @@
|
||||
// Copyright 2014 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "common/assert.h"
|
||||
#include "common/logging/log.h"
|
||||
#include "core/arm/arm_interface.h"
|
||||
#include "core/core.h"
|
||||
#include "core/hle/hle.h"
|
||||
#include "core/hle/service/service.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
namespace {
|
||||
|
||||
bool reschedule; ///< If true, immediately reschedules the CPU to a new thread
|
||||
}
|
||||
|
||||
namespace HLE {
|
||||
|
||||
void Reschedule(const char* reason) {
|
||||
DEBUG_ASSERT_MSG(reason != nullptr && strlen(reason) < 256,
|
||||
"Reschedule: Invalid or too long reason.");
|
||||
|
||||
// TODO(bunnei): It seems that games depend on some CPU execution time elapsing during HLE
|
||||
// routines. This simulates that time by artificially advancing the number of CPU "ticks".
|
||||
// The value was chosen empirically, it seems to work well enough for everything tested, but
|
||||
// is likely not ideal. We should find a more accurate way to simulate timing with HLE.
|
||||
Core::AppCore().AddTicks(4000);
|
||||
|
||||
Core::AppCore().PrepareReschedule();
|
||||
|
||||
reschedule = true;
|
||||
}
|
||||
|
||||
bool IsReschedulePending() {
|
||||
return reschedule;
|
||||
}
|
||||
|
||||
void DoneRescheduling() {
|
||||
reschedule = false;
|
||||
}
|
||||
|
||||
void Init() {
|
||||
Service::Init();
|
||||
|
||||
reschedule = false;
|
||||
|
||||
LOG_DEBUG(Kernel, "initialized OK");
|
||||
}
|
||||
|
||||
void Shutdown() {
|
||||
Service::Shutdown();
|
||||
|
||||
LOG_DEBUG(Kernel, "shutdown OK");
|
||||
}
|
||||
|
||||
} // namespace
|
Loading…
Reference in New Issue
Block a user