Feel the Switch's original rumble
on PC emulators
RenHDrum is an open haptics core that brings the Nintendo Switch's HD Rumble back to PC emulation. Most emulators squeeze a game's rumble into two motor strengths, so the notes, footsteps and texture you feel on a real Switch are lost. RenHDrum keeps every frequency, paces each packet like the console does, and drives the Pro Controller and the DualSense's voice coils, with no extra latency on your buttons.
True HD Rumble, wired or wireless.
Real voice-coil haptics over USB. Over Bluetooth: full HD haptics in Brontide; Ryuhdr plays with standard rumble for now.
Other controllers (Switch 2 Pro, Steam Controller, Xbox) are in research and not playable yet. See status
Choose Your Emulator
Both emulators share the same RenHDrum haptics core and recommended defaults. Pick the one that fits your setup best.
Brontide 1.1.0
NewModern Eden lineage with built-in HD Rumble Studio & Golden Thunder theme.
- Want to play newer games that need a recent firmware.
- Prefer built-in haptic tuning (HD Rumble Studio & “Try the thunder” test).
- Like an optimized LTO + PGO build with a fresh Golden Thunder look.
Ryuhdr 0.5.0
StableThe first RenHDrum emulator: a Ryujinx 1.1.1403 fork with the gold-standard haptics logic.
- Prefer an all-in-one Ryujinx-based emulator with HD Rumble built in.
- Want the gold-standard haptics that RenHDrum is checked against.
- Play games that already run well on Ryujinx 1.1.1403.
Ryu-HDRum
Coming soonRyubing Canary base + RenHDrum on SDL3. Controller input and haptics rewrite currently in development.
What's new • Brontide 1.1.0 & Ryuhdr 0.5.0
DualSense Bluetooth voice-coil haptics, seamless controller switching, and streamlined problem reporting across both emulators.
DualSense HD Rumble, now over Bluetooth
Previously, DualSense voice-coil haptics only worked over a wired USB cable because Windows only transmits haptic audio streams across physical USB endpoints; Bluetooth has no such audio pipe. Brontide now packs HD Rumble waveforms directly into compact HID telemetry reports sent straight to the controller at ~94 reports per second, cutting the cord completely. Crisp notes over Bluetooth are disabled by default because wireless report bandwidth is coarser, but can be enabled in HD Rumble settings. Report format learned from SAxense by egormanga (MPL-2.0); our implementation is written from scratch. Wireless voice-coil haptics will arrive in Ryuhdr 0.5.1.
Plug in and play
Connect a Switch Pro Controller or DualSense: it is recognized and mapped to Player 1 automatically, with no manual setup needed.
Report a controller problem
One click in the Help menu packs your controller logs into a clean zip on your Desktop and opens GitHub Issues. Nothing is ever sent automatically without your review.
Update notice
A non-intrusive alert lets you know when a new version is released. It never downloads or installs anything silently, and does not require clearing shader or PTC caches.
Why Standard Emulation Fails at HD Rumble
Most emulators treat HD Rumble as ordinary motor vibration or choke the Bluetooth HID pipeline with unthrottled packets. RenHDrum solves this fundamentally through three core innovations.
5 ms AM/FM Multi-Sample & Crisp Notes
Instead of compressing 15 ms vibration frames into a dull, coarse pulse, RenHDrum splits every frame into 3 distinct 5 ms slots (3×5-bit low-band, 3×7-bit high-band, and 2×14-bit pitch) following the reverse-engineered hardware envelope. Our Crisp Notes algorithm applies dynamic +3 dB transient attack with -3 dB body damping, making piano keys, footsteps, and coin rings bounce with authentic tactile crispness.
Zero-Lag Bluetooth & Idle-Gated Pacing
Traditional approaches blindly queue rumble packets into the OS Bluetooth stack. When buffers congest, button inputs suffer massive lag spikes (50–150 ms) or short pulses (<20 ms) are dropped entirely. RenHDrum orchestrates packets via Idle-Gated No-Queue and Bluetooth After Input gating with a 3-tier Token Bucket scheduler: haptic data is dispatched strictly when the bus is idle or immediately following an input read.
DualSense USB Audio Haptics DSP (48 kHz 4-Ch)
Tapping into the dual voice-coil actuators (VCM) inside the PlayStation DualSense over USB, RenHDrum synthesizes the dual frequency bands directly into 4-channel 48 kHz 32-bit float audio (channels 3 & 4). Applying non-linear psychoacoustic curves and dynamic transient peaking, it translates native Switch HD Rumble waveforms into stunning physical haptics on PC without third-party audio routing tools.
| Tactile Metric / Capability | Standard Emulation (ERM / Raw Queue) | RenHDrum Core Engine |
|---|---|---|
| Pitch Frequency & 5 ms AM/FM Envelope Resolution of notes & textures | Blended coarse rumble, pitch information lost | Micro-second accurate dual-band (160 Hz & 320 Hz) across 3x 5 ms slots |
| Bluetooth Button Input Latency Gamepad responsiveness while rumbling | Severe input lag spikes (50–150 ms) caused by buffer congestion | Zero added input lag (Idle-Gated, Write-After-Input, Token Bucket) |
| Short Vibration Pulses (< 20 ms) Subtle tactile cues like drops & clicks | Swallowed or delayed by queue overhead | Instant +3 dB transient attack (Crisp Notes), zero hangover |
| DualSense USB Haptic Synthesis Voice-coil actuator support on PC | Coarse motor rumble or requires virtual sound cards | Native 48 kHz 4-channel PCM VCM Audio Haptics DSP built-in |
| Engine Architecture Modularity & performance overhead | Hardcoded inside monolithic emulator GUI code | Pure Rust standalone library (renhdrum.dll, C ABI, Zero-Allocation) |
The RenHDrum Haptic Ecosystem
Started as a prototype to fix coarse rumble, evolved into a shared Rust core powering three emulators and native PC ports.
Ryuhdr
Built on Ryujinx 1.1.1403 (C#, deep-patched SDL2). The original prototype and gold standard reference for every haptic algorithm in RenHDrum.
View & Download →Brontide
Modern Eden lineage (C++, patched SDL3) with built-in HD Rumble Studio, Golden Thunder theme, and renhdrum.dll core.
View & Download →Ryu-HDRum
All-in-one fork of Ryubing Canary-1.3.351 (C#, patched SDL3) with renhdrum.dll embedded directly inside the emulator and a rewritten controller layer.
Static Recompilation & Native PC
Native Switch-to-Windows PC ports can link directly with renhdrum.dll via its zero-allocation C ABI for authentic HD Rumble and DualSense haptics without an emulation layer.
From Deep-Patched SDL2 to Pure SDL3 Hooks
Overcoming upstream driver bottlenecks in HIDAPI to build a unified haptic ecosystem.
The Engineering Story: Why We Deep-Patched SDL2
When integrating HD Rumble into Ryujinx (which relies on SDL2 2.30), standard HID APIs failed completely. Upstream SDL2 returned "unsupported" for Switch vibration commands, misidentified Bluetooth Pro Controllers as USB devices (bus 0x03), and most critically: SDL2's internal ReadInput() function skipped reading controller input reports entirely whenever an output rumble packet was pending in its queue!
To eliminate this flaw in Ryuhdr 0.4.0.1, we engineered a custom Deep Patch directly inside SDL2's C HIDAPI layer. We backported raw packet streaming, repaired Bluetooth bus classification, and implemented our hardware Write-After-Input gate. Moving into next-generation emulators like Eden (Yuzu lineage) and Ryubing with SDL3, SDL3 provides native raw effect pipes (HIDAPI_DriverSwitch_SendJoystickEffect) but continues to enforce rigid queueing. With our empirical SDL2 insights, RenHDrum now connects cleanly into SDL3 via a lightweight hook to the standalone zero-allocation Rust engine.
Ryuhdr
Born from a simple frustration with coarse rumble and swallowed button inputs, built on Ryujinx 1.1.1403.
The Story: Why Ryuhdr Was Born
On October 11, 2026, I was playing on an emulator and noticed two things that ruined the feel: the controller vibrated roughly “like a helicopter,” and button inputs were occasionally swallowed mid-rumble. I took Ryujinx 1.1.1403 as a solid foundation and decided to build HD Rumble properly from scratch.
Lesson number one came immediately: no matter how musical the vibration gets, button inputs must always come first. Controlling Bluetooth packet pacing became a matter of survival.
renhdrum.dll (~200 KB) on Oct 19 so other emulators could share it. On Oct 24, shipped 0.4.0 / 0.4.0.1 with a first-run guide and HD Rumble intro dialog for public release.
Today: The Gold Standard
Ryuhdr is the reference prototype that started the entire ecosystem. Every vibration algorithm in RenHDrum is ported directly from Ryuhdr and verified bit-for-bit by automated golden tests.
🎨 Obsidian UI & Ambient Backdrop
Sleek frosted glass UI with auto-extracted dominant color ambient glow from game covers, direct Play buttons, floating header with Quick Controls ([ HD Rumble ], [ Input ], [ Overlay ]), and instant EN/VI language switching.
⚡ GPU ASTC Texture Decoding
Offloads ASTC texture decompression from the CPU to GPU Vulkan Compute Shaders with bit-accurate precision, eliminating micro-stutters during open-world asset streaming.
📈 Cemu-Style Compact Overlay
Single-line minimalist HUD toggled via Ctrl+T displaying real-time FPS, Frame time, CPU & VRAM usage, shader compilation, and active controller rumble telemetry.
📂 Autoload DLC & Drag-and-Drop
Automatically discovers and mounts game updates/DLC in the game directory; allows direct drag-and-drop of prod.keys, firmware .zip, and ROMs into the window with a First-Run Setup Card and [ ? Guide ].
Get-FileHash .\Ryuhdr-0.5.0-win-x64.zip -Algorithm SHA256
🛡 Windows SmartScreen Notice (Unsigned Binary)
Ryuhdr is an independent, community-driven build and does not possess an expensive commercial code-signing certificate. When running Ryuhdr.exe for the first time, Windows SmartScreen may display "Windows protected your PC". To launch: verify that the SHA-256 checksum matches above, then click "More info" (Thêm thông tin) followed by "Run anyway" (Vẫn chạy).
⚠ Strict Policy: No Keys, Firmware, or Game ROMs Included
This download archive contains strictly NO prod.keys, NO system firmware, and NO game ROMs. Users must dump their own decryption keys (prod.keys) and system firmware from their personal, legally purchased Nintendo Switch hardware. Ryuhdr does not bypass copy protection and promotes ethical software research.
Brontide
Named after the low rumble of distant thunder (“brontide”). Bringing full-spectrum RenHDrum haptics and the built-in HD Rumble Studio to the fast-moving C++/SDL3 Eden lineage.
Modern Eden Lineage with RenHDrum Core
Brontide integrates a thin hook into Eden's patched SDL3 input driver, preserving every frequency and amplitude parameter before forwarding them to renhdrum.dll. Featuring the "Golden Thunder" interface, built-in HD Rumble Studio, and PGO-optimized binaries.
Get-FileHash .\Brontide-1.1.0-win-x64.zip -Algorithm SHA256
4af611185293650eee9a31d7eb8ddf6675d43226b776f31077dc83205a99fdfe)
🛡 Windows SmartScreen Notice (Unsigned Binary)
Brontide is an independent, community-driven build and does not possess an expensive commercial code-signing certificate. When running brontide.exe for the first time, Windows SmartScreen may display "Windows protected your PC". To launch: verify that the SHA-256 checksum matches above, then click "More info" (Thêm thông tin) followed by "Run anyway" (Vẫn chạy).
⚠ Strict Policy: No Keys, Firmware, or Game ROMs Included
This download archive contains strictly NO prod.keys, NO system firmware, and NO game ROMs. Users must dump their own decryption keys (prod.keys) and system firmware from their personal, legally purchased Nintendo Switch hardware. Brontide does not bypass copy protection and promotes ethical software research.
Ryu-HDRum
Unifying the Ryujinx family under SDL3 and a single shared renhdrum.dll haptic brain—all-in-one like Ryuhdr, with no companion app required.
The Story: Why We Rewrote the Controller Layer
Ryuhdr is built on the older Ryujinx 1.1.1403 base and cannot run newer games, while newer Ryujinx-family forks have already moved to SDL3. Rather than maintaining two separate copies of our vibration algorithms in C# and Rust, we wanted one unified haptic brain (renhdrum.dll) powering both Eden and the Ryujinx lineage.
On October 23, 2026, we tried hooking an unmodified build of Ryubing (Canary-1.3.351, project status unclear): melodies came through, but lacked crisp notes because upstream SDL3 did not have our HD Rumble transport patches. Then on October 25, real-hardware testing on stock Ryubing revealed erratic vibration, occasional total dropouts, a clunky controller settings UI, and gyro drift—so we decided to build a dedicated fork and rewrite almost the entire controller and rumble layer.
⚙ How It's Built
-
All-in-One Embedded Engine: Links
renhdrum.dlland our patched SDL3 directly inside the RyubingCanary-1.3.351executable. Just like Ryuhdr, everything works out of the box without a separate companion app. - Rewritten Input & Haptics Layer: Replaces stock Ryubing vibration and input handling with Ryuhdr / RenHDrum standard haptics, paired with Brontide-style controller configuration and gyro drift calibration.
- Modern Game & System Support: Built to run newer titles (including ZBIC-compressed games requiring firmware 22+) while bringing over Ryuhdr 0.3.8's UI and features.
📋 Development Progress
Repository foundation and clean release build pipeline established on October 25, 2026.
ZBIC compressed game loading (for titles requiring firmware 22 and above) and full rewrite of the controller + rumble layer.
Porting Ryuhdr 0.3.8 UI and quality-of-life features (English default), curated graphics improvements from other forks, and faster startup times. No release date set yet.
Supported Controllers
RenHDrum currently supports two controllers with authentic physical haptics. Other controllers are in research and not playable yet.
Switch Pro Controller
Native LRA HD Rumble with Subcommand 0x10 decoding, 101-level nonlinear amplitude LUT, 3-sample 5 ms AM/FM planning, acoustic spectrogram tuning, and zero-lag transports.
- Actuator: Dual-Band LRA (160 Hz / 320 Hz)
- Protocol: Subcommand 0x10 • 10-byte Payload
- Timing: 3 × 5 ms AM/FM Slots • Crisp Notes
- Transport: USB Idle-Gated • BT Level 3 + B1/B3
PlayStation DualSense
Real-time DSP converting 2-band HD Rumble into 48 kHz Float32 4-channel audio driving stereo Voice Coil Motors directly via USB cable.
- Actuator: Stereo Voice Coil Motors (VCM)
- Audio Stream: 48,000 Hz Float32 • 4 Channels (Ch 3–4)
- DSP Pipeline: x^0.5 Curve • 0.8 Ceiling • 4 ms Glide
- Crisp Window: Fixed 256-Frame Slot (~5.33 ms)
Other Controllers in Research
- Switch 2 Pro Controller: Investigating next-generation haptics protocol.
- Steam Controller: Audited upstream SDL 3.4.8 driver, implementation pending — read research.
- Xbox controllers: Researching HD Rumble emulation on standard rumble motors (no ETA).
Please don't report bugs for these yet — they are not supported.
Research Credits & Acknowledgments
Bringing authentic, high-definition haptics to PC emulation across Nintendo Pro Controllers and PlayStation DualSense gamepads was made possible by the invaluable reverse-engineering, empirical measurements, and open-source contributions of the community. RenHDrum builds upon these pioneering foundations with physical acoustic spectrogram calibration, micro-timing algorithms, and custom kernel transport optimizations.
Decoded the standard 1-sample 7-bit dual-wave packet structure (FormatOne28bit), logarithmic frequency formula round(log2(f / 10) * 32), 101-entry non-linear amplitude lookup table, neutral stop packet (00 01 40 40), and Subcommand 0x10 communication protocol.
Standardized into a zero-allocation 28-bit streaming encoder (src/encoding/standard.rs) with stop priority handling (stop_priority) for Linear Resonant Actuators (LRAs).
Documented HidMotorData bit-packing layouts (VibrationAmFmPackTag) across 8 four-byte frame configurations, high-bit framing flags (0x8080, 0x8000, 0x80), and AmFmCodes unpacking tables identifying code 24 (0x18) as a hold-state command.
Engineered the 5 ms Multi-Sample Planner (src/encoding/amfm.rs, src/planner/amfm_planner.rs) for real-time reverse packaging, dynamically assembling 1/2/3-sample frames every 15 ms with automatic sub-5-bit fallback to 7-bit packets below SILENT_BELOW = 0.04 amplitude to preserve silky smooth micro-vibrations.
In PR #116 on OGX-Mini-2026 (fork of wiredopposite/OGX-Mini, HdRumble.cpp & HdRumble.h), uncovered the 5-bit logarithmic amplitude scale (-0.5 * (code - 1) with a -0.84375 offset relative to the 7-bit peak index 100) and documented Steam UI haptic tick packets (00 00 05 C0). Referenced only; no code copied.
Derived the exact energy compensation constant Code5GameScale = 1.7947091 (2^0.84375) to strictly equalize perceived energy between 7-bit and 5-bit streams; conducted physical acoustic spectrogram measurements using close-proximity smartphone microphone analysis to experimentally decode frequency preset codes (12..16) and frequency jump step codes (23, 25).
Conducted 2018 oscilloscope measurements confirming exponential amplitude decay and alternative bit-layouts; captured real hardware packets validating FormatThree7bit framing.
Engineered a 15 ms transient pulse synthesizer (src/encoding/click.rs) and the Crisp Notes algorithm (+3 dB attack / -3 dB sustain in src/encoding/crisp_notes.rs) providing snappy, instantaneous transient punch without muddying actuator response.
Nielk1 & DualSense Community
Identified DualSense 4-channel 48 kHz USB Audio Class architecture (Channels 3–4 directly driving stereo Voice Coil Motors) alongside the standard HID rumble cancellation flag; decoded 10-zone bitpacking for Adaptive Triggers (0x02).
Built a real-time 48 kHz haptics synthesizer (src/dualsense/haptics.rs) mapping low/high rumble bands to dual sine waves on Channels 3–4 with perceived intensity curve x^0.5, 0.8 output ceiling, 1-pole 4 ms smoothing (DUALSENSE_SMOOTHING_MS) to preserve crisp 5 ms transient edges, and automatic legacy HID rumble silencing.
Valve, SDL & Emulator Teams
Pioneered cross-platform HIDAPI controller drivers and low-latency audio pipelines (Valve / SDL); built high-level emulation (HLE) Npad services decoding in-game vibration telemetry into 5 ms vibration parameters (Ryujinx, Ryubing, Eden).
Patched SDL2 input-dropping bug during rumble backlog; created SDL3 patches implementing Idle-Gated No-Queue, Write-After-Input (B1) for CYW20734 half-duplex collision avoidance, and 3-level Token Bucket rate limiting (B3) to prevent Bluetooth input lag spikes.
From Open Reverse-Engineering to Production Real-Time Engine
Every breakthrough in RenHDrum was made possible because these researchers and open-source contributors documented their findings publicly. We believe strongly in honoring community work with transparent attributions, open documentation, and upstream-friendly patch sets.
Support Three-Dola on Ko-fi
This entire project and all software releases are 100% free and open, born from a passionate dedication to tactile preservation and audio engineering. If the high-definition haptics of RenHDrum and Ryuhdr enhanced your gaming immersion, consider treating the author to a cup of coffee!