Commit Graph
6138 Commits
Author SHA1 Message Date
ChadandClaude Opus 5.5 5a321471c2 feat(libSceHttp2): implement cookie boxes and requests without a content length
sceHttp2CreateCookieBox hands out an id from the library's handle
counter, sceHttp2SetCookieBox binds one to a template or request, and
sceHttp2CookieFlush succeeds: no request reaches the network, so no
cookie is ever stored. sceHttp2SetRequestNoContentLength is accepted
like sceHttp2SetRequestContentLength. The library gets its own
CMakeLists for the new guest_http2 test.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 20:16:49 -05:00
Dean fe98276fb0 Merge pull request #786 from NahuelGenchi/fix/agc-buffer-int64-atomics-feature
fix(agc): enable shaderBufferInt64Atomics for 64-bit buffer atomics
2026-10-06 14:15:44 +13:00
Dean 6136e52110 Merge pull request #785 from NahuelGenchi/feat/kernel-futimes
feat(libkernel): implement futimes
2026-10-06 14:15:34 +13:00
Dean aa22e43932 Merge pull request #784 from NahuelGenchi/feat/kernel-fchmod
feat(libkernel): implement fchmod and sceKernelFchmod
2026-10-06 14:14:52 +13:00
Dean 901ddfd1f8 Merge pull request #783 from adriadam10/feat/net-resolver-get-error
feat(libSceNet): implement sceNetResolverGetError
2026-10-06 14:14:10 +13:00
ChadandClaude Opus 5.5 a74f282359 feat(libSceIme): report the closed IME panel
sceImeOpen is not implemented, so the IME panel is never open.
sceImeClose, sceImeSetCaret, sceImeSetText and sceImeSetTextGeometry
return SCE_IME_ERROR_NOT_OPENED, checking the panel before their
arguments, as sceImeKeyboardGetInfo does for the keyboard.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 20:14:09 -05:00
Dean 8235eda149 Merge pull request #769 from adriadam10/feat/font-writing-line
feat(font): implement writing lines
2026-10-06 14:13:27 +13:00
Dean b8a98c9502 Merge pull request #582 from CnRJay/feat/agc-predication
feat(agc): implement packet and range predication and the predication sizes
2026-10-06 14:12:46 +13:00
Dean 8afcf7203f Merge pull request #653 from Celegans12/feat/audioout2-12-channel-ports
feat(audioout): implement 12-channel AudioOut2 ports
2026-10-06 14:12:36 +13:00
ChadandClaude Opus 5.5 d4b01b72c0 feat(libkernel): accept PTHREAD_PROCESS_SHARED barrier attributes
The PS5 kernel follows FreeBSD 11, whose libthr accepts process-shared
barriers. Guest code runs in a single process, so a process-shared
barrier synchronises the same threads a private one does; the attribute
is stored and reported back by getpshared.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 20:11:20 -05:00
ChadandClaude Opus 5.5 77550ab731 feat(libkernel): implement sendmsg and recvmsg
Both take the FreeBSD msghdr (48 bytes, iovecs of a pointer and a 64-bit
length) and run on the host sockets: sendmsg gathers the iovecs and sends
through sendto, recvmsg receives into one buffer and scatters it. A
datagram longer than the iovecs is cut and reported with MSG_TRUNC, also
on Windows where recvfrom fails with WSAEMSGSIZE. More than 1024 iovecs
fail with EMSGSIZE. No ancillary data is ever received, so recvmsg
clears msg_controllen; sending control data throws.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 20:10:13 -05:00
ChadandClaude Opus 5.5 5d99f135d7 feat(libSceAgcDriver): answer the resource registration queries
Registration of owners and resources fails with
RESOURCE_REGISTRATION_UNAVAILABLE, so no handle is ever valid: the owner
and resource getters, sceAgcDriverSetResourceUserData,
sceAgcDriverRegisterGdsResource, sceAgcDriverFindResourcesPublic,
sceAgcDriverUnregisterAllResourcesForOwner and
sceAgcDriverGetDefaultOwner return the same error.
sceAgcDriverUnregisterWorkloadStream mirrors the accepting
RegisterWorkloadStream. No capture, trace or submit validation ever runs,
so their status queries report false.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 20:07:28 -05:00
ChadandClaude Opus 5.5 e263402296 feat(shader): implement image_msaa_load
Decode MIMG opcode 0x80 on 2D MSAA and 2D MSAA array images with a
single-bit dmask and return four dwords: the selected component of the
fragment named in the address and the three that follow it. Each fragment
is read with its own image fetch, adding the fragment step to the packed
address dword so a16 layouts keep working.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 19:56:34 -05:00
Celegans12 4b0119426b feat(voiceqos): accept app type 0x10000000 in sceVoiceQoSInit
sceVoiceQoSInit accepted only app type 0x20000000 and threw for every
other value. PPSA26344 v1.008 passes 0x10000000 at both of its call
sites, so its initialization threw.

