Releases: rafaelvaloto/Dualsense-Multiplatform
v0.0.20
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-formatconfiguration 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-extendedandsecurity-and-qualityquery sets enabled.
v0.0.18
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
FAudioDeviceRegistryto manage audio devices.
- Implemented separate audio channels for multiple DualSense controllers using a global
-
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.
- Refactored gyro calibration by introducing a reference scaling parameter (e.g.,
-
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:
ProcessAudioHapitc→ProcessAudioHapticand updated related calls/comments.
- Fixed typo:
-
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
ResetLightsis called beforeUpdateOutputto improve light state consistency.
- Ensured
-
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/checkoutfrom v4 to v6 (Dependabot).
- Updated GitHub Actions dependency:
-
Minor sensor code cleanup
- Commented out unused gyro speed variables in
GamepadSensors.h.
- Commented out unused gyro speed variables in
✅ 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
🚀 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
What's Changed
- Bump actions/checkout from 4 to 6 by @dependabot[bot] in #2
New Contributors
- @dependabot[bot] made their first contribution in #2
- @szyrain
Full Changelog: v0.0.12...v0.0.14
v0.0.12
🎮 Release Notes
🚀 Features & Enhancements
- DualSense Buffer Initialization: Refined
BufferAudiovalues for improved audio handling - FeatureMode Updates: Updated default value in
GamepadFeature. hfor improved functionality - Adaptive Triggers: Enhanced gamepad functionality with
UpdateOutputcalls to ensure state changes are reflected in adaptive triggers - DualSense Library Refactor: Removed unused
ResetLightscall and addedFeatureModedefinition 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
ApptoExamples/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
Full Changelog: v0.0.9...v0.0.10
v0.0.9
v0.0.8
Full Changelog: https://github.com/rafaelvaloto/Gamepad-Core/commits/v0.0.8