Commit Graph
185 Commits
Author SHA1 Message Date
EdouardSenceandClaude Opus 5.5 d71853cf25 feat(pad): add a Shake input that swings the reported motion while held
Some titles stop on a prompt to shake the controller, which keyboard players
and controllers without motion sensors cannot answer. While the Shake input is
held (X by default), the composed pad state reports motion with the
acceleration and angular velocity flipping sign every 50 ms; a controller's own
sensor data is used otherwise.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 01:16:53 +02:00
Adrià eb1a15b5cc Merge pull request #6314 from eliyarson/feat/relinker-game-patches
feat(relinker): add conversion-time game patches
2026-10-19 00:37:51 +02:00
Adrià 8a456334f6 Merge pull request #6240 from ArjenS-LA/fix/guest-registry-weak-imports
fix(relinker): preserve weak imports in guest module registries
2026-10-19 00:06:30 +02:00
AlxcBTW f0ec9bd2a0 Merge remote-tracking branch 'origin/main' into pr/input-analog-keys 2026-10-18 22:27:23 +02:00
Dean effb7d2d5a Merge pull request #7498 from AlxcBTW/pr/input-slow-mice
fix(libScePad): smooth a slow-reporting mouse over its measured report interval
2026-10-19 09:22:19 +13:00
Dean ce396a5d41 Merge pull request #7497 from AlxcBTW/pr/input-default-l2
feat(libScePad): bind L2 to R and the first mouse side button
2026-10-19 09:22:11 +13:00
Dean 65b0ad288b Merge pull request #7496 from AlxcBTW/pr/input-capture-hotkey
feat(libScePad): toggle mouse capture with F7 beside the middle button
2026-10-19 09:21:58 +13:00
Adrià fd58ca321e Merge pull request #6190 from devavijitsingh/feat/web-batch-conversion
feat(web): convert multiple app ZIPs as one bundle
2026-10-18 22:18:18 +02:00
Eli Yarson 346b0a92ca feat(relinker): add conversion-time game patches
A per-game relinker-patches.toml (or --patches) replaces verified bytes in
the input executable and bundled modules before conversion. Entries are
checked against the expected bytes and against every in-place writer,
the ELF header range and relocation targets. An <output-stem>.patches.toml
manifest records the applied entries, and --verify-patches checks an input
or a converted output. With no patch file the output is unchanged.
2026-10-18 14:57:13 -03:00
Dean c3591adf97 Merge pull request #7510 from AlxcBTW/pr/crash-stack-words-v4
feat(libc): dump the faulting thread's stack words in Windows crash reports
2026-10-19 06:52:21 +13:00
AlxcBTW 5dbdd6b797 Merge main into pr/input-analog-keys 2026-10-18 18:51:35 +02:00
Karim Masmoudi 57e52c1f03 fix(relinker): report processor 0 from RDTSCP under --to-rosetta
Rosetta sets RDTSCP's ECX to its constant TSC_AUX, 0xAAAAAAAB, which is
not a processor index. --to-rosetta already makes RDPID return processor
0 for the same reason, so code reading the processor through RDTSCP saw
a different value from code reading it through RDPID.

