diff --git a/src/Core/PS4/HLE/LibKernel.cpp b/src/Core/PS4/HLE/LibKernel.cpp index a9646091..7d246f69 100644 --- a/src/Core/PS4/HLE/LibKernel.cpp +++ b/src/Core/PS4/HLE/LibKernel.cpp @@ -13,6 +13,7 @@ #include "Libs.h" #include "Emulator/HLE/Libraries/LibKernel/FileSystem/file_system.h" #include "Emulator/HLE/Libraries/LibKernel/FileSystem/posix_file_system.h" +#include "Core/hle/libraries/libkernel/time_management.h" namespace HLE::Libs::LibKernel { @@ -50,6 +51,8 @@ void LibKernel_Register(SymbolsResolver* sym) { // fs LIB_FUNCTION("1G3lF1Gg1k8", "libkernel", 1, "libkernel", 1, 1, Emulator::HLE::Libraries::LibKernel::FileSystem::sceKernelOpen); LIB_FUNCTION("wuCroIGjt2g", "libScePosix", 1, "libkernel", 1, 1, Emulator::HLE::Libraries::LibKernel::FileSystem::POSIX::open); + + Core::Libraries::LibKernel::timeSymbolsRegister(sym); } }; // namespace HLE::Libs::LibKernel \ No newline at end of file diff --git a/src/Core/hle/libraries/libkernel/time_management.cpp b/src/Core/hle/libraries/libkernel/time_management.cpp index fa71e557..f7ca9841 100644 --- a/src/Core/hle/libraries/libkernel/time_management.cpp +++ b/src/Core/hle/libraries/libkernel/time_management.cpp @@ -8,7 +8,14 @@ namespace Core::Libraries::LibKernel { u64 sceKernelGetProcessTime() { return static_cast(Emulator::emuTimer::getTimeMsec() * 1000.0); // return time in microseconds } +u64 sceKernelGetProcessTimeCounter() { return Emulator::emuTimer::getTimeCounter(); } -void timeSymbolsRegister(SymbolsResolver* sym) { LIB_FUNCTION("4J2sUJmuHZQ", "libkernel", 1, "libkernel", 1, 1, sceKernelGetProcessTime); } +u64 sceKernelGetProcessTimeCounterFrequency() { return Emulator::emuTimer::getTimeFrequency(); } -} // namespace Core::Libraries +void timeSymbolsRegister(SymbolsResolver* sym) { + LIB_FUNCTION("4J2sUJmuHZQ", "libkernel", 1, "libkernel", 1, 1, sceKernelGetProcessTime); + LIB_FUNCTION("fgxnMeTNUtY", "libkernel", 1, "libkernel", 1, 1, sceKernelGetProcessTimeCounter); + LIB_FUNCTION("BNowx2l588E", "libkernel", 1, "libkernel", 1, 1, sceKernelGetProcessTimeCounterFrequency); +} + +} // namespace Core::Libraries::LibKernel diff --git a/src/emuTimer.cpp b/src/emuTimer.cpp index c4fecfa8..c5d2700c 100644 --- a/src/emuTimer.cpp +++ b/src/emuTimer.cpp @@ -7,4 +7,8 @@ void start() { timer.Start(); } double getTimeMsec() { return timer.GetTimeMsec(); } -} \ No newline at end of file +u64 getTimeCounter() { return timer.GetTicks(); } + +u64 getTimeFrequency() { return timer.GetFrequency(); } + +} // namespace Emulator::emuTimer \ No newline at end of file diff --git a/src/emuTimer.h b/src/emuTimer.h index 2fdef406..bb53f71b 100644 --- a/src/emuTimer.h +++ b/src/emuTimer.h @@ -1,7 +1,9 @@ #pragma once +#include "types.h" namespace Emulator::emuTimer { void start(); double getTimeMsec(); - +u64 getTimeCounter(); +u64 getTimeFrequency(); } // namespace Emulator::emuTimer \ No newline at end of file