Accept 0x10000000 as a second known app type. Its meaning is unknown,
so the constant is named after the value, and it is handled like
0x20000000; the block stays unused. A null or empty block, a second
initialization and every other app type still throw.

guest_voice_qos_tests now takes the app type as its argument and runs
in ctest once per accepted value, because sceVoiceQoSEnd still throws
and one process can initialize only once.
2026-10-06 02:42:33 +02:00
Celegans12 e5b7427c75 feat(shader): accept every SDWA selector on v_mov_b32
v_mov_b32_sdwa threw 'VOP1 SDWA destination selector ... is not
supported' when a byte source (src0_sel BYTE_0..3) met a partial
destination (dst_sel BYTE_0..3 or WORD_0/1): the VMovB32 rule allowed
only WORD and DWORD sources there. Every src0_sel, src0_sext, dst_sel
and dst_unused combination is now accepted. Translation already follows
RDNA2 for all of them (applyBitSourceModifiers, writeRawU32): the
selected field is zero- or sign-extended, and the result's low bits go
to the dst_sel field with the other bits zeroed, sign-extended above
and zeroed below, or preserved. Reserved selectors, dst_unused 3, and
neg/abs on sub-dword sources still throw.

agc_driver_sdwa_move_selectors runs all 294 combinations as wave32 and
wave64 on the GPU, plus the in-place byte broadcast under a partial
exec mask, which is not checked on subgroups narrower than 32 lanes,
as in the other EXEC-masked execution tests. agc_vop1_sdwa_move_decode
checks the decoded operands and the reserved encodings.
2026-10-06 02:35:42 +02:00
Dean 9cafa33f94 Merge pull request #658 from NumberGuan/codex/fix-net-inet-ntop-errors
fix(net): report address text buffer errors to the guest
2026-10-06 13:29:03 +13:00
Dean cdb2707ad2 Merge pull request #686 from Pouare514/fix/direct-memory-release-clears-mappings
fix(libkernel): drop direct mappings when physical backing is released
2026-10-06 13:28:21 +13:00
Dean 021e4573ce Merge pull request #668 from ThisIsAkill/fix/agc-emulated-color-compare-main
fix(agc): emulate comparison sampling of color textures in the shader
2026-10-06 13:27:39 +13:00
Dean 489fcdca7e Merge pull request #638 from khasinski/fix/f32-omod-exponent-scale
fix(shader): apply f32 output modifiers on the exponent bits
2026-10-06 13:26:56 +13:00
Dean bd8aa57775 Merge pull request #698 from merwie/fix/relinker-guest-absolute-symbols
fix(relinker): accept absolute symbols in guest modules
2026-10-06 13:19:30 +13:00
Dean 356435fe68 Merge pull request #753 from Celegans12/feat/shader-structurize-loop-early-exit
feat(recompiler): structurize loops whose exits reach different program ends
2026-10-06 13:18:48 +13:00
Dean 3bfa6e4fc4 Merge pull request #764 from Celegans12/feat/agc-dcc-a2r10g10b10-clear
feat(agc): encode the DCC clear codes of A2R10G10B10 color targets
2026-10-06 13:18:06 +13:00
Dean 3e9bcee7b9 Merge pull request #756 from CnRJay/feat/amm-prt
feat(libs): implement the AMM PRT commands
2026-10-06 13:17:24 +13:00
Dean 5cc58621a9 Merge pull request #749 from CnRJay/feat/amm-remap-protect
feat(libs): implement the AMM remap, multimap and protection changes
2026-10-06 13:17:14 +13:00
Dean ece9990d89 Merge pull request #748 from CnRJay/feat/amm-core
feat(libs): implement the AMM map, map direct and unmap commands and the APR map region
2026-10-06 13:16:31 +13:00
Dean 633459b09c Merge pull request #672 from NahuelGenchi/fix/linux-guest-export-namespace
fix(relinker): keep host prx references out of guest modules on Linux
2026-10-06 13:15:49 +13:00
Nahuel Genchi 786178bd4e fix(agc): include the host stage in barriers that name host accesses 2026-10-05 21:01:18 -03:00
Nahuel Genchi e0346f5823 fix(agc): enable shaderBufferInt64Atomics for 64-bit buffer atomics 2026-10-05 20:57:22 -03:00
Celegans12 799aaf5c2f feat(audioout): implement 12-channel AudioOut2 ports
sceAudioOut2PortCreate threw for 12-channel ports, which PPSA26344
creates as its two 7.1.4 float beds (data format 0xc00).

Each accepted layout (1, 2, 6, 8 or 12 channels, float or int16) now
folds into the stereo mix through a coefficient table: centre, side,
back and top front channels at -3 dB, top back channels at -6 dB into
the front, LFE dropped. Zero coefficients are skipped, so NaN or Inf on
a dropped channel does not reach the mix. Ports of 3, 4, 5 or 7
channels, which were mixed as L/R, now throw, as do other counts and
formats with any of bits 12-31 set. The assumed format fields,
channel order and coefficients are listed in TechnicalDebt.

