diff --git a/Core/HLE/HLETables.cpp b/Core/HLE/HLETables.cpp index 7a8aba3661..a957fed180 100644 --- a/Core/HLE/HLETables.cpp +++ b/Core/HLE/HLETables.cpp @@ -75,7 +75,7 @@ const HLEFunction FakeSysCalls[] = const HLEFunction UtilsForUser[] = { {0x91E4F6A7, WrapU_V, "sceKernelLibcClock"}, - {0x27CC57F0, sceKernelLibcTime, "sceKernelLibcTime"}, + {0x27CC57F0, WrapU_U, "sceKernelLibcTime"}, {0x71EC4271, sceKernelLibcGettimeofday, "sceKernelLibcGettimeofday"}, {0xBFA98062, WrapV_UI, "sceKernelDcacheInvalidateRange"}, {0xC8186A58, 0, "sceKernelUtilsMd5Digest"}, diff --git a/Core/HLE/sceKernelTime.cpp b/Core/HLE/sceKernelTime.cpp index e7c6be0c4a..4ac9d0007a 100644 --- a/Core/HLE/sceKernelTime.cpp +++ b/Core/HLE/sceKernelTime.cpp @@ -112,14 +112,17 @@ u32 sceKernelLibcClock() return retVal; } -void sceKernelLibcTime() +u32 sceKernelLibcTime(u32 outPtr) { - time_t *t = 0; - if (PARAM(0)) - t = (time_t*)Memory::GetPointer(PARAM(0)); - u32 retVal = (u32)time(t); - DEBUG_LOG(HLE,"%i = sceKernelLibcTime()",retVal); - RETURN(retVal); + time_t t; + time(&t); + + DEBUG_LOG(HLE, "%i = sceKernelLibcTime(%08X)", (u32) t, outPtr); + + if (Memory::IsValidAddress(outPtr)) + Memory::Write_U32((u32) t, outPtr); + + return (u32) t; } void sceKernelLibcGettimeofday() diff --git a/Core/HLE/sceKernelTime.h b/Core/HLE/sceKernelTime.h index bf53e76b5f..f615782c2f 100644 --- a/Core/HLE/sceKernelTime.h +++ b/Core/HLE/sceKernelTime.h @@ -18,7 +18,7 @@ #pragma once void sceKernelLibcGettimeofday(); -void sceKernelLibcTime(); +u32 sceKernelLibcTime(u32 outPtr); void sceKernelUSec2SysClock(); void sceKernelGetSystemTime(); void sceKernelGetSystemTimeLow();