Commit Graph
10207 Commits
Author SHA1 Message Date
Oscar45397andClaude Opus 5.5 06b7a58b1b fix(libkernel): return ENOMEM when mapping unallocated direct memory
Mapping a direct memory range that includes an unallocated physical
page threw std::invalid_argument and ended the process. It now returns
ENOMEM before anything is mapped, as shadPS4's MemoryManager::MapMemory
does.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 18:06:45 +01:00
Kyon 92ffa8f5ca feat(libSceSystemLogger2NativeQueueClient): declare an export 2026-10-30 17:04:24 +00:00
BunnyFlandClaude Opus 5.5 708cf647d1 test(libScePad): check the five queries before scePadInit
Firmware 13.42 checks the initialized flag first in all five and
returns 0x80920005 without writing the outputs. The debt entry now
says where the behaviour comes from.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 17:57:01 +01:00
JAB-devandClaude Sonnet 5.5 a9c4e82299 docs(libSceNgs2): say the port volume measurements ran on the PS5 module on a PC
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-30 18:55:55 +02:00
BunnyFlandClaude Opus 5.5 071f80c6ef docs(libSceAgcDriver): say the unavailable calls' answers come from disassembly
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 17:54:32 +01:00
BunnyFlandClaude Opus 5.5 ed27eae448 docs(libSceMbus): say where all three device ID conversions come from
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 17:53:57 +01:00
BunnyFlandClaude Opus 5.5 82e8fa7539 test(libSceNpCommon): pin the firmware's lost close inside a 16th-level object
Firmware 13.42 keeps the type of the 16th nested container in the context
slot that also holds the saved parser state, so a call that ends inside a
16th-level object leaves the outermost object open. The parser here does
the same; the test pins it, and the debt file records it together with
where the parser's behaviour comes from.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 17:52:47 +01:00
JAB-devandClaude Sonnet 5.5 8c1291efdb docs(libSceNgs2): put the mastering gain gaps first and drop the stale nonfinite integer render sentence
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-30 18:51:59 +02:00
Oscar45397andClaude Opus 5.5 287f43e004 fix(libkernel): return EFAULT for a null virtual range name
KytyPS5 and shadPS4 return EFAULT for a null name. The test keeps that
and the rename and clear checks, and drops the null address, zero length
and past-the-end cases that no reference covers; the debt entry records
them as unknown, with the 32-byte name limit.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 17:47:22 +01:00
BunnyFlandClaude Opus 5.5 dd0bc0b781 feat(libkernel_sys): add the AMM writers for PRT maps, address and counter writes, waits and event queues
sceKernelWriteMapCommand2, sceKernelWriteUnmapToPrtCommand,
sceKernelWriteWriteAddressCommand, sceKernelWriteWriteCounterCommand,
sceKernelWriteWaitOnAddressCommand, sceKernelWriteWaitOnCounterCommand
and sceKernelWriteEventQueueOnCompletionCommand follow the checks of
firmware 13.42's libkernel and record this project's command layout.
Without the PRT flag, sceKernelWriteMapCommand2 is
sceKernelWriteMapCommand, as on the console. The debt files record where
the existing writers' checks differ from the firmware.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 17:45:00 +01:00
JAB-devandClaude Sonnet 5.5 8ae66c36b3 fix(libSceNgs2): convert PCM_I16L render output as the PS5 module does
PS5 firmware 3.20 and 4.03 write trunc(clamp(x * 32767.0f, -32767, 32767)) into a PCM_I16L render buffer, with the product in float, NaN written as 0 and -32768 never written; ours rounded x * 32768 to nearest, wrote -32768 for -1 and threw on a nonfinite sample. Combined with the sampler's exact x / 32768 input, an I16 source now comes back one step toward zero, so the existing render, stream and gain tests expect that, and a new sweep checks the measured values on 1, 2, 6 and 8 channels.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-30 18:37:47 +02:00
JAB-devandClaude Sonnet 5 26833d555f docs(libSceNgs2): list every unmeasured port volume case in the debt entry
Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-10-30 18:36:52 +02:00
Adrià 8f756acf59 Merge pull request #13289 from maskym/fix/libressl-select-next-proto
fix(libSceLibreSsl): select protocols from unvalidated lists like the module
2026-10-30 17:27:40 +01:00
Adrià 040d025620 Merge pull request #13121 from kyon-eth/feat/libc-internal-320-exports
feat(libSceLibcInternal): declare 297 callable exports
2026-10-30 17:27:31 +01:00
Adrià e56fe75c4e Merge pull request #13281 from hypermoist/feat/np-memory-stream
feat(libSceNpCommon): implement sce::np::MemoryStreamReader and MemoryStreamWriter
2026-10-30 17:27:23 +01:00
JAB-devandClaude Sonnet 5.5 eb81f61955 docs(libSceNgs2): scope the port volume debt entry to what was measured
The clamp was measured on a sampler voice's ports only, so the entry now says that a port past the count on another rack's voice and sceNgs2VoiceGetPortInfo still throw, and it no longer repeats the port gain ramp, which a separate change implements.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-30 18:21:43 +02:00
JAB-devandClaude Sonnet 5.5 0dc600e7fa fix(libSceNgs2): clamp the port volume to [0, 32] as the PS5 module does
PS5 firmware 3.20 and 4.03 clamp the port volume of VoiceControl param 0x2 and RunCommands command 6 to [0, 32], keeping NaN and -0, and return 0 for every value. Command 6 reads the low 32 bits of its value as a float whatever the value type and ignores numValues and flags, and a batch of port volumes naming a port past an 8-port rack returns 0x804A8357 without applying any of them. Ours stored the value raw, threw on a value type other than float and threw on the bad port after applying the earlier commands; other command ids and the unmeasured bad-port cases keep their old behaviour.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-30 18:21:43 +02:00
HorizonCoding 161be2cf24 feat(libSceFreeTypeOt): implement FT_SqrtFixed and FT_Sqrt32 2026-10-30 18:10:00 +02:00
BunnyFlandClaude Opus 5.5 d34913e943 feat(libSceAgcDriver): return the retail errors of the unavailable driver calls
Firmware 13.42 libSceAgcDriver.sprx answers sceAgcDriverAcquireRazorACQ,
GetPaDebugInterfaceVersion, SetHsOffchipParamDirect,
SubmitMultiCommandBuffersDirect, SubmitToRazorACQ and
SuspendPointSubmitDirect with 0x8A6D0001 and ModuleRegistration with
0x8A6D0003 for every input, like SetTargetRingForDiag.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 17:09:17 +01:00
Adrià 9304896d89 Merge pull request #12135 from Oscar45397/fix/libkernel-raise-short-sleep
fix(libkernel): deliver raises at the spin that ends a sleep on Windows
2026-10-30 17:05:05 +01:00
Kyon b2ac213636 feat(libSceVideoOutSecondary): declare two callable exports 2026-10-30 16:04:46 +00:00
Kyon c403ae63fb docs(libSceIme): clarify unidentified exports 2026-10-30 16:02:28 +00:00
Kyon e2d8b453fb Merge remote-tracking branch 'origin/main' into feat/ime-320-exports 2026-10-30 16:02:18 +00:00
Adrià ad2fbd74cd Merge pull request #13309 from ntamas94/docs/ps4-fw1071-audiodec
docs(libSceAudiodec): confirm sceAudiodecCreateDecoder word lengths on PS4 10.71
2026-10-30 16:59:50 +01:00
Kyon b8d214e840 docs(libSceBemp2sys): clarify unidentified exports 2026-10-30 15:58:01 +00:00
Kyon ae368eca54 Merge remote-tracking branch 'origin/main' into feat/bemp2sys-320-exports 2026-10-30 15:58:00 +00:00
BunnyFlandClaude Opus 5.5 c1aefda001 feat(libscembus): add the device ID conversions
Implement sceMbusConvertToLocalDeviceId, sceMbusConvertToMbusDeviceId and
the same-class case of sceMbusConvertToLocalDeviceId2 from the firmware
13.42 module. A different class needs the Mbus service and throws.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 16:52:22 +01:00
BunnyFlandClaude Opus 5.5 2f9581050c feat(libScePad): answer the motion, Bluetooth and Leonardo queries
scePadGetMotionTimerUnit, scePadGetMotionSensorPosition,
scePadGetSphereRadius, scePadGetBluetoothAddress and
scePadParseUniqueDataLeonardo follow firmware 13.42's handle and
device checks for the one DualSense this library reports.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 16:48:37 +01:00
hypermoist 7ac405d6ff Merge remote-tracking branch 'upstream/main' into feat/libwvoec-skeleton-stubs 2026-10-31 04:44:50 +13:00
hypermoist 6ef7ac789f Merge remote-tracking branch 'upstream/main' into feat/libwebrtc-skeleton-stubs 2026-10-31 04:44:08 +13:00
hypermoist 005220849b Merge remote-tracking branch 'upstream/main' into feat/libSceWebTransport-skeleton-stubs 2026-10-31 04:43:24 +13:00
hypermoist 331767bee4 Merge remote-tracking branch 'upstream/main' into feat/libSceVsePlugin-skeleton-stubs 2026-10-31 04:42:42 +13:00
hypermoist 7afad8e468 Merge remote-tracking branch 'upstream/main' into feat/libSceVideoStreamingEngineAudioOnly-skeleton-stubs 2026-10-31 04:41:59 +13:00
hypermoist cb9c136669 Merge remote-tracking branch 'upstream/main' into feat/libSceUgcServiceS3-skeleton-stubs 2026-10-31 04:41:18 +13:00
hypermoist 13f828be35 Merge remote-tracking branch 'upstream/main' into feat/libSceUgcBgUploaderClient-skeleton-stubs 2026-10-31 04:40:38 +13:00
hypermoist 2faeb777be Merge remote-tracking branch 'upstream/main' into feat/libSceTtsEngine-skeleton-stubs 2026-10-31 04:39:56 +13:00
hypermoist efcc4e95b0 Merge remote-tracking branch 'upstream/main' into feat/libScePlayReady4L-skeleton-stubs 2026-10-31 04:38:42 +13:00
mrfelek 17c3920ac4 perf(agc): keep a staged element in place when its frames are faster
Staging a swept write-only element (#7618) costs a copy-in and a
copy-back per use. In PPSA03912's town that saves GPU time, but in its
main menu the 202 MiB element is faster in place (73 vs 91 ms of GPU
time per frame), so the menu lost about a fifth of its frames.

Decide per element by measurement. The busiest element is probed in
its current mode, the other mode and its current mode again; the other
mode is kept when its frames are faster by more than twice the
standard error. A repeated answer doubles the wait for the next probe
from 20 s up to 160 s, and a jump of the frame GPU time by more than a
quarter (a scene change) probes again at once. The frame GPU time comes
from the whole-batch timestamps, which the first probe turns on.
Resource builds made under the other decision are not reused.
APS5_NO_ADAPTIVE_STAGING=1 stages every eligible element, as before.

The policy is in AdaptiveStaging.hpp, fed by the caller with frame
counts and time; agc_adaptive_staging covers keeping the faster mode,
frame noise, the back-off cap, a scene change and the share threshold.

AI-assisted. Tested by me on my own machine.
2026-10-30 16:38:05 +01:00
hypermoist 41bac85655 Merge remote-tracking branch 'upstream/main' into feat/libSceNpSessionSignalingCrossplay-skeleton-stubs 2026-10-31 04:38:04 +13:00
hypermoist 82689c1b91 Merge remote-tracking branch 'upstream/main' into feat/libSceFontGs.native-skeleton-stubs 2026-10-31 04:37:24 +13:00
hypermoist 2fff68e1a6 Merge remote-tracking branch 'upstream/main' into feat/libSceFlexContent-skeleton-stubs 2026-10-31 04:36:44 +13:00
hypermoist fce392181b Merge remote-tracking branch 'upstream/main' into feat/libSceCffMgr-skeleton-stubs 2026-10-31 04:35:57 +13:00
KernelPanicNT b08d773dd0 feat(libSceNpEntitlementAccess): implement sceNpEntitlementAccessGetAddcontEntitlementInfoIndividual
Take the user ID, service label, entitlement label and info of the
runtime declaration in dlc_emu. A user ID of -1 returns the parameter
error before any other check; any other ID returns what
sceNpEntitlementAccessGetAddcontEntitlementInfo returns for the label,
including the not-found error for a label the entitlements file does
not list. Record the unverified prototype, the error order and the
label checks dlc_emu makes that this export does not in the debt.
2026-10-30 15:35:01 +00:00
Adrià d09e7a46e9 fix(libScePad): resolve the merge with ShowPadStatus in the volume actions 2026-10-30 16:29:56 +01:00
MarcZX10 737bcb8f69 refactor(libScePad): own the shared host volume state
The volume, mute and focus state that libSceAudioOut applies and libSceVideoOut changes now lives in libScePad, which both libraries already link, instead of in libSceAudioOut. The tests that compile the state directly and the environment reference follow the file.
2026-10-30 16:29:55 +01:00
MarcZX10 31e13ce13f docs(env): list ANYPS5_VOLUME and ANYPS5_MUTE_ON_FOCUS_LOSS
Both are read in HostVolumeState.cpp when video output starts, and both refuse an invalid value with an error naming the variable.
2026-10-30 16:29:55 +01:00
hypermoist 4c8f739987 Merge remote-tracking branch 'upstream/main' into feat/libSceCdlgAdIdClient-skeleton-stubs 2026-10-31 04:29:44 +13:00
Adrià 9f748f4d8e Merge pull request #13036 from edubox/feat/npcpp-matchmaking
feat(libSceNpCppWebApi): bring up Matchmaking V1 offline
2026-10-30 16:29:21 +01:00
KernelPanicNT 7a0fe8bde1 feat(libSceNpWebApi): implement handle aborts, request options and timeouts
Give sceNpWebApiAbortHandle, sceNpWebApiAddHttpRequestHeader,
sceNpWebApiCheckTimeout, sceNpWebApiCreateMultipartRequest,
sceNpWebApiSendRequest2, sceNpWebApiSetHandleTimeout,
sceNpWebApiSetMultipartContentType and sceNpWebApiSetRequestTimeout
their prototypes and the offline behaviour of the existing model.

Requests keep a multipart flag and a timeout whose timer starts on the
first send; CheckTimeout aborts expired requests at most once per
millisecond. The timeout unit is unverified: shadPS4 logs it as
milliseconds but adds it to microsecond process time, which is what
is done here. Handles created from SDK 3.00 get a timer slot. Headers
and multipart content types are validated and dropped, since nothing
is sent. Multipart parts and UtilityParseNpId still throw.
2026-10-30 15:29:17 +00:00
Adrià 91cd8ac6fd Merge pull request #13049 from JJenkx/fix/libc-character-scan-lengths
fix(libc): ignore non-wide lengths on character scans
2026-10-30 16:25:56 +01:00