Commit Graph
8546 Commits
Author SHA1 Message Date
hugodearaujoandClaude Opus 5.5 54eeadb3a2 feat(libSceAgc): implement sceAgcWaitRegMemPatchMask
Patch the mask of a wait packet like sceAgcWaitRegMemPatchReference
patches its reference: a 32-bit value written to the low mask word of a
32- or 64-bit WAIT_REG_MEM, rejected above 32 bits.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 22:34:29 -03:00
raghav314andClaude Opus 5.5 60e16537dc docs: record the AJM resample assumptions in technical debt
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 05:41:46 +05:30
Joey Fisher 23a6859a51 feat(agc): declare sceAgcSetSemaphoreMemory and sceAgcDriverRegisterMultipleResources 2026-10-06 18:07:53 -06:00
Dean fde401d41f Merge pull request #992 from CnRJay/feat/ppsa23566-missing-exports
feat(libs): declare the exports PPSA23566 imports that no library provides
2026-10-07 13:02:56 +13:00
hugodearaujoandClaude Opus 5.5 26eec5bee6 feat(libSceAgc): implement sceAgcDcbQueueEndOfShaderActionGetSize
The end-of-shader action is written by an inline SDK builder as a
RELEASE_MEM packet, so the size is the 32 bytes that
sceAgcCbReleaseMem writes and that sceAgcAcbQueueEndOfShaderActionGetSize
already returns.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 20:38:14 -03:00
JAB-devandClaude Opus 5.5 e15f1644e3 fix(libSceNgs2.native): reverb as the PS4 libSceNgs2 does
The reverb was a Freeverb-style approximation. It now follows the PS4
firmware 11.00 libSceNgs2.sprx, read and checked against its output: the
input mixed to mono with the library's fixed gains, a 14400-sample buffer
with four reflection taps from the reflection pattern tables and a late
feed, sixteen damped comb filters with a pre-emphasis stage, a signed
selection of combs and four allpasses per output channel, a two-pole room
HF filter, and the library's parameter clamps, crossfades and setup
defaults. The test values are the PS4 library's own output.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 01:26:11 +02:00
Adrià ab9437e34d feat(libkernel): implement scePthreadTestcancel and pthread_testcancel (#834) 2026-10-07 11:43:32 +13:00
Dean 25f311fa00 Merge pull request #559 from Phi1ow/implement-login-dialog
feat(logindialog): implement the libSceLoginDialog state machine
2026-10-07 11:41:57 +13:00
Dean b5c1d08bd9 Merge pull request #553 from Phi1ow/implement-userservice-foreground-and-ids
feat(userservice): implement foreground user, registered list, user colour and NP account id
2026-10-07 11:41:16 +13:00
ChadandClaude Opus 5.5 df98b8899e feat(libs): name the PPSA23566 stubs from the shadPS4 NID list and implement sleep
20 of the 31 NIDs have names in shadPS4's aerolib list. They are declared
under those names; POSIX sleep is implemented. The NpPartner001 and Psml
MFSR2 exports stay unnamed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 17:28:39 -05:00
Celegans12 a40fe0b415 fix(shader): throw for constant lane reads outside the host subgroup
A pixel, vertex or tessellation stage whose wave is wider than the host
subgroup runs one guest lane per invocation, so lanes at or above the
subgroup size have no invocation. v_readlane_b32 still shuffled from
them, which Vulkan leaves undefined; a wave64 pixel minimum loop that
reads lanes 31 and 63 can then wait for a value no live lane holds and
hang the GPU.

At one lane per invocation outside compute, a v_readlane_b32 of a
constant lane at or above the host subgroup size, and v_permlanex16_b32
on a subgroup of 16 lanes or fewer, now fail SPIR-V emission. Lanes in
registers still build, so s_ff1_i32_b64 waterfalls are unaffected,
and neither check applies to compute or to two lanes per invocation.

v_permlane16_b32 and v_permlanex16_b32 take the source lane's EXEC from
a ballot, as DPP does, instead of a shuffle from a possibly inactive
invocation.
2026-10-07 00:25:55 +02:00
Celegans12 baa202d241 feat(agc): implement 10_11_11 unorm images through 32-bit uint views
GFX10 image format 30 (10_11_11_UNORM: X and Y are unorm11 in bits
0-21, Z is unorm10 in bits 22-31, per Mesa's gfx10 tables) has no
Vulkan format, so its sampled and storage descriptors threw at decode.

Format 30 now takes the R32_UINT route of 10_11_11_UINT: the driver
binds the raw dwords as R32_UINT and the shader extracts each field and
converts it with the buffer format helpers (NormalizeFormatComponent on
loads, EmitFormatStoreComponent on stores); DST_SEL 1 reads 1.0f.
Samples, gathers, LOD queries, 16-bit data and loads or stores whose
DST_SEL names the missing W channel throw.

Converted textures are now viewed with an identity component mapping,
since the shader applies DST_SEL itself: a 10_11_11_UINT view whose X
selector was not X lost the packed dword. DCC clear codes 0001 and 1110
of a converted texture throw instead of filling one R32_UINT channel.
2026-10-07 00:11:27 +02:00
JABandClaude Opus 5.5 e289b56e6f feat(libSceNgs2.native): implement sceNgs2RackGetInfo, sceNgs2VoiceGetPortInfo and sceNgs2VoiceQueryInfo (#958)
RackGetInfo reports the rack's handles, buffer, id, uid, option limits,
render count and active voices. VoiceGetPortInfo reports a port's matrix,
volume and destination. VoiceQueryInfo answers info id 0x4001 with the
voice channel count and throws for other ids. Assumptions are recorded in
TechnicalDebt.

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-07 11:10:30 +13:00
Dean ebad6db846 Merge pull request #923 from Fishybeing/docs/barycentric-fallback-entry
docs: describe the barycentric fallback in TechnicalDebt accurately
2026-10-07 11:07:12 +13:00
Dean 84c058756b Merge pull request #870 from aryanrawatispro-ship-it/feat/player-invitation-dialog-result
feat(playerinvitationdialog): implement scePlayerInvitationDialogGetResult
2026-10-07 11:05:26 +13:00
Dean 762bab6f9a Merge pull request #863 from LeandroLP23/feat/font-writing-line-ordering-space
feat(font): implement sceFontWritingLineGetOrderingSpace
2026-10-07 11:04:45 +13:00
ChadandClaude Opus 5.5 7cbf45b660 feat(libs): declare the exports PPSA23566 imports that no library provides
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 17:04:05 -05:00
Dean edf90b169f Merge pull request #824 from LeandroLP23/feat/font-get-font-resolution
feat(font): implement sceFontGetFontResolution
2026-10-07 11:04:01 +13:00
Dean b3c0365824 Merge pull request #823 from LeandroLP23/feat/font-glyphs-count-char-glyph-code
feat(font): implement sceFontGetFontGlyphsCount and sceFontGetCharGlyphCode
2026-10-07 11:03:19 +13:00
Phi1ow 0178b6530e fix(logindialog): report user-cancelled and write only the leading result int32
sceLoginDialogGetResult zeroed 8 bytes of a result struct of unknown size and reported result 0
with user id 0. It now writes only the leading int32 (USER_CANCELED), like
sceWebBrowserDialogGetResult and like the sign-in dialog, so a title takes its "no user chosen"
path instead of reading an invalid user id. Records the dialog in the silent-stubs list in
docs/dev/TechnicalDebt.md.
2026-10-06 23:46:00 +02:00
Phi1ow f467f5174f docs(userservice): record the assumed NP account id and default colour
Per review: sceUserServiceGetNpAccountId reports success with account id 0 and
sceUserServiceGetUserColor returns blue by default; both are assumptions. Records them under
"Unknown function info" in docs/dev/TechnicalDebt.md.
2026-10-06 23:42:46 +02:00
Dean 5fc8755f4c Merge pull request #961 from JAB-dev/feat/ngs2-mastering-gain
feat(libSceNgs2.native): mastering voice gain parameter
2026-10-07 10:22:26 +13:00
Dean a1107d2adf Merge pull request #939 from CnRJay/feat/keyboard-jis-key2char
feat(libSceKeyboard): translate the 106-key arrangement in sceKeyboardGetKey2Char
2026-10-07 10:20:49 +13:00
CnRandClaude Opus 5.5 7e3dcbc27e feat(libkernel): implement sceKernelReleaseFlexibleMemory (#952)
* feat(libkernel): implement sceKernelReleaseFlexibleMemory

Unmaps the range through sceKernelMunmap, which returns its pages to
the flexible memory budget, as fpPS4 and prosper do.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* test(libkernel): keep the flexible memory release check apart from the batch map checks

Co-Authored-By: Claude Opus 5.5 <[email protected]>

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-07 10:20:07 +13:00
Dean 957171aeb3 Merge pull request #795 from CnRJay/feat/http2-cookie-box
feat(libSceHttp2): implement cookie boxes and requests without a content length
2026-10-07 10:19:25 +13:00
Dean 0056fc5027 Merge pull request #793 from CnRJay/feat/barrierattr-process-shared
feat(libkernel): accept PTHREAD_PROCESS_SHARED barrier attributes
2026-10-07 10:18:43 +13:00
Dean a876f2392f Merge pull request #892 from adriadam10/feat/systemservice-music-player
feat(libSceSystemService): implement Disable/ReenableMusicPlayer
2026-10-07 10:16:24 +13:00
Dean 1a211f4f5c Merge pull request #891 from adriadam10/feat/razor-cpu-flush-occurred
feat(libSceRazorCpu): implement sceRazorCpuFlushOccurred
2026-10-07 10:15:42 +13:00
Dean 3acbb2e2d8 Merge pull request #889 from alfalfa-star/fix/audioout2-3d-latency-1
fix(audioout): accept a 3D latency of 1 in sceAudioOut2Set3DLatency
2026-10-07 10:14:18 +13:00
Dean 04847520a3 Merge pull request #875 from adriadam10/feat/jpegenc-restart-interval
feat(jpegenc): honor the encode restart interval
2026-10-07 10:10:18 +13:00
Dean 9b5cd3e223 Merge pull request #874 from adriadam10/feat/videodec2-avc-picture-info
feat(videodec2): implement sceVideodec2GetAvcPictureInfo
2026-10-07 10:09:36 +13:00
Dean e323c1f2b9 Merge pull request #909 from adriadam10/feat/ajm-batch-job-get-info
feat(libSceAjm.native): implement sceAjmBatchJobGetInfo
2026-10-07 10:08:12 +13:00
hugodearaujoandClaude Opus 5.5 d8b775ec19 feat(libSceAgc): implement sceAgcCbCondWrite
sceAgcCbCondWrite writes the 9-dword COND_WRITE packet: poll a memory
dword, compare it masked with the reference, and write a dword to memory
on a match. sceAgcCbCondWriteGetSize returns its 36 bytes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 18:07:37 -03:00
Dean 9530f4f267 Merge pull request #884 from Celegans12/feat/ajm-batch-job-control
feat(ajm): implement sceAjmBatchJobControl
2026-10-07 10:07:29 +13:00
Dean cfe926c0b0 Merge pull request #488 from arreina/pr/json-non-finite
fix(json2): throw on numbers that overflow a double
2026-10-07 10:06:47 +13:00
Dean 66da53663f Merge pull request #810 from adriadam10/feat/http-uri-merge
feat(libSceHttp): implement sceHttpUriMerge
2026-10-07 10:05:32 +13:00
Dean 2cba243d68 Merge pull request #809 from adriadam10/feat/http-uri-sweep-path
feat(libSceHttp): implement sceHttpUriSweepPath
2026-10-07 10:04:49 +13:00
Dean 7c95dbb604 Merge pull request #836 from adriadam10/feat/net-sendmsg-recvmsg
libSceNet: implement sceNetSendmsg and sceNetRecvmsg
2026-10-07 10:03:35 +13:00
Dean 906b7f8d31 Merge pull request #724 from merwie/feat/kernel-exception-handler-registration
feat(libkernel): record exception handlers
2026-10-07 10:02:52 +13:00
Dean dfca223766 Merge pull request #841 from merwie/fix/savedata-repeated-initialize
fix(savedata): accept a repeated sceSaveDataInitialize3
2026-10-07 10:02:11 +13:00
Dean 64f99050b6 Merge pull request #763 from merwie/feat/libs-ppsa12544-plugin-exports
feat(libs): add exports imported by PPSA12544's Unity plugins
2026-10-07 10:01:28 +13:00
Adrià 006c6cb618 Merge pull request #385 from DotDebian/feat/ds-wrxchg2-rtn-b32
feat(shader): implement ds_wrxchg2_rtn_b32 and ds_wrxchg2st64_rtn_b32
2026-10-06 23:00:00 +02:00
Dean e22d0c1013 Merge pull request #696 from tv7/feat/ime-keyboard-resource-id
feat(libSceIme): implement sceImeKeyboardGetResourceId
2026-10-07 09:58:51 +13:00
Dean 96ed510cf7 Merge pull request #369 from tv7/feat/json2-value-access
feat(libSceJson2): implement typed construction, indexed and keyed value access, InitParameter2
2026-10-07 09:58:04 +13:00
Adrià Franch 12008dc2ba docs(technical-debt): note the ds_wrxchg2 per-lane exchange order gap 2026-10-06 22:46:40 +02:00
hugodearaujoandClaude Opus 5.5 47fa19e15c feat(libSceAgc): implement the async COND_EXEC patches
sceAgcAsyncCondExecPatchSetCommandAddress and
sceAgcAsyncCondExecPatchSetEnd patch the COND_EXEC packet like their
graphics counterparts, since sceAgcAcbCondExec writes the same packet
as sceAgcDcbCondExec. Both variants share one implementation, as the
REWIND patches do.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 17:32:52 -03:00
JAB-devandClaude Opus 5.5 1f53f885d4 feat(libSceAgcDriver): implement sceAgcDriverGetResourceRegistrationMaxNameLength
The query writes the maximum resource name length (0xfc) through its
output pointer and returns 0, as prosper does from a title's registration
configuration. The parameter follows the SDK wrapper
sce::Agc::ResourceRegistration::getMaxNameLength(unsigned int*). Resource
registration itself stays unavailable.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 22:21:30 +02:00
JAB-devandClaude Opus 5.5 34bdc37b76 feat(libSceNgs2.native): reverb rack with I3DL2 parameters
Rack 0x2001 is created with its option layout and KytyPS5's defaults, takes
the setup (0x20010000) and I3DL2 (0x20010001) voice params and reports the
common voice state. The voice mixes its inputs and runs a Freeverb-style
approximation driven by the I3DL2 parameters: room and room HF, early
reflections and their delay, late reverb and its pre-delay, decay time and
HF ratio, and diffusion. Out-of-range params throw, param changes keep the
tail, a stop or kill clears it, and the tail ends once it decays below
1e-20. The console's algorithm is unknown; the approximation is recorded in
TechnicalDebt. The test context buffer pool grows to 64.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 22:21:28 +02:00
JAB-devandClaude Opus 5.5 81a332c148 feat(libSceNgs2.native): mastering voice gain parameter
Mastering voice param 0x30000004 sets a full-band and an LFE level. They
scale the mastering voice when it is mixed into the render buffer, the LFE
level on channel 3 of 6- and 8-channel voices. Non-finite levels are
invalid arguments.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 22:21:28 +02:00
JAB-devandClaude Opus 5.5 2093e74661 feat(libkernel): accept flag 0x8000 in sceKernelMapNamedFlexibleMemoryInternal
The SDK 9 libc.prx heap maps its arenas with flag 0x8000, which threw as
an unsupported flag. The flag is ignored for this function, as sharpemu
does; other unknown flags still throw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 22:21:25 +02:00