Skip to content

Releases

RenHDrum v0.3.0

Choose a tag to compare

@trzz1214 trzz1214 released this 09 Nov 10:49

RenHDrum 0.3.0

RenHDrum 0.3.0 introduces calibrated Switch 2 HD Rumble presets based on 25 retail in-game trace sessions, a 5.3 ms slot peak-hold for DualSense, default Bluetooth Level 2 with drift protection for Switch Pro Controller 1, emulator integration patches, and a generic C bridge kit for static recompilation projects.

What's New in RenHDrum 0.3.0

  • Switch 2 Vibration Calibration (Command 214 Mode 2):
    • Empirically mapped across 25 in-game trace sessions in retail Switch 2 titles.
    • 100% of measured guest samples use Command 214 Mode 2. Raw game amplitudes frequently fall below 0.046 (below the Switch Pro Controller 1 LRA motor response threshold).
    • Piecewise amplitude translation curves replace uniform gain scaling, calibrating low and mid frequencies to match actual hardware physics.
  • Controller-Specific Presets:
    • Preset [3] for Sony DualSense: Calibrated curve with a 5.3 ms slot peak-hold that catches 100% of brief menu ticks and micro-vibrations without altering classic Switch 1 playback. Supported over wired USB (4-channel 48 kHz voice-coil haptics) and Bluetooth (report 0x32).
    • Preset [4] for Nintendo Switch Pro Controller 1: Calibrated curve with a 25 ms transient boost (1.2×) for frequencies below 150 Hz to punch through the 0.04 deadzone. Bluetooth defaults to Level 2 (45 ms spacing) for optimal packet stability without input latency. Includes a fix dropping stale calibration offsets (|offset| > 0.5f) that caused upward right-stick drift.
  • Accurate Vibration & Filter Bypass Warning:
    • Standard Switch emulator frontends use a 15 ms rate-limiting filter when enable_accurate_vibrations = false. In Switch 2 games, this filter silently swallows between 50.0% and 76.3% of rumble samples.
    • RenHDrum companion builds automatically enable enable_accurate_vibrations = true and bypass this frontend choke whenever HD Rumble is active.
  • Generic Recomp C Kit (integrations/recomp-c/):
    • Clean C bridge (renhdrum_recomp_bridge.c / renhdrum_recomp_bridge.h) with zero-configuration runtime loading (renhdrum.dll), dedicated 1 ms tick worker thread, 250 ms silence watchdog, and safe gamepad exit hooks.
    • Reference testbed on Hookshot v2.0.6 (static recompilation) verified on real hardware with Pro Controller and DualSense.
  • Research Documentation & Updates:
    • Monograph 11 (docs/research/11-switch2-hd-rumble.md): comprehensive 25-trace study, "The Bell vs. The Speaker" physical actuator model, and quantitative findings.
    • Integration Guides: docs/integration/switch2-games.md and docs/integration/recomp-games.md.

Companion Reference Builds

Two reference emulator builds powered by RenHDrum 0.3.0 with Profile-Guided Optimization (PGO) are available on their dedicated project pages (including setup guides, SHA-256 checksums, and GPL source archives):

Reference Build Version Base Emulator / Implementation Focus Web Page & Download
Brontide-NS2 1.1.0 PokeDinner 2.5.0 by Franseven General Switch 2 games HD Rumble validation Download & Notes →
Brontide-oot 1.0.0 Fritchii v5.3 by Frizti, Lichii by zortos293, Dynamic FPS by Dark Switch 2 DLSS, graphics enhancements & HD Rumble Download & Notes →

Bring your own legally dumped games and keys. For project details, technical articles, and setup instructions, visit ryuhdr.threedola.workers.dev.


Acknowledgments & Credits