The new audio_out2_port_layouts test checks each layout's fold, float
and int16, and the formats that throw.
2026-10-06 01:54:27 +02:00
Dean cb33f858c0 Merge pull request #766 from Kikoarl/feat/s-scratch-load
feat(shader): implement S_SCRATCH_LOAD_DWORD, S_SCRATCH_LOAD_DWORDX2 and S_SCRATCH_LOAD_DWORDX4
2026-10-06 12:52:17 +13:00
husari.orozco 31e9e67f54 fix(relinker): keep the original rax and rcx in ALU TLS reads
loadPointer overwrites rax and rcx, so a destination of rax or rcx
computed the operation against the thread pointer or the TLS index
instead of the original register. Restore the destination before the
operation for both, and include rcx in the byte-level cases, which
previously covered only rax, rbx, r8 and r13.

Add self-checking execution cases for rax, rcx and rbx destinations:
each verifies the result, the preservation of the other two registers
and the ZF and CF bits.
2026-10-05 17:50:50 -06:00
Nahuel Genchi ec17b9811c feat(libkernel): implement futimes 2026-10-05 20:47:34 -03:00
Dean 03cc1bd925 Merge pull request #776 from adriadam10/feat/agc-gs-oversubscription
feat(agc): implement sceAgcGetGsOversubscription
2026-10-06 12:47:24 +13:00
Dean 65190976d9 Merge pull request #691 from NumberGuan/codex/implement-http-uri-unescape
feat(http): implement URI percent decoding
2026-10-06 12:46:41 +13:00
Nahuel Genchi eded1e010f feat(libkernel): implement fchmod and sceKernelFchmod 2026-10-05 20:46:34 -03:00
Dean 4987308034 Merge pull request #704 from adriadam10/feat/gameupdate-addcont-version
feat(libs): implement sceGameUpdateGetAddcontLatestVersion
2026-10-06 12:45:59 +13:00
Dean 7de111f98a Merge pull request #773 from Raghav314/feat/kernel-sync-on-address-wait8-16
feat(libkernel): implement sceKernelSyncOnAddressWait8 and sceKernelSyncOnAddressWait16
2026-10-06 12:45:18 +13:00
Chad 73a751ac1f Merge remote-tracking branch 'upstream/main' into feat/agc-predication
# Conflicts:
#	docs/dev/TechnicalDebt.md
2026-10-05 18:45:17 -05:00
Dean e0f1382bb7 Merge pull request #777 from adriadam10/feat/kernel-is-signal-return
feat(libkernel): implement _is_signal_return
2026-10-06 12:45:07 +13:00
Dean 9516f035e7 Merge pull request #775 from adriadam10/feat/agc-context-state-op-size
feat(agc): implement sceAgcDcbContextStateOpGetSize
2026-10-06 12:44:25 +13:00
Dean 8cac9bc7fe Merge pull request #774 from adriadam10/feat/agc-payload-range
feat(agc): implement sceAgcGetDataPacketPayloadRange
2026-10-06 12:43:43 +13:00
Dean 590b57f02f Merge pull request #772 from adriadam10/feat/agc-get-packet-size
feat(agc): implement sceAgcGetPacketSize
2026-10-06 12:43:01 +13:00
Dean 0e4ba0786a Merge pull request #770 from adriadam10/feat/agc-condexec-patch
feat(agc): implement sceAgcCondExecPatchSetCommandAddress and sceAgcCondExecPatchSetEnd
2026-10-06 12:42:20 +13:00
Dean 52ae2270fc Merge pull request #768 from adriadam10/feat/ajm-mp3-parse-ofl
feat(ajm): parse the original file length in sceAjmDecMp3ParseFrame
2026-10-06 12:41:38 +13:00
Dean 5124951b05 Merge pull request #740 from adriadam10/feat/audio3d-port
feat(audio3d): implement the port queue
2026-10-06 12:40:56 +13:00
Adrià FranchandClaude 9fb83a2435 feat(libSceNet): implement sceNetResolverGetError
Co-Authored-By: Claude <[email protected]>
2026-10-06 01:40:36 +02:00
Dean cc785ffa93 Merge pull request #739 from adriadam10/feat/systemservice-powertick
feat(systemservice): implement PowerTick and ReportAbnormalTermination
2026-10-06 12:40:14 +13:00
Dean 2410130475 Merge pull request #738 from adriadam10/feat/ime-keyboard-info-mode
feat(libSceIme): implement keyboard info and mode queries
2026-10-06 12:39:32 +13:00
Dean 2127e1c6d0 Merge pull request #737 from adriadam10/feat/share-capture-status
feat(libSceShare): capture, open menu and current status calls
2026-10-06 12:38:49 +13:00
Dean 9c3ef3a6a9 Merge pull request #735 from adriadam10/feat/libc-execute-once
feat(libc): implement std::_Execute_once
2026-10-06 12:38:07 +13:00