Commit Graph
6138 Commits
Author SHA1 Message Date
Dean bf4b7e3f6d Merge pull request #714 from adriadam10/feat/contentexport-fromdata-name
fix(contentexport): name the AOWqIYsgVHs stub sceContentExportFromData
2026-10-06 12:37:25 +13:00
Adrià FranchandClaude 83442e1e40 feat(font): implement writing lines
Create, destroy, clear, write runs, step through them and read the
line metrics, following KytyPS5. Layouts from SharpProspero.

Co-Authored-By: Claude <[email protected]>
2026-10-06 01:30:16 +02:00
Dean 964dd3c919 Merge pull request #669 from adriadam10/fix/dot2-f16-hw-rounding
fix(shader): match v_dot2_f32_f16 and v_dot2c_f32_f16 to hardware
2026-10-06 12:25:50 +13:00
Dean c8c4621a17 Merge pull request #747 from CnRJay/feat/apr-gather-scatter
feat(libs): implement the APR gather and scatter reads
2026-10-06 12:25:06 +13:00
Dean 6eebd23a62 Merge pull request #745 from Blizzeq/fix/net-error-codes
fix(net): return SCE_NET_ERROR codes from failing sceNet calls
2026-10-06 12:24:24 +13:00
Dean e51edb4dc2 Merge pull request #744 from Blizzeq/fix/net-send-sigpipe
fix(net): keep SIGPIPE from killing the process on Linux sends
2026-10-06 12:23:42 +13:00
Dean ad881d539b Merge pull request #730 from alfalfa-star/feat/voiceqos-init
feat(voiceqos): implement sceVoiceQoSInit
2026-10-06 12:19:38 +13:00
Dean b2e192cfa3 Merge pull request #717 from merwie/feat/kernel-dlopen-relinked-guest-module
feat(libkernel): load the relinked module for a guest module path
2026-10-06 12:18:55 +13:00
Dean 90f20b393d Merge pull request #699 from merwie/feat/libs-ppsa12544-exports
feat(libs): add exports imported by PPSA12544
2026-10-06 12:18:11 +13:00
Adrià FranchandClaude 58fce8ab1c feat(libs): implement sceGameUpdateGetAddcontLatestVersion
Co-Authored-By: Claude <[email protected]>
2026-10-06 01:17:29 +02:00
Dean 44b3778ce9 Merge pull request #762 from merwie/feat/msgdialog-native-progress-bar
feat(msgdialog): add progress bar calls to libSceMsgDialog.native
2026-10-06 12:17:29 +13:00
Nahuel Genchi 79feafca58 fix(shader): keep helper invocations out of the pixel valid mask kill 2026-10-05 20:16:59 -03:00
Dean 0c4b80dc61 Merge pull request #761 from merwie/fix/pthread-adopted-thread-stack
fix(libkernel): report the stack of adopted threads
2026-10-06 12:16:47 +13:00
Dean 106ebfff68 Merge pull request #710 from merwie/fix/param-json-default-language
fix(libkernel): read defaultLanguage from localizedParameters
2026-10-06 12:16:36 +13:00
Adrià FranchandClaude cef269d129 feat(agc): implement sceAgcGetGsOversubscription
Co-Authored-By: Claude <[email protected]>
2026-10-06 01:16:35 +02:00
Dean 398d03ed09 Merge pull request #705 from merwie/feat/userservice-age-level
feat(userservice): implement sceUserServiceGetAgeLevel
2026-10-06 12:16:25 +13:00
Kikoarl 9ac108b7b5 refactor(shader): throw on s_scratch_load until wave scratch layout is modelled 2026-10-06 01:16:02 +02:00
Dean a4bc492b82 Merge pull request #593 from hamb3r/feat/xbox-view-touchpad
feat(pad): map Xbox View button to PS5 touchpad
2026-10-06 12:15:41 +13:00
Dean 4519ae61cc Merge pull request #743 from Blizzeq/fix/linux-socket-errno
fix(libkernel): report EINVAL, EACCES, ENOBUFS, ETIMEDOUT and EINTR from Linux sockets
2026-10-06 12:14:58 +13:00
NumberGuan cda1d4b211 feat(http): implement URI percent decoding 2026-10-05 20:14:23 -03:00
Dean 7887d885b6 Merge pull request #742 from alfalfa-star/feat/agc-driver-predication
feat(agc-driver): execute boolean SET_PREDICATION
2026-10-06 12:14:16 +13:00
Dean 74fefcaae3 Merge pull request #741 from alpinevm/feat/libc-strnlen-s
feat(libc): implement strnlen_s
2026-10-06 12:14:04 +13:00
Dean 1438d99560 Merge pull request #752 from Celegans12/feat/agc-conservative-z-export
feat(agc): accept conservative Z export in DB_SHADER_CONTROL
2026-10-06 12:13:21 +13:00
Dean d3e4edf15b Merge pull request #750 from Celegans12/feat/shader-flat-saddr-vcc
feat(shader): accept vcc as the scalar base address of global instructions
2026-10-06 12:12:39 +13:00
Dean 8379f09c79 Merge pull request #754 from Celegans12/feat/shader-swappc-null-setpc
feat(shader): implement s_swappc_b64 null, long branches and dword jump tables
2026-10-06 12:11:57 +13:00
Dean 82d1b129fa Merge pull request #648 from Celegans12/feat/videoout-dcc-presentation
feat(agc): present DCC display buffers whose keys are uncompressed or fast-cleared
2026-10-06 12:11:15 +13:00
Dean 7072c9049b Merge pull request #682 from Raghav314/feat/ajm-batch-cancel
feat(ajm): implement sceAjmBatchCancel
2026-10-06 12:10:33 +13:00
Dean 11c3e3e9f0 Merge pull request #680 from NumberGuan/codex/implement-http-response-header
feat(http): implement response header parsing
2026-10-06 12:09:48 +13:00
Dean 2474eee54e Merge pull request #746 from CnRJay/feat/ampr-counter-04-00
feat(libs): implement the AMPR 04_00 counter commands and the construct helpers
2026-10-06 12:09:04 +13:00
Adrià FranchandClaude 3a81905dd3 feat(libkernel): implement _is_signal_return
Guest signal handlers are called from a host dispatcher, so no guest PC is
a signal trampoline: return 0 for every address, as KytyPS5 and prosper do.

