implemented sceKernelGetProcessTime

This commit is contained in:
georgemoralis
2023-10-30 08:48:52 +02:00
parent f732704b83
commit 758ef332f2
7 changed files with 46 additions and 2 deletions

View File

@@ -2,6 +2,7 @@
#include <Core/PS4/HLE/LibKernel.h>
#include <debug.h>
#include <Core/hle/libraries/libkernel/time_management.h>
namespace HLE::Graphics::Objects {
@@ -120,7 +121,7 @@ bool FlipQueue::flip(u32 micros) {
m_done_cond.notify_one();
request->cfg->m_flip_status.count++;
// TODO request.cfg->m_flip_status.processTime = LibKernel::KernelGetProcessTime();
request->cfg->m_flip_status.processTime = Core::Libraries::sceKernelGetProcessTime();
request->cfg->m_flip_status.tsc = HLE::Libs::LibKernel::sceKernelReadTsc();
request->cfg->m_flip_status.submitTsc = request->submit_tsc;
request->cfg->m_flip_status.flipArg = request->flip_arg;

View File

@@ -0,0 +1,14 @@
#include "time_management.h"
#include <Core/PS4/HLE/Libs.h>
#include "emuTimer.h"
namespace Core::Libraries {
u64 sceKernelGetProcessTime() {
return static_cast<u64>(Emulator::emuTimer::getTimeMsec() * 1000.0); // return time in microseconds
}
void timeSymbolsRegister(SymbolsResolver* sym) { LIB_FUNCTION("4J2sUJmuHZQ", "libkernel", 1, "libkernel", 1, 1, sceKernelGetProcessTime); }
} // namespace Core::Libraries

View File

@@ -0,0 +1,10 @@
#pragma once
#include "types.h"
#include "Core/PS4/Loader/SymbolsResolver.h"
namespace Core::Libraries {
u64 sceKernelGetProcessTime();
void timeSymbolsRegister(SymbolsResolver* sym);
}

10
src/emuTimer.cpp Normal file
View File

@@ -0,0 +1,10 @@
#include "Lib/Timer.h"
namespace Emulator::emuTimer {
static Lib::Timer timer;
void start() { timer.Start(); }
double getTimeMsec() { return timer.GetTimeMsec(); }
}

7
src/emuTimer.h Normal file
View File

@@ -0,0 +1,7 @@
#pragma once
namespace Emulator::emuTimer {
void start();
double getTimeMsec();
} // namespace Emulator::emuTimer

View File

@@ -13,6 +13,7 @@
#include "Core/PS4/Linker.h"
#include "Emulator/Util\singleton.h"
#include "discord.h"
#include "emuTimer.h"
// Main code
int main(int argc, char* argv[]) {
@@ -26,6 +27,7 @@ int main(int argc, char* argv[]) {
auto height = Config::getScreenHeight();
Emu::emuInit(width, height);
HLE::Libs::Graphics::VideoOut::videoOutInit(width, height);
Emulator::emuTimer::start();
const char* const path = argv[1]; // argument 1 is the path of self file to boot