Commit Graph
6138 Commits
Author SHA1 Message Date
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 509d03d048 Merge pull request #881 from adriadam10/fix/errcodes-ngs2-signaling
fix(libs): use the referenced NGS2 handle and session signaling argument error codes
2026-10-07 10:13:36 +13:00
Adrià 00c9f9256e Merge pull request #531 from adriadam10/test/vop3-integer
fix(shader): saturate v_cvt_pk_u16_u32/i16_i32; test VOP3 integer ops
2026-10-06 23:12:45 +02:00
Dean 2b049e3ef6 Merge pull request #879 from adriadam10/feat/kernel-batchmap-invalid-entry
feat(kernel): reject invalid sceKernelBatchMap2 entries with EINVAL
2026-10-07 10:12:23 +13:00
Dean 465c8f6b81 Merge pull request #878 from adriadam10/feat/kernel-adaptive-mutex-initializer
feat(kernel): lazily initialize the adaptive static mutex initializer
2026-10-07 10:11:42 +13:00
Dean 37a1e75f2c Merge pull request #877 from adriadam10/feat/kernel-getrusage-thread
feat(kernel): support getrusage RUSAGE_THREAD on Linux
2026-10-07 10:11:00 +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
Adrià 8ccb15993f Merge pull request #523 from DotDebian/fix/ds-append-consume-lds-offset
fix(shader): address ds_append and ds_consume on LDS by the instruction offset alone
2026-10-06 23:08:59 +02:00
Dean d2f51c5d33 Merge pull request #873 from adriadam10/feat/webbrowserdialog-get-status
feat(libs): implement sceWebBrowserDialogGetStatus
2026-10-07 10:08:54 +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
hugodearaujoandClaude Opus 5.5 159d06d27a feat(libSceAgcDriver): execute COND_WRITE
COND_WRITE (opcode 0x45) with a memory poll and a memory destination is
validated and executed: the driver drains the queue like WRITE_DATA,
reads the poll dword through the range synchronization, compares it
masked with the reference like a 32-bit WAIT_REG_MEM, and writes the
data dword on a match. Register polls and register or scratch
destinations are rejected.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 18:06:22 -03: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
Dean 2d0bbbfb4a Merge pull request #702 from merwie/feat/kernel-is-stack
feat(libkernel): implement sceKernelIsStack
2026-10-07 10:00:46 +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 36f92f7a76 Merge pull request #811 from ebosido444-ai/fix/nid-names-function-try-block
fix(tools): count function-try-block definitions in nid_names.py
2026-10-07 09:59:33 +13: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
DotDebianandClaude Opus 5.5 f617b873cc test(shader): mask the ds_wrxchg2 lanes with a per-lane compare
The masked case loaded EXEC from a scalar literal. A scalar mask is read
by subgroup lane, so on a host whose subgroups are narrower than the wave
(llvmpipe: 8 lanes) lane 16 took bit 0 and stayed active. v_cmpx_gt_u32
on the thread id gives the same low 16 lanes on any subgroup size.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 22:46:27 +02:00
DotDebianandClaude Opus 5.5 984bc57eca feat(shader): implement ds_wrxchg2_rtn_b32 and ds_wrxchg2st64_rtn_b32
Both swap data0 with the dword at addr + offset0 and data1 with the dword
at addr + offset1, and return the two previous values in vdst and vdst + 1.
The offsets are scaled by 4 bytes, or by 256 bytes for the st64 form.
Each location goes through the existing SharedAtomicSwap32.

An encoding whose two offsets are equal is rejected at decode time.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 22:46:27 +02:00
Ethan Barr 73facbc3d1 fix(libc): translate Windows fscanf guest arguments 2026-10-06 13:45:10 -07:00
Ethan Barr 34689f39ca fix(libc): preserve guest stdio bytes on Windows 2026-10-06 13:41:25 -07: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 687be1fbc8 feat(libSceNgs2): build libSceNgs2 from the libSceNgs2.native implementation
PPSA22520 lists libSceNgs2.prx, not libSceNgs2.native.prx, among its needed
modules, so its NGS2 imports did not resolve against the dummy module. Both
modules are now built by add_sce_ngs2_library from the same sources, as
libSceFont and libSceFont.native share add_sce_font_library, and the render
tests also run against libSceNgs2.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 22:21:29 +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 e419513f48 fix(agc): don't create the Vulkan instance while SDL creates the Vulkan window
SDL_CreateWindow with SDL_WINDOW_VULKAN loads and queries the Vulkan loader
while the render thread can be inside vkCreateInstance. On Windows the two
together intermittently made the NVIDIA ICD fail instance creation (-3) and
the loader return VK_ERROR_INCOMPATIBLE_DRIVER. libSceAgcDriver now exports
a loader lock that the VulkanDevice constructor and DisplayWindow::create
both hold.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 22:21:26 +02:00
JAB-devandClaude Opus 5.5 d4992c98f6 fix(audioout): keep ports without a device in real time
A port without an SDL device slept one block after its previous output on
every call. Rounded-up sleeps held titles that write several ports from one
thread below real time. Such ports now keep a virtual queue that drains in
real time and only wait when it holds more than the target latency.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 22:21:25 +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
Adrià 5b359092d8 Merge pull request #951 from adriadam10/docs/shader-semantics-source
docs(contributing): shader PRs say where instruction semantics come from
2026-10-06 22:20:03 +02:00
ChadandClaude Opus 5.5 cf0955f277 docs: keep the Http2 cookie box entry beside the other libSceHttp2 entries
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 15:13:58 -05:00
Chad 64f12cf39b Merge remote-tracking branch 'upstream/main' into feat/http2-cookie-box 2026-10-06 15:13:46 -05:00
Adrià FranchandClaude 157aac7511 docs(contributing): shader PRs say where instruction semantics come from
Co-Authored-By: Claude <[email protected]>
2026-10-06 22:12:08 +02:00
Adrià 61260bda0f Merge pull request #871 from adriadam10/tools/hw-oracle
feat(tools): add a hardware oracle for RDNA instruction semantics
2026-10-06 22:11:25 +02:00
Kikoarl 9edc22a4a9 feat(libSceMsgDialog.native): implement sceMsgDialogGetStatus 2026-10-06 21:56:43 +02:00
Nicolas AboschandClaude Opus 5.5 b12ef2cf20 fix(relinker): fall back to unqualified lookup for unmatched import modules
A qualified import whose module name matches no DT_NEEDED entry now uses
the unqualified search order instead of failing with "Import module is
not a dependency". Restore the Linux rejection of duplicate exports
within one guest module.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 16:48:10 -03:00
Ethan Barr c70c2b3526 fix(libc): honor sscanf_s count conversion lengths 2026-10-06 12:23:04 -07:00
Kikoarl d155f4555c fix(tools): count packed MIMG variants as decoded shader instructions
ImageLoadPck, ImageLoadMipPck, ImageStorePck and ImageStoreMipPck are
decoded and implemented for 2- and 4-dword transfers, but the disassembler
and rdna_isa.txt list them under separate _PCK2 and _PCK4 mnemonics.
Existing tests in ImageLoadPacked and ImageStorePacked already cover
these dword counts.
2026-10-06 20:59:47 +02:00
ChadandClaude Opus 5.5 fc049cf1b4 test(libs): declare the write data patch function pointers with the guest ABI
On Windows APS5_VABI is sysv_abi, so the exports did not convert to
plain function pointers and the test did not compile.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 13:54:12 -05:00
ChadandClaude Opus 5.5 a05734a8cf test(agc): align the XOR swizzle volume texels at run time
MinGW rejects alignas(65536) on a global, as COFF objects allow at most
8 KiB, so the 64 KiB-aligned texels are taken from a larger buffer.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 13:54:03 -05:00