--to-rosetta now moves RDTSCP into an optional stub that runs the
instruction unchanged and then loads 0 into ECX with a MOV, which
leaves the counter in EDX:EAX and the flags as they were. A site with no
movable instruction after it for the jump is kept, as for RDPID. The
Intel target and a plain relink are unchanged.
2026-10-18 18:27:15 +02:00
Yunus Shaikh 0172d28496 Merge main into feat/videoout-performance-overlay 2026-10-18 05:08:24 -07:00
AlxcBTW 127ee82f02 feat(libc): dump the faulting thread's stack words in Windows crash reports
APS5_CRASH_STACK_BYTES=<n> prints n bytes of stack words from rsp after the
stack return address candidates, then eight words at every distinct stack word
that points at readable, non-executable memory outside the thread's stack.
Off when the variable is unset, empty or 0.
2026-10-18 12:20:10 +02:00
AlxcBTW 06ca6a066b fix(libScePad): smooth a slow-reporting mouse over its measured report interval 2026-10-18 11:00:03 +02:00
AlxcBTW 367d46e480 feat(libScePad): bind L2 to R and the first mouse side button 2026-10-18 11:00:02 +02:00
AlxcBTW 53af7be7ee feat(libScePad): toggle mouse capture with F7 beside the middle button 2026-10-18 11:00:02 +02:00
AlxcBTW 438e1baa3e feat(libScePad): ramp keyboard-driven triggers over TriggerRampMs 2026-10-18 11:00:01 +02:00
AlxcBTW 64a9979268 feat(libScePad): ramp keyboard sticks over KeyboardRampMs 2026-10-18 11:00:01 +02:00
AlxcBTW a0f14cdf14 feat(libScePad): tilt keyboard sticks partially while a modifier key is held 2026-10-18 11:00:01 +02:00
Dean 883cb1ac52 Merge pull request #6231 from ArjenS-LA/fix/explicit-homebrew-module-directories
fix(relinker): allow explicit module directories without standard folders
2026-10-18 18:58:22 +13:00
Dean 66e71b63d1 Merge pull request #5390 from hugodearaujo/feat/agc-sparse-unaligned-import
feat(agc): import shared ranges whose backing offset is not 64 KiB aligned
2026-10-18 18:22:50 +13:00
Dean Galvin 489c64ecb5 Merge main into fix/explicit-homebrew-module-directories 2026-10-18 17:43:12 +13:00
thuanquangandClaude Opus 5.5 a7499e072f fix(relinker): skip a dumper's backup copy of a module beside the module
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 10:41:02 +07:00
Dean c4fea909a5 Merge pull request #7335 from EagleBearerYS/prep/np-trophies-part2
feat(libSceNpTrophy2,libSceNpUniversalDataSystem): record trophy unlocks and statistics
2026-10-18 15:58:22 +13:00
Dean 199e2ceb2f Merge pull request #7262 from EagleBearerYS/prep/np-trophies
feat(libSceNpTrophy2): report the title's trophy data from trophyNN.ucp
2026-10-18 15:00:53 +13:00
Dean 97c37af020 Merge pull request #6239 from ArjenS-LA/fix/audit-named-homebrew-imports
fix(tools): audit ordinary homebrew import names
2026-10-18 12:57:29 +13:00
Yunus Shaikh be9ade0f01 docs: say which posted trophy unlocks are refused and what stops a title
USAGE.md describes the refused posted unlocks and their log line, and
says that the icon queries and a damaged or unwritable unlock or
statistics file stop the game with an error. The debt entries of
libSceNpTrophy2 and libSceNpUniversalDataSystem no longer say that any
posted id is stored. Both USAGE.md and the libSceNpTrophy2 entry say
that without trophy data the platinum is not unlocked when the other
trophies are.
2026-10-17 23:29:24 +00:00
Yunus Shaikh 75ca9e469a docs: describe trophy statistics in USAGE 2026-10-17 23:29:17 +00:00
Yunus Shaikh 42ddbdf89e docs: describe trophy unlocks in USAGE 2026-10-17 23:28:50 +00:00
Yunus Shaikh 61e12c75fd docs: describe trophy data in USAGE 2026-10-17 23:26:06 +00:00
Yunus Shaikh 2a3946dbb0 Merge main into feat/videoout-performance-overlay
Main adds StorageTextureCacheBudget where this branch adds the public
LargestDeviceLocalHeap wrapper, in both the header and the source.
Keep both.
2026-10-17 15:57:45 -07:00
Dean c756343a89 Merge pull request #7255 from klosixgaming-arch/patch-1
docs(playgo): PPSA03490 needs APS5_PLAYGO_UNLISTED_CHUNKS=absent
2026-10-18 10:39:04 +13:00
Dean 8690d92f07 Merge pull request #7071 from SleglJan/fix/storage-budget-pressure
fix(agc): let the storage image cache budget follow the heap's use like the sampled one
2026-10-18 10:29:01 +13:00
klosixgaming-arch 6f7ec9b143 docs(playgo): PPSA03490 needs APS5_PLAYGO_UNLISTED_CHUNKS=absent
PPSA03490 (Demon Slayer: Kimetsu no Yaiba - The Hinokami Chronicles) has no playgo-* files in sce_sys. Its startup code asks scePlayGoGetLocus about chunk IDs 0, 1, 2, ... and stops when it gets SCE_PLAYGO_ERROR_BAD_CHUNK_ID, appending each ID to an array. With APS5_PLAYGO_UNLISTED_CHUNKS=installed no ID ever fails, the array keeps growing and startup aborts with 'Ran out of memory allocating 5565054976 bytes with alignment 65536'. With =absent the walk ends and the title gets past its logos to the menu and intro.

