PoorDS4 RC44 resolves some issues , introduces modular engine PRX hook discovery for Unreal Engine 4/5 titles, fixes touchpad geometry emulation, adds dynamic table stride discovery across firmware revisions, protects Player 1 DualSense controllers during Player 2 late join, and introduces the universal in-game reset shortcut (L1+R1+L2+R2).
What Changed
-
Game-Local Modular Engine PRX Hooking (Fixes Issue #11):
- Extended import hook scanning to inspect dynamic engine modules under
/app0/in addition toeboot.bin. Games with modular input plugins (Stellar Blade, Wuchang: Fallen Feathers, Visage) have alllibScePadcalls intercepted and translated without input flickering or unhooked state reads.
- Extended import hook scanning to inspect dynamic engine modules under
-
Native DualSense Touchpad Geometry Emulation (Fixes Issue #14):
- Updated
touchResolutionYto 1080 (0x0438), presenting native DualSense geometry (1920x1080). Eliminates crashes in Unreal Engine titles when resetting controller settings or querying touchpad bounds.
- Updated
-
Multi-Controller Slot Arbitration & DualSense Protection (Fixes Issues #1 & #10):
- Explicitly identifies DualSense (
0x054c:0x0ce6) and DualSense Edge (0x054c:0x0df2) hardware. Active DualSense slots are completely protected and will never be stolen by a late-joining DS4. - Implemented multi-controller slot hierarchy (
source-user-index-inactive,source-user-inactive-first,global-inactive-first) and lowered slot polling delay to 200ms with a 300-iteration window (60s total), attaching to late-joining Player 2 controllers within 200ms of slot allocation.
- Explicitly identifies DualSense (
-
Dynamic Pad-Client Stride Discovery & FW 7.61 Decoupling (Fixes Issues #9 & #12):
- Dynamically scans
libScePadcode immediates for both0x548/0x7ec0(FW 6.02) and0x5c8/0x8ac0(FW 8.60 – 12.40+). Added exact manifests for FW 6.02 (0x06020004) and FW 10.01 (0x10010000). - Decoupled candidate table validation (
entries > 0u && entries <= 8u) from pre-existing source user matching, resolvingpad_client_table_discoveryfailure (result=-4) on FW 7.61.
- Dynamically scans
-
Older Firmware (FW 4.03 – 5.50) Protection Fallback (Fixes Issues #2, #3, #5, #13):
- Added target protection fallback allowing proven wrapper targets when
kernel_get_vmem_protectionreturns<= 0, resolvingunsupported_firmware_abirejection on older hypervisors.
- Added target protection fallback allowing proven wrapper targets when
-
Universal Controller Reset Shortcut (
L1+R1+L2+R2held for ~375ms):- Holding
L1 + R1 + L2 + R2simultaneously on any connected controller (DS4 or DualSense) triggers an instant in-game re-synchronization. PoorDS4 quiesces active hooks, re-evaluates all pad slots, re-binds the controller to the correct profile, and re-attaches seamlessly without needing to reinject the payload. - Features 1-tick decay debouncing and fast direct atomic memory polling (~33ms) in the supervisor.
- Added IPC trigger file support via
/data/poords4/reset-game-pad-bridgefor non-destructive resets from shell, FTP, or launcher payloads.
- Holding
-
Adaptive Queued-Read Engine & Schema 8 Diagnostics:
- In
SceRemotePlay, uses Sony's queuedscePadReadAPI with automatic fallback toscePadReadState, ensuring reliable input streaming even when the state cache is idle. - Upgraded diagnostics to Schema 8, capturing live button/stick/trigger transition coordinates, source timestamps, and native-versus-fallback frame counters.
- In
-
Live Hardware Tested on PS5 Slim (CFI-2016 B01Y, System Software 11.600.005):
- Tested in EA Sports FC 26 Pragmata RE9 with a physical Sony DualShock 4 connected via Bluetooth as Player 1 then player 2 on fc26.
Downloads & Usage
| Asset | Description |
|---|---|
PoorDS4rc44.elf
| Main automatic wireless DS4 bridge payload (send to port 9021) |
PoorDS4-status.elf
| Non-invasive, read-only bridge status snapshot utility |
PoorDS4-stop.elf
| Cooperative stop utility for clean shutdown |
SHA256SUMS.txt
| Cryptographic checksums for release verification |