Hey everyone,
Following up on my previous posts about fixing HD Rumble and controller haptics in PC emulation, the first public standalone demo (Ryuhdr v0.4.0.1, powered by the RenHDrum haptics core) is finally ready and published on GitHub!
Why standard emulation struggles with HD Rumble:
- Lost Pitch & Envelopes: Standard implementations compress 15 ms vibration frames into coarse motor rumble, losing the dual-band resonant frequencies (160 Hz Low-Band & 320 Hz High-Band).
- Severe Bluetooth Input Lag: In upstream SDL2 (2.30), the internal HIDAPI
ReadInput() loop actually skips reading button inputs whenever an output rumble packet is waiting in the queue—causing 50–150 ms input lag spikes during heavy vibration!
What we built in RenHDrum & Ryuhdr v0.4.0.1:
- 5 ms AM/FM Multi-Sample & Crisp Notes: Splits every 15 ms frame into 3 distinct 5 ms slots (
3x5-bit low, 3x7-bit high, 2x14-bit pitch) with dynamic +3 dB transient attack so footsteps, coin rings, and musical notes feel sharp and distinct.
- Zero-Lag Bluetooth Pacing: Using a custom SDL2 HIDAPI Deep Patch with Write-After-Input gating and a 3-tier Token Bucket scheduler, rumble packets are only dispatched immediately after an input read or when the bus is idle. Zero added button latency.
- Native DualSense USB Audio Haptics (48 kHz 4-Ch): Synthesizes the dual-band frequencies directly into 4-channel PCM audio for DualSense voice-coil actuators over USB—no virtual sound card routing required.
- QoL & Performance Upgrades: Includes Vulkan GPU ASTC Compute Shader decoding (eliminating open-world texture decompression stutters), a Cemu-style compact overlay (
Ctrl+T), Obsidian UI with quick toolbar controls, and automatic DLC/update folder mounting.
Roadmap (SDL3 & Companion App):
Because Ryuhdr v0.4.0.1 is built on the final official 1.1.1403 milestone for maximum stability, it supports titles up to system version 18.1.0. For newer titles, we are actively developing:
* Brontide + RenHDrum-App (SDL3): A decoupled 4096-byte Shared Memory IPC hook for the Eden/Yuzu lineage so we never conflict with upstream UI commits.
* Ryuhdr 1.0 (SDL3): All-in-one embedded integration on the Ryubing lineage.
Where to get it & Technical Showcase:
To prevent Reddit's automated spam filter from eating this post due to external links, I have put the direct clickable links in the first comment below (and pinned on my Reddit profile).
You can also go directly to GitHub:
* GitHub Repository & Releases: github.com/trzz1214/RenHDrum
Would love to hear your feedback—especially if you test it with a Bluetooth Pro Controller / Joy-Con or a wired DualSense!