Co-Authored-By: Claude <[email protected]>
2026-10-06 01:09:00 +02:00
Dean f5b548a876 Merge pull request #580 from CnRJay/feat/ampr-nop-04-writes
feat(libs): implement the AMPR nops and the 04_00 completion writes
2026-10-06 12:08:21 +13:00
raghav314andClaude Opus 5.5 ce6d94793c feat(libkernel): implement sceKernelSyncOnAddressWait8 and sceKernelSyncOnAddressWait16
Wait8 and Wait16 compare the 1- or 2-byte value at the address with the
comparand and share the waiter queue of the other sizes.
sceKernelSyncOnAddressWake accepts any non-null address: libc's
__std_atomic_notify_one/all pass the atomic's own address, which for 8- and
16-bit atomics need not be 4-byte aligned.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 04:30:12 +05:30
Adrià FranchandClaude 8232a4c071 feat(agc): implement sceAgcDcbContextStateOpGetSize
Co-Authored-By: Claude <[email protected]>
2026-10-06 00:58:50 +02:00
Nahuel Genchi 5fab03e4e5 fix(relinker): keep host prx references out of guest modules on Linux
On Linux every module resolves its references through one global scope,
and the guest modules are listed ahead of the host prx. When a title
bundles its own libc.prx, the host libc and the other host prx bound
their references to their own NIDs to the guest libc, so the host libc
built its standard streams on top of the guest _Stdout.

The exports of guest modules, and the guest and executable imports that
a guest module satisfies, now carry a #guest suffix. The title's imports
still reach the guest modules first, and a host prx only sees host
definitions, as on Windows. sceKernelDlsym also looks for the suffixed
name.
2026-10-05 19:58:39 -03:00
Adrià FranchandClaude 9322634817 feat(agc): implement sceAgcGetDataPacketPayloadRange
Co-Authored-By: Claude <[email protected]>
2026-10-06 00:54:31 +02:00
Adrià FranchandClaude 40c191029d feat(agc): implement sceAgcGetPacketSize
Co-Authored-By: Claude <[email protected]>
2026-10-06 00:50:27 +02:00
Adrià FranchandClaude 5f68999836 feat(agc): implement sceAgcCondExecPatchSetCommandAddress and sceAgcCondExecPatchSetEnd
Co-Authored-By: Claude <[email protected]>
2026-10-06 00:44:59 +02:00
Celegans12 adee347c14 feat(recompiler): structurize loops whose exits reach different program ends
A loop whose exits have no common post-dominator, such as a normal exit
to one s_endpgm tail beside an early-out to a kill tail, got no merge
block, and Structurize threw "loop at block N has no structured
merge/continue". With three or more exits, detectNaturalLoops threw
first, on a lookup of InvalidControlFlowId.

Such a loop now leaves through one new merge block that dispatches on
route variables. They are cleared before the header and set on each
exit edge to a target other than the latch's exit. Inner loops are
routed first; a routing that would change the natural loops throws.

A loop-exit tail branch whose in-body target is the continue block no
longer merges there, which spirv-val rejects ("Header block ... is
contained in the loop construct ..., but its merge block ... is not").
2026-10-06 00:35:47 +02:00
Celegans12 4a67b140fc feat(agc): accept conservative Z export in DB_SHADER_CONTROL
DecodeState, the draw precheck and DecodePixelStageInfo rejected every
nonzero CONSERVATIVE_Z_EXPORT (DB_SHADER_CONTROL bits 13-14).
EXPORT_LESS_THAN_Z (1) and EXPORT_GREATER_THAN_Z (2) promise that the
exported Z stays on one side of the interpolated Z. The value now
reaches the recompiler as a pixel stage field, and a pixel shader that
writes FragDepth declares DepthLess or DepthGreater next to
DepthReplacing, the SPIR-V modes RADV maps to these values. Vulkan lets
those modes only add a depth test of the interpolated Z before shading,
so a shader that keeps the promise renders the same. The reserved value
3 still throws.

The field is part of the recompile cache key, the draw key and the
serialized request (version 7), and ValidateShaders accepts both modes.
2026-10-06 00:35:43 +02:00
Celegans12 23c8985273 feat(shader): accept vcc as the scalar base address of global instructions
The FLAT decoder took a scalar base address (SADDR) only from a
numbered SGPR pair, so global loads, stores and atomics and
global_load/store_dword_addtid with SADDR = vcc (106) threw "FLAT
scalar address register range overflow". LLVM's GFX10 global saddr
operand accepts s, vcc, ttmp, null and off.

A two-register base may now be VCC. The address translation already
reads it as VCC_LO:VCC_HI through offsetOperand. The same helper
serves the scratch SADDR, where vcc_lo becomes the 32-bit offset.
VCC_HI, M0, EXEC and the trap temporaries still throw.
2026-10-06 00:35:37 +02:00
Adrià FranchandClaude 58263b5075 feat(libSceIme): implement keyboard info and mode queries
Co-Authored-By: Claude <[email protected]>
2026-10-06 00:30:16 +02:00
Adrià FranchandClaude 23c8558c70 fix(contentexport): name the AOWqIYsgVHs stub sceContentExportFromData
Co-Authored-By: Claude <[email protected]>
2026-10-06 00:30:00 +02:00
Adrià FranchandClaude aed4f3a25c feat(systemservice): implement PowerTick and ReportAbnormalTermination
Co-Authored-By: Claude <[email protected]>
2026-10-06 00:29:42 +02:00
Adrià FranchandClaude f4b5b1ba50 feat(libSceShare): capture, open menu and current status calls
Co-Authored-By: Claude <[email protected]>
2026-10-06 00:29:19 +02:00
Adrià FranchandClaude 948d3cd047 feat(libc): implement std::_Execute_once
Co-Authored-By: Claude <[email protected]>
2026-10-06 00:28:52 +02:00
Adrià Franch 42869efbfa fix(audio3d): wait until the slot frees in blocking push 2026-10-06 00:28:19 +02:00
Adrià FranchandClaude 06d2ae5f05 feat(audio3d): implement the port queue
Initialize, PortOpen/Close, PortSetAttribute, PortGetQueueLevel,
PortAdvance and PortPush. One port, validation order and error codes from
the PS5 module as read by prosper; blocking push paced at granularity
samples per frame at 48 kHz like KytyPS5.

Co-Authored-By: Claude <[email protected]>
2026-10-06 00:28:19 +02:00
Adrià FranchandClaude fc96f96ac5 feat(ajm): parse the original file length in sceAjmDecMp3ParseFrame
Co-Authored-By: Claude <[email protected]>
2026-10-06 00:26:19 +02:00
husari.orozco abdf673b1e feat(relinker): support Windows guest TLS reads by ALU instructions
Recognize the read-direction ALU forms (add, or, adc, sbb, and, sub, xor,
cmp) that read a qword from fs:[disp32], such as the stack canary check
`xor rbx, fs:[0x28]` emitted by stack-protected functions. They were
rejected as unsupported, which blocked titles relinked on Windows.

The stub loads the TLS value and applies the operation in place, keeping
the final operation as the last flag-setting instruction and preserving
the accumulator and counter. A destination of rax uses rdx as the value
scratch so the original accumulator survives.

Refs #217
2026-10-05 16:16:46 -06:00
raghav314andClaude Opus 5.5 c0c34cc83c feat(ajm): implement sceAjmBatchCancel
sceAjmBatchStart processes every job before it returns the batch id, so a
batch that has not been waited on is never pending: cancelling it returns 0.
A batch that was never issued or was already waited on returns INVALID_BATCH,
and a context id that was never issued returns INVALID_CONTEXT, as in shadPS4.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 03:45:33 +05:30