Commit Graph
4862 Commits
Author SHA1 Message Date
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 0372190240 Merge pull request #911 from Pacuka/fix/audiodec-native
fix(audiodec): build libSceAudiodec.native from the libSceAudiodec sources
2026-10-07 10:18:31 +13:00
Dean 3e79925c4b Merge pull request #912 from Pacuka/fix/trophy2-gameinfo-null-data
fix(trophy2): accept a null data or details in sceNpTrophy2GetGameInfo
2026-10-07 10:17:49 +13:00
Dean 943be291a6 Merge pull request #893 from merwie/fix/avplayer-frame-at-jump-while-paused
fix(avplayer): deliver the frame at a jump while paused
2026-10-07 10:17:07 +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 df247280db Merge pull request #890 from alfalfa-star/fix/pad-read-state-invalid-handle
fix(pad): return INVALID_HANDLE from scePadReadState for an unknown handle
2026-10-07 10:15:00 +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 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 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
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
Kikoarl 9edc22a4a9 feat(libSceMsgDialog.native): implement sceMsgDialogGetStatus 2026-10-06 21:56:43 +02:00
Ethan Barr c70c2b3526 fix(libc): honor sscanf_s count conversion lengths 2026-10-06 12:23:04 -07: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
Akhil MoolaandClaude Opus 5.5 ad56d004f2 fix(agc): accept a border colour table that no address mode reads
A sampler descriptor with BORDER_COLOR_TYPE 3 names an entry of the border
colour table, but the hardware reads it only through an axis that addresses
the border (clamp modes 4 to 7). DecodeSamplerResource threw for every
table border colour, so a sampler that clamps to the edge on all axes, as
PPSA21567's Armadillo Challenge 2 compute shader uses, stopped the title
although its border colour is never sampled. It now throws only when an
axis uses a border mode, the same rule the colour compare emulation
applies, and otherwise uses a fixed Vulkan border colour.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 12:49:24 -06:00