-
-
Notifications
You must be signed in to change notification settings - Fork 94
Emulate a strength adjustable small motor by using the Big motor #51
Description
The Issue
Basically, XInput and DS4 devices have 2 motors (big and small) and their rumbling strength is adjustable. Although the DS3 also has 2 motors, the small motor has only one fixed strength.
As DsHidMini is now, every small motor rumble request gets its strength setting ignored by the driver. The problem with this approach is that some games use the small motor for subtle effects almost constantly. Because the DS3 small motor has only one strength, the result can be a strong, constant and annoying rumble instead of a subtle effect (e.g.: racing games having the controller rumbling constantly to emulate the car vibration).
Reproducing
Any modern game that uses XInput and has rumble can be used as a example at some part, but one that's guaranteed to make the user want to turn off rumble is Need For Speed: Most Wanted 2012 and its constant vibration.
Idea for solution
Make small motor commands below a threshold of strength (e.g.: 50%) be converted to Big Motor Commands (as long as there isn't an actual Big Motor command with a greater strength). Above the threshold then just activate the Small motor as the difference on what is intended by the game and the real effect is probably smaller.
To-do
Lots of tests, from pratical tests with games regarding if converting small motor commands to big motor feels odd to finding the best threshold where the small motor should actually be turned on