Commit Graph
27 Commits
Author SHA1 Message Date
Dean 1e5e1d56fb Merge pull request #11110 from orezraey/fix/libscertc-settime-t-order-measured-ps5
fix(libSceRtc): check the seconds before the pointer in sceRtcSetTime_t as measured on a PS5
2026-10-27 21:19:24 +13:00
orezraeyandClaude Opus 5.5 df2f94fcba Merge main into fix/librtc-rfc3339-precise-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 17:41:34 -03:00
Dean bfbc55a45b Merge pull request #11162 from orezraey/docs/libscertc-field-accessors-measured-ps5
fix(libSceRtc): drop the date field getters and setters a PS5 does not export
2026-10-27 09:23:29 +13:00
orezraeyandClaude Opus 5.5 11522b51e0 Merge main into fix/libscertc-settime-t-order-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 13:34:17 -03:00
orezraeyandClaude Opus 5.5 e108063e13 fix(libSceRtc): drop the date field getters and setters a PS5 does not export
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 17:16:27 -03:00
orezraeyandClaude Opus 5.5 c5dd9f9cbc fix(libSceRtc): check the seconds before the pointer in sceRtcSetTime_t as measured on a PS5
On PS5 firmware 13.60 sceRtcSetTime_t(NULL, -1) returns
SCE_RTC_ERROR_INVALID_VALUE and sceRtcSetTime_t(NULL, 0)
SCE_RTC_ERROR_INVALID_POINTER: negative seconds are rejected before a
null destination under the later SDK rules. The other measured
GetDayOfWeek, SetTime_t and FormatRFC3339 results already matched.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 15:06:45 -03:00
orezraeyandClaude Opus 5.5 6c19ccb09e Merge main into fix/librtc-rfc3339-precise-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 16:45:27 -03:00
orezraeyandClaude Opus 5.5 f47c0cc250 Merge main into docs/librtc-dos-time-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 16:11:17 -03:00
ntamas94andClaude Opus 5.5 2120035611 fix(libSceRtc): keep the pre-3.00 range rules to PS4 titles
The compiled SDK version of a PS5 title counts from its own SDK, so an
early PS5 title would have taken the PS4 pre-3.00 rules. Apply them only
to a CUSA title, as libSceConvertKeycode tells PS4 titles apart; anything
else, including a title without metadata, gets the later rules main had.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 18:01:16 +02:00
ntamas94andClaude Opus 5.5 16d2cbb4b3 fix(libSceRtc): range-check by the compiled SDK version as the PS4 does
Measured on PS4 firmware 10.71 from processes compiled with SDK versions
0x01000051, 0x02ffffff, 0x03000000 and 0x05050001. From 0x03000000 on,
FormatRFC3339 returns INVALID_VALUE when the zone shift overflows or
underflows the tick, GetDayOfWeek checks the month before the year and
rejects years past 9999, and SetTime_t rejects negative seconds and
converts all 64 bits. 0x02ffffff and earlier keep the wrap, the year-first
order and the low 32 bits.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 17:11:35 +02:00
orezraeyandClaude Opus 5.5 88b73efe3e docs(libSceRtc): record sceRtcGetDosTime and sceRtcSetDosTime as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 09:44:40 -03:00
orezraeyandClaude Opus 5.5 d6dcdeacfe docs(libSceRtc): record that titles built before SDK 3.00 get INVALID_YEAR before year 1
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 08:40:46 -03:00
orezraeyandClaude Opus 5.5 3039b1579a fix(libSceRtc): take the local offset of a tick the host cannot convert from a Gregorian cycle in range
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 22:49:54 -03:00
orezraeyandClaude Opus 5.5 10013d1e08 fix(libSceRtc): range-check the precise RFC 3339 formatters as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 20:53:07 -03:00
ntamas94andClaude Opus 5.5 2d1ecaf29e fix(libSceRtc): reject a negative source tick in sceRtcFormatRFC2822
Measured on a PS4 (firmware 10.71) for the review of the zone-shift
overflow: sceRtcFormatRFC2822 returns 0x80B50003 for UINT64_MAX with +1
and +1439 minutes and for 2^64 - 1 minute with +1, where the shifted tick
lands in year 1. The console returns 0x80B50008 when the shifted tick is
past 9999 as a signed value (2^63 with -1 minute) and otherwise 0x80B50003
when the source or the shifted tick is negative as a signed value
(2^63 with 0, 0 with -1); the tick after 9999 with -1 minute still formats.