AI-assisted: yes. Written with AI assistance and reviewed by me.
2026-10-17 14:53:58 -05:00
hugodearaujo ef622e2f8f feat(agc): import shared ranges whose backing offset is not 64 KiB aligned
A sparse import binds whole 64 KiB blocks, so a range whose memfd offset
is not a multiple of 64 KiB fell back to one UDMABUF_CREATE and, above
udmabuf's size limit, to copies. The sparse buffer now starts at the
block below the range: HostImport::lead holds that distance, the
import's device address points at the range itself, and every offset
into the import's buffer goes through HostImportOffset.
2026-10-17 15:03:33 -03:00
ArjenS-LA 0eb94a28cd fix(tools): preserve registry validation when integrating main 2026-10-17 10:44:01 -07:00
MarcZX100 38ed5aa701 docs(usage): explain unlisted PlayGo chunk choices 2026-10-17 14:02:26 +00:00
Dean 1fcfc267af Merge pull request #7128 from Pouare514/fix/import-audit-host-deps
fix(tools): walk host-to-host .prx dependencies of built libs in import audit
2026-10-18 02:26:04 +13:00
Pouare514 778153c29e fix(import-audit): walk host-to-host .prx dependencies of built libs 2026-10-17 14:47:42 +02:00
XairRrR a9377e34ba feat(pad): touch the left or right touchpad half from the input command file
APS5_PAD_INPUT_FILE commands can set bit 0x200000 or 0x400000 to put a
finger on the left or right half of the touchpad, as the TouchLeft and
TouchRight keys do, so scripted runs can press touchpad combinations.
tools/pad_input.py queues them as touch-left and touch-right.

AI-assisted: yes
2026-10-17 13:27:54 +02:00
Jan ŠléglandClaude Fable 5.1 39c23664bd fix(agc): let the storage image cache budget follow the heap's use like the sampled one
StorageTextureBudget gave the storage image cache a quarter of the VK_EXT_memory_budget
budget of the largest device-local heap (capped at TextureCacheBudget, never below 512 MiB)
whatever else the heap held, while SampledTextureBudget takes what that budget leaves after
the heap's other use. On a 10 GB card the storage cache kept 2024-2170 MiB into a level load
whose depth and render target allocations then failed with VK_ERROR_OUT_OF_DEVICE_MEMORY
with the heap at its reported budget where a run logged it.

The storage image budget is now what the reported budget leaves after the heap's use other
than the cached storage images, the unused part of the sampled textures' 2 GiB floor and an
eighth of the budget; the caps at a quarter of the budget and at TextureCacheBudget and the
512 MiB floor stay. The sampled budget still reserves TextureCacheBudget for the storage
cache, at least the storage cap, and the storage budget reserves the sampled textures alive,
so neither counts bytes the other may take; while the sampled textures alive stay within
their floor the sampled budget falls first, then the storage budget, and above it both fall
together. The budget line also prints when the storage image budget moves by more than a
tenth, with its previous value, and StorageTextureCacheBudget is exported for the execution
test.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 12:33:05 +02:00
Adrià 7c3bfa8632 Merge pull request #5962 from nikowolf123/feat/libc-crash-register-text
feat(libc): print the text that registers point at in Windows crash reports
2026-10-17 06:51:43 +02:00
Dean a8df2bfcf1 Merge pull request #6587 from xXPBSXx/docs/input-mapping-defaults
docs(input): list the default keyboard and mouse bindings
2026-10-17 17:25:39 +13:00
Dean 4ffa54c1f3 Merge pull request #6873 from parl0v/docs/texture-cache-budget
docs(usage): describe the texture cache budgets and APS5_TEXTURE_CACHE_MIB
2026-10-17 17:25:12 +13:00
Dean aeb8f62b86 Merge pull request #6568 from xXPBSXx/docs/usage-shader-cache-size
docs(usage): state that the shader cache directory has no size limit
2026-10-17 16:45:44 +13:00
NikoandClaude Opus 5.5 b263cbbb1b feat(libc): print the text that registers point at in Windows crash reports
Unreal titles end in their own libc fatal path with the UTF-16
LowLevelFatalError message in a register, and the crash report shows
only the first 64 bytes of it as hex words, so the message is lost
(#4238: Demon Slayer PPSA03490, Stray PPSA02100).

For every general register that points at readable memory starting
with at least four printable ASCII characters, as UTF-16LE or as single
bytes, the report now prints the text up to a NUL, the first other
character, 512 characters or the end of readable memory (each page is
checked with VirtualQuery before it is read).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 23:33:43 +02:00
Alexej Szpevák 819d5c4a6d docs(usage): describe app0.zar 2026-10-16 20:03:32 +02:00
Josip Parlov 264e026c5d docs(usage): describe the texture cache budgets and APS5_TEXTURE_CACHE_MIB 2026-10-16 17:09:11 +02:00
ArjenS-LA ef3c83d6be fix(tools): resolve named audit imports through NIDs 2026-10-16 04:44:34 -07:00