I would like to express my gratitude to the following researchers, developers, and projects whose work and insights made this release possible:

  • samaBR85: for sharing empirical Switch 2 in-game vibration traces (Issue #2) and diagnosing the joystick_map_mutex deadlock in Greenhat-Lichii#20.
  • Frizti: for Fritchii v5.3 and targeted visual and performance enhancements.
  • zortos293: for the Lichii emulator baseline and optimizations.
  • Dark: for Dynamic FPS timing and frame pacing research.
  • NotRexed & the Hookshot Team: for the Hookshot static recompilation project.
  • Franseven: for PokeDinner 2.5.0.
  • néo Luigi: for early Command 214 dispatcher implementation in Eglantine PR #155.

RenHDrum v0.2.1

Choose a tag to compare

@trzz1214 trzz1214 released this 06 Nov 06:29

Added

  • Switch 2 HD Rumble Research & Integration Docs: Monograph 11 (docs/research/11-switch2-hd-rumble.md) analyzing Switch 2 guest IPC vibration commands (nn::hid::IHidServer 213, 214, 220), signal routing across DualSense, Switch Pro Controller 1, and Xbox One, root cause of the 2000 ms hanging rumble defect, and early hardware limits.
  • Switch 2 Games Integration Guide: Integration manual (docs/integration/switch2-games.md) detailing command 214 dispatching (credited to neo Luigi / Eglantine PR #155) and routing through RenHDrum's public _half_ C ABI endpoints.
  • Brontide-NS2 Reference Testbed: Documented reference test build (0.1.0 beta) based on PokeDinner 2.5.0 by Franseven, validating HD Rumble playback in retail Switch 2 titles.

Integrations

  • Brontide hook series extended (integrations/brontide/): 11 more patches (0008-0018) on top of 0007: DualSense voice-coil haptics over Bluetooth, Xbox One S rumble wiring, releasing a wired Pro Controller back to the OS on close, the per-controller HD Rumble dialog hooks, and the main on/off switch. Patches 0008, 0009, 0010 and 0018 are named ui but only contain their input_common part; the dialog itself is in studio/. All apply cleanly in order on Eden 989768aa46.
  • HD Rumble Studio reference code (integrations/brontide/studio/): the Qt dialog, widgets, thunder effect and renhdrum_pads.h, as reference code (not a patch).
  • Brontide-NS2 patch series (integrations/brontide-ns2/): command 214 dispatcher (credit: neo Luigi, Eglantine PR #155) plus the RenHDrum thin hook, 4 patches on commit 216b5034c6, GPL.

Changed

  • RENHDRUM_VERSION is now 0x000201.
  • Documentation: the "known limitation" notes about the settings resolver no longer promise a version.

Downloads

renhdrum.dll (Windows x64), renhdrum.h, SHA256SUMS.txt.

RenHDrum v0.2.0

Choose a tag to compare

@trzz1214 trzz1214 released this 06 Nov 06:29

Added

  • Xbox One Rumble: translates Switch HD Rumble into the four motors of a Microsoft Xbox One controller (left grip, right grip, left trigger, right trigger). Eight kinds of rumble, a rotor model with overdrive, a trigger gate, and a melody that travels left to right. New C ABI: renhdrum_xbox_rumble_create, _destroy, _push_half_sample, _tick, _resend (src/xbox/). Report: docs/research/10-xbox-one-rumble.md; guide: docs/integration/xbox.md. First shipped in Brontide 1.2.0.

Changed

  • RENHDRUM_VERSION is now 0x000200.

RenHDrum v0.1.1

Choose a tag to compare

@trzz1214 trzz1214 released this 29 Oct 18:51

Added

  • DualSense Bluetooth haptics (HID output report 0x32): renhdrum_dualsense_dsp_build_bt_report packs the 48 kHz DSP output into 32 stereo frames of signed 8-bit PCM at 3 kHz, with sequence counter and CRC32 (seed 0xA2), one report every 10.667 ms. Zero heap allocation. Report layout learned from SAxense by egormanga (MPL-2.0); implementation written from scratch. First shipped in Brontide 1.1.0.
  • dualsense_bt_crisp_notes in RenHdcConfig: crisp notes over Bluetooth, separate from USB and off by default. Appended at the end of the struct; sizeof(RenHdcConfig) is unchanged (48 bytes), so hosts built against 0.1.0 keep working.

Changed

  • RENHDRUM_VERSION is now 0x000101.

Full notes: CHANGELOG.md

RenHDrum v0.1.0

Choose a tag to compare

@trzz1214 trzz1214 released this 25 Oct 16:11

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[0.1.0] - 2026-10-25

Added

  • Multi-sample 5 ms AM/FM Envelope & Crisp Notes: Real-time tactile synthesis supporting FormatThree (3x5-bit), FormatThree7bit (3x7-bit), and FormatTwo14bit (2x14-bit) within 15 ms HID transmission frames, plus crisp attack accentuation (+3 dB / -3 dB) and subtle sub-5-bit low-amplitude floor fallback.
  • Congestion-Free Bluetooth Pacing: Zero-lag pacing with 150 ms idle refresh, Write-After-Input gating, and a 3-tier Token Bucket scheduler (HD_BT_LEVELS: Stable 60 ms, Balanced 45 ms, Quality 35 ms) mitigating half-duplex Bluetooth saturation.
  • DualSense 4-Channel 48 kHz Audio Haptics DSP: Real-time VCM coil haptics synthesis over USB (channels 3 & 4), 4 ms sliding low-pass frequency filter, non-linear power curve, 0.70 power ceiling, and fixed 256-frame crisp chunk processing.
  • Zero-Allocation C ABI: Compact C header include/renhdrum.h providing stateless encoders, stateful RenHdcEngine, and RenHdcDualSenseDsp with strictly zero dynamic heap allocations in inner tick and push loops.
  • Upstream SDL3 Integration Patches: Patch set for libsdl-org/SDL (release-3.4.8) adding non-blocking idle-gated rumble writes (SDL_HDRumbleSetNoQueue, SDL_HDRumbleSetNoQueueBluetooth, SDL_HDRumbleSetBluetoothAfterInput).
  • Brontide Reference Integration Patches: Reference thin-hook patch series integrating renhdrum.dll into C++ SDL3 emulator runtimes.
  • Technical Documentation & Examples: Comprehensive integration guides, research monographs, and minimal C / C# host examples.

Known Limitations

  • In 0.1.0, renhdrum_settings_resolve and renhdrum_dualsense_dsp_create prioritize reading local override flag files adjacent to the host executable and IPC shared memory / configuration files managed by Brontide-App (Local\RenHDrum_SharedState_v1 and %APPDATA%\RenHDrum\renhdrum-settings.txt). A fully pure C ABI configuration injection path (bypassing IPC and local disk files) is planned for 0.2.0.