sceRtcFormatRFC3339 does wrap on the console: UINT64_MAX with +1 minute
returns 0 and writes 0001-01-01T00:00:59.99+00:01, as the implementation
already does. Tests now cover both.

Written with AI assistance.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 15:52:23 +02:00
ntamas94andClaude Opus 5.5 3cf419d4ea fix(libSceRtc): handle out-of-range time values as the PS4 does
Measured on a PS4 (firmware 10.71) with an OpenOrbis homebrew that loads a
probe PRX calling libSceRtc; every output starts as a sentinel, so stores
and their width are visible.

- sceRtcSetTime_t takes the low 32 bits of its argument as unsigned seconds
  and returns 0 for every value: -1 is 2106-02-07 06:28:15, 2^32 + 1 is
  1970-01-01 00:00:01 and -2^31 is 2038-01-19 03:14:08. sceRtcGetTime_t
  stays 64-bit (2106-02-07 06:28:16 is 2^32).
- sceRtcGetTime_t before 1970 and sceRtcGetWin32FileTime before 1601 store
  0 and return 0x80B50008. Field validation still comes first and leaves
  the output unchanged (1969-13-01 returns 0x80B50009).
- sceRtcSetTick and sceRtcSetWin32FileTime have no upper limit: the tick
  after 9999-12-31 23:59:59.999999 is 10000-01-01 and the file time
  2^64 - 1 is 60056-05-28 05:36:10.955161. sceRtcGetDayOfWeek accepts
  years past 9999 (10000-01-01 is 6).
- sceRtcFormatRFC3339 returns 0x80B50008 when the zone-shifted tick is
  outside years 1 to 9999. sceRtcFormatRFC2822 returns 0x80B50003 when it
  is negative as a signed value and 0x80B50008 when it is past 9999.

The PS5-measured cases of GuestRtc.cpp that the probe repeated (RFC 3339
and RFC 2822 parsing, named and military zones, DOS time, TickAdd) give the
same results on the PS4. The three expectations changed here (SetTick past
9999, SetTime_t(-1), RFC 2822 at the limit with +1 minute) came from
commits that cite no measurement. Not yet confirmed on PS5.

Written with AI assistance.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 15:51:03 +02:00
boykopovar c55342edbb fix(rtc): use current time for null formatting ticks 2026-10-21 21:52:30 +03:00
boykopovar 7e8fede88c fix(rtc): restore the complete system timezone table
decode all 70 entries at 0x4b80 used by the lookup at 0x15d0. preserve lookup order and the parser's uppercase second-letter check. cover missing zones, case handling and prefix matching in guest_rtc on windows.
2026-10-21 21:44:56 +03:00
orezraeyandClaude Opus 5.5 f6026b24ed Merge main into fix/rtc-format-null-tick-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 03:41:06 -03:00
orezraeyandClaude Opus 5.5 0fffc7bcae fix(libSceRtc): format the current time for a null tick as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 20:34:05 -03:00
orezraeyandClaude Opus 5.5 3489bf4eb7 fix(libSceRtc): parse the DNT, NFT, NOR and SET zone names as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 19:45:17 -03:00
Sergio ec2e056d50 feat(libSceRtc): implement process-local clock setters 2026-10-19 20:55:33 +02:00
Nithishvelan M 160941f812 feat(libSceRtc): implement component getters and setters with range validation 2026-10-19 15:55:05 +05:30
Yuri Olive 783da344a7 docs(libSceRtc): list sceRtcInit and sceRtcEnd as silent stubs 2026-10-15 18:56:38 -03:00
Yuri Olive 51e9e5e825 feat(libSceRtc): implement the remaining firmware exports 2026-10-15 18:54:39 -03:00
Zayd Zaari 396412496f fix(rtc): reject date strings ending at the minutes
Require the measured separator after RFC date minutes when seconds are absent. Preserve the destination tick on the parse failure and retain the accepted trailing-space and seconds controls.

AI-assisted; based on guarded PS5 measurements with controlled input backing storage.
2026-10-12 19:44:03 +00:00
Adrià FranchandClaude 342a8c4590 docs(debt): move library entries to one file per library
Co-Authored-By: Claude <[email protected]>
2026-10-12 20:38:29 +02:00