Skip to content

Releases: rafaelvaloto/Dualsense-Multiplatform

v0.0.20

03 Feb 13:00

Choose a tag to compare

Changelog — v0.0.20

Added

  • CodeQL GitHub Actions workflow for C++ security and quality analysis (runs on push/PR and on a weekly schedule).
  • Improved documentation with microcontroller support details (e.g., Raspberry Pi, ESP32, Pico W), plus a reorganized README (Features/Examples/Installation/Tests/Contributing) and multiple install paths (Minimal/Standard/Developer).
  • Better submodule handling in CI/build configuration (recursive checkout and conditional behavior depending on whether submodules are initialized).

Changed

  • CMake path refactors to simplify the directory layout and make configuration more robust across environments.
  • CI/build targets updated to focus on the relevant library and test executables; automated test handling refined.
  • Test suite structure updated: utilities/headers reorganized and dataset/WAV references adjusted.
  • Formatting tooling updated: .clang-format configuration and ignore rules refined.

Fixed

  • More reliable automated tests in CI: timeouts extended (e.g., gamepad input/output tests) and workflow timeout handling improved.
  • Safer builds when audio is disabled: conditional compilation around audio modules and minimal stubs to avoid hard dependency on the audio backend.

Removed

  • Integration tests for audio haptics removed (including related targets and supporting logic).
  • Documentation cleanup (e.g., removal of outdated badges/README tweaks).
  • Submodule-related cleanup as the repository structure evolved (path changes and subsequent removal where applicable).

Security

  • CodeQL configuration refined with better ignored paths (e.g., third-party/audio library folders, WAVs, and test datasets) while keeping security-extended and security-and-quality query sets enabled.

v0.0.18

31 Jan 21:01
a86bf03

Choose a tag to compare

Gamepad-Core — Release Notes

Release Date: 2026-01-31
Scope: Latest commits (since ~2026-01-18)
Focus: Integration tests, audio/haptics, sensor calibration, Windows test refactors


✨ Added

  • Multi-channel audio test for multiple controllers

    • Added a new integration test that supports multiple DualSense controllers at the same time.
    • Includes WAV playback support (per-controller), path resolution, and device hot-swap handling.
    • Can also operate in a system audio mode depending on the test configuration.
  • Expanded/refactored integration test structure

    • Improved organization and structure of integration test executables to make the test suite easier to maintain and extend.

🔧 Changed / Improved

  • Per-controller audio channels (DualSense)

    • Implemented separate audio channels for multiple DualSense controllers using a global FAudioDeviceRegistry to manage audio devices.
  • Improved Windows audio device matching

    • Enhanced device association by matching via device/container ID, improving stability when multiple devices are present.
  • More consistent gyro calibration

    • Refactored gyro calibration by introducing a reference scaling parameter (e.g., ReferenceRangeDegS) for simpler and more consistent results.
  • DualShock calibration improvements

    • Improved gyro scaling and reordered accelerometer assignments for clearer and more reliable calibration behavior.
  • Windows test/platform header refactors

    • Standardized header includes, code formatting, and conditional checks across Windows tests for better consistency and readability.

🐛 Fixed

  • Audio haptics method name typo

    • Fixed typo: ProcessAudioHapitcProcessAudioHaptic and updated related calls/comments.
  • Audio test robustness and cleanup

    • Strengthened null checks and cleanup paths to avoid inconsistent states when initializing/tearing down audio devices and decoders.
  • DualSense light state consistency

    • Ensured ResetLights is called before UpdateOutput to improve light state consistency.
  • Automated test timeout

    • Added timeout logic to the analog integration test to prevent automated runs from hanging indefinitely.

🧹 Removed / Maintenance

  • Removed DLL integration tests and ViGEm dependencies

    • Deleted DLL-based integration tests and removed ViGEm-related code/dependencies.
    • Simplified CMake configuration and project maintenance.
  • CI maintenance

    • Updated GitHub Actions dependency: actions/checkout from v4 to v6 (Dependabot).
  • Minor sensor code cleanup

    • Commented out unused gyro speed variables in GamepadSensors.h.

✅ Notes / Recommendations

  • If you rely on custom audio/haptics integrations, validate behavior on Windows when multiple audio devices/controllers are present (container ID matching).
  • Re-run integration tests involving audio/haptics when upgrading, especially in multi-controller scenarios.

v0.0.16

26 Jan 01:05

Choose a tag to compare

🚀 Highlights
This release introduces full support for the DualShock 4 controller and adds Touchpad capabilities. Significant improvements were made to the IMU (Inertial Measurement Unit) processing pipeline, fixing unit conversion errors and optimizing the factory calibration logic for high-precision motion tracking.

✨ New Features
DualShock 4 Support:

Implemented full connection and data reading for Sony DualShock 4 controllers.

Added support for DS4 Gyroscope and Accelerometer reading via factory calibration data.

Touchpad Implementation:

Added support for reading Touchpad state for both DualSense and DualShock 4.

Exposed multi-touch coordinates (Finger 1 / Finger 2) and button click events.

🐛 Bug Fixes & Improvements
IMU Data Normalization (Critical Fix):

Fixed an issue where Gyroscope raw data was being incorrectly scaled by RAD_TO_DEG before normalization.

Refactored ProcessMotionDualSense: The algorithm now correctly utilizes the internal factory calibration table to output precise Degrees Per Second (°/s) for the Gyroscope and G-Force for the Accelerometer.

Eliminated redundant algebraic divisions in the calibration factor calculation (removed Speed2x redundancy), improving performance and safety against division-by-zero errors.

🔧 Technical Details
Math Correction: Removed double-conversion. The output from the hardware abstraction layer is now strictly:

Gyro: (Raw - Bias) * Factor -> Result in deg/s.

Accel: (Raw - Bias) * Factor -> Result in G.

Integration: Consumers of this lib (e.g., Unreal Engine plugins) must now expect deg/s and multiply by DEG_TO_RAD (0.01745) only if Radian input is required by the target physics engine (like Madgwick filters).

v0.0.14

24 Jan 03:44

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.0.12...v0.0.14

v0.0.12

17 Jan 20:58

Choose a tag to compare

🎮 Release Notes

🚀 Features & Enhancements

  • DualSense Buffer Initialization: Refined BufferAudio values for improved audio handling
  • FeatureMode Updates: Updated default value in GamepadFeature. h for improved functionality
  • Adaptive Triggers: Enhanced gamepad functionality with UpdateOutput calls to ensure state changes are reflected in adaptive triggers
  • DualSense Library Refactor: Removed unused ResetLights call and added FeatureMode definition to output context

📚 Documentation

  • README Improvements:
    • Refined Gamepad-Core description
    • Enhanced modding guide
    • Improved formatting and removed redundant line breaks
    • Cleaned up duplicate sections

🔧 Build & Configuration

  • CMake Improvements:
    • Added option to control DLL integration tests
    • Updated conditional compilation directives for ViGEmAdapter
    • Refactored project structure (moved App to Examples/Apps)
    • Improved modularity with better test inclusion logic
  • GitHub Actions: Added workflow for building and testing on Linux and Windows
  • .gitignore Updates: Added common IDE, OS, and build artifact exclusions

🧪 Testing

  • Integration Tests:
    • Added automated mode support for audio-haptics
    • Improved test logic for adaptive triggers
    • Added graceful skipping when no controller is found
    • Added controller detection with timeout logic

🐛 Bug Fixes

  • CR32.h: Included <cstddef> for standard type definitions
  • ViGEmAdapter: Applied consistent formatting and enhanced error handling logic

📦 Dependencies

This release uses Boost libraries for enhanced functionality.

👥 Contributors

Special thanks to @szyrain for their contributions to this release!


Full Changelog: View all commits

v0.0.10

16 Jan 03:12

Choose a tag to compare

Full Changelog: v0.0.9...v0.0.10

v0.0.9

12 Jan 12:54

Choose a tag to compare

What's Changed

  • Add RequestImmediateDetection method to TBasicDeviceRegistry for immediate detection reset by @szyrain in #1

New Contributors

Full Changelog: v0.0.8...v0.0.9

v0.0.8

17 Dec 23:04

Choose a tag to compare