int sceRtcGetTime64_t(u32 datePtr, u32 timePtr) { DEBUG_LOG(HLE, "sceRtcGetTime64_t(%08x,%08x)", datePtr, timePtr); if (Memory::IsValidAddress(datePtr)&&Memory::IsValidAddress(timePtr)) { ScePspDateTime pt; Memory::ReadStruct(datePtr, &pt); u64 result = (__RtcPspTimeToTicks(pt)-rtcMagicOffset)/1000000ULL; Memory::Write_U64(result, timePtr); } else { return 1; } return 0; }
static int sceRtcGetTime_t(u32 datePtr, u32 timePtr) { DEBUG_LOG(SCERTC, "sceRtcGetTime_t(%08x,%08x)", datePtr, timePtr); if (Memory::IsValidAddress(datePtr)&&Memory::IsValidAddress(timePtr)) { ScePspDateTime pt; Memory::ReadStructUnchecked(datePtr, &pt); u32 result = (u32) ((__RtcPspTimeToTicks(pt)-rtcMagicOffset)/1000000ULL); Memory::Write_U32(result, timePtr); } else { return 1; } return 0; }
u32 sceRtcGetTick(u32 pspTimePtr, u32 tickPtr) { DEBUG_LOG(HLE, "sceRtcGetTick(%08x, %08x)", pspTimePtr, tickPtr); ScePspDateTime pt; if (Memory::IsValidAddress(pspTimePtr) && Memory::IsValidAddress(tickPtr)) { Memory::ReadStruct(pspTimePtr, &pt); if (!__RtcValidatePspTime(pt)) return SCE_KERNEL_ERROR_INVALID_VALUE; u64 result = __RtcPspTimeToTicks(pt); Memory::Write_U64(result, tickPtr); } return 0; }