2.1 KiB
2.1 KiB
libSceRtc technical debt
Unknown function info
- sceRtcParseDateTime (libSceRtc) - the console's zone name table is only known from the names measured on PS5 firmware 13.60 and 13.42; any other name is assumed to take the military letter offset of its first character, as every measured name outside the table does (
HST,MSK,XYZ), so a name the console's table holds but nobody measured gets the wrong offset - sceRtcParseDateTime (libSceRtc) - a blank zone after seconds is accepted. With fully allocated input storage on PS5 firmware 13.42, the same NUL-terminated text returned
BAD_PARSEwhen the byte after its terminator was zero and succeeded when that byte was uppercaseT. This dependence on storage after the terminator is not modeled; controlled backing-byte measurements on other firmware and title contexts are unavailable. - sceRtcFormatRFC2822, sceRtcFormatRFC2822LocalTime, sceRtcFormatRFC3339LocalTime (libSceRtc) - only shadPS4 (PS4) has bodies. A null tick returns
INVALID_POINTERlike the existingsceRtcFormatRFC3339, where shadPS4 formats the current time instead; offsets outside ±1439 minutes returnINVALID_VALUElikesceRtcFormatRFC3339; the local-time variants use the host's offset at the given instant (shadPS4 usessceKernelGettimezone, the current offset) - sceRtcGetDosTime, sceRtcSetDosTime (libSceRtc) - bit layout from shadPS4 (PS4, the standard FAT date/time). A year outside 1980-2107 makes
GetDosTimereturnINVALID_YEARafter writing 0 for an earlier one and0xff9fbf7d(2107-12-31 23:59:58, the largest encodable time) for a later one, andSetDosTimedecodes the year as the unsigned 7-bit FAT field (1980-2107) without validating the fields, as the disassembly-derived fpPS4 reimplementation of the PS4 library does; not confirmed on a PS5 title, and shadPS4 instead masks out-of-range years into the packed value and sign-extends the 16-bit date