github ItsBlurf/PoorDS4 v0.1.0-rc44
PoorDS4 v0.1.0-rc44

latest release: v0.1.0-rc51
18 days ago

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 to eboot.bin. Games with modular input plugins (Stellar Blade, Wuchang: Fallen Feathers, Visage) have all libScePad calls intercepted and translated without input flickering or unhooked state reads.
  • Native DualSense Touchpad Geometry Emulation (Fixes Issue #14):

    • Updated touchResolutionY to 1080 (0x0438), presenting native DualSense geometry (1920x1080). Eliminates crashes in Unreal Engine titles when resetting controller settings or querying touchpad bounds.
  • 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.
  • Dynamic Pad-Client Stride Discovery & FW 7.61 Decoupling (Fixes Issues #9 & #12):

    • Dynamically scans libScePad code immediates for both 0x548/0x7ec0 (FW 6.02) and 0x5c8/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, resolving pad_client_table_discovery failure (result=-4) on FW 7.61.
  • 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_protection returns <= 0, resolving unsupported_firmware_abi rejection on older hypervisors.
  • Universal Controller Reset Shortcut (L1+R1+L2+R2 held for ~375ms):

    • Holding L1 + R1 + L2 + R2 simultaneously 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-bridge for non-destructive resets from shell, FTP, or launcher payloads.
  • Adaptive Queued-Read Engine & Schema 8 Diagnostics:

    • In SceRemotePlay, uses Sony's queued scePadRead API with automatic fallback to scePadReadState, 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.
  • 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

Don't miss a new PoorDS4 release

NewReleases is sending notifications on new releases.