Commit Graph
9 Commits
Author SHA1 Message Date
Dean Galvin 73aede5257 Merge main into feat/libscezlib-requests 2026-10-24 10:38:35 +13:00
boykopovar 6036bc6512 fix(zlib): restore validation errors and finalization behavior 2026-10-21 21:56:06 +03:00
enfuego27826 704e872d36 docs(libSceZlib): state the remaining gaps first
Rewrite the technical debt entry to list what is unverified on the
PS5 and what still throws, with the source each behaviour follows,
and drop the descriptions of behaviour that is no longer a gap. The
entry is now under the 1000 character limit.
2026-10-21 12:28:25 +05:30
enfuego27826 729723a60f feat(libSceZlib): throw when finalize interrupts a waiter
A thread blocked in sceZlibWaitForDone was never woken by
sceZlibFinalize, so it waited for its whole timeout or forever.
Finalization now wakes every waiter, and a waiter that sees the
service finalized throws, since no source says what the console
returns. shadPS4 leaves such a waiter blocked.
2026-10-21 12:28:25 +05:30
enfuego27826 4020c844cc feat(libSceZlib): support timed waits in sceZlibWaitForDone
sceZlibWaitForDone threw for any timeout and when no finished request
was pending. Wait on a condition variable that sceZlibInflate signals:
a null timeout blocks until a request finishes, and a timeout returns
0x81120027 (timed out) on expiry, as in shadPS4. The timeout is read
as microseconds, as SharpProspero documents for the PS5; shadPS4
reads milliseconds.
2026-10-21 12:28:25 +05:30
enfuego27826 18e4066530 feat(libSceZlib): discard unread results on finalize
sceZlibFinalize threw while a finished request's result was unread.
Discard the stored results and the finished IDs not yet returned by
sceZlibWaitForDone instead. shadPS4 also returns success here and
never reports the abandoned requests; its next initialization clears
them. An ID from before finalization reports 0x81120002 afterwards.
2026-10-21 12:28:25 +05:30
enfuego27826 a5279134a1 feat(libSceZlib): allow repeated result retrieval
sceZlibGetResult threw on a second call for the same request and on
an ID it did not hold. Return the same length and status on every
call, and 0x81120002 (not found) for an unknown ID, as shadPS4 does.
Null output pointers still throw.
2026-10-21 12:28:25 +05:30
enfuego27826 7322375923 feat(libSceZlib): accept requests while earlier results are unread
sceZlibInflate threw when an earlier request's result had not been
read. Accept the request instead: every finished request keeps its
result, and sceZlibWaitForDone returns the finished IDs in submission
order, as shadPS4's done queue does. The PS5 completion order is
unverified and recorded in the technical debt entry.
2026-10-21 12:28:25 +05:30
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