summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerInterface/DInput
diff options
context:
space:
mode:
authorJordan Woyak <jordan.woyak@gmail.com>2019-01-06 08:14:37 -0600
committerJordan Woyak <jordan.woyak@gmail.com>2019-01-06 08:14:37 -0600
commita7c45fb49e7a8f11b71fe5a539148e81746998cc (patch)
tree0315d3ccdd2e8a13ffda33907998027acc14d0be /Source/Core/InputCommon/ControllerInterface/DInput
parent0ca9accd8b9f92a2f6e4fa600136a9e51f543b5f (diff)
DirectInput: Use more than 8 bits of precision on axis inputs.
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/DInput')
-rw-r--r--Source/Core/InputCommon/ControllerInterface/DInput/DInputJoystick.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/DInput/DInputJoystick.cpp b/Source/Core/InputCommon/ControllerInterface/DInput/DInputJoystick.cpp
index a01ae6c75a..21e39bc416 100644
--- a/Source/Core/InputCommon/ControllerInterface/DInput/DInputJoystick.cpp
+++ b/Source/Core/InputCommon/ControllerInterface/DInput/DInputJoystick.cpp
@@ -3,6 +3,7 @@
// Refer to the license.txt file included.
#include <algorithm>
+#include <limits>
#include <map>
#include <sstream>
@@ -121,13 +122,13 @@ Joystick::Joystick(/*const LPCDIDEVICEINSTANCE lpddi, */ const LPDIRECTINPUTDEVI
for (unsigned int offset = 0; offset < DIJOFS_BUTTON(0) / sizeof(LONG); ++offset)
{
range.diph.dwObj = offset * sizeof(LONG);
- // try to set some nice power of 2 values (128) to match the GameCube controls
- range.lMin = -(1 << 7);
- range.lMax = (1 << 7);
+ // Try to set a range with 16 bits of precision:
+ range.lMin = std::numeric_limits<s16>::min();
+ range.lMax = std::numeric_limits<s16>::max();
m_device->SetProperty(DIPROP_RANGE, &range.diph);
- // but I guess not all devices support setting range
- // so I getproperty right afterward incase it didn't set.
- // This also checks that the axis is present
+ // Not all devices support setting DIPROP_RANGE so we must GetProperty right back.
+ // This also checks that the axis is present.
+ // Note: Even though not all devices support setting DIPROP_RANGE, some require it.
if (SUCCEEDED(m_device->GetProperty(DIPROP_RANGE, &range.diph)))
{
const LONG base = (range.lMin + range.lMax) / 2;