diff options
author | bunnei <bunneidev@gmail.com> | 2021-04-30 12:02:05 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-30 12:02:05 -0700 |
commit | aab57b79754e268c142b8ad7c5db11affe0a4cca (patch) | |
tree | 57648315ad6f151b9c935ffbb1798ea58993c0c3 /src/input_common/gcadapter/gc_adapter.cpp | |
parent | 922b0d9933951a97879707e038f24f0ba2b3ef95 (diff) | |
parent | 729545a9461a59e6e2b986db3aeb0346624ac8d8 (diff) |
Merge pull request #6243 from german77/GCresetOrigin
input_common: Reset GC sticks center by measuring multiple packets
Diffstat (limited to 'src/input_common/gcadapter/gc_adapter.cpp')
-rw-r--r-- | src/input_common/gcadapter/gc_adapter.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/input_common/gcadapter/gc_adapter.cpp b/src/input_common/gcadapter/gc_adapter.cpp index ec3167bea..320f51ee6 100644 --- a/src/input_common/gcadapter/gc_adapter.cpp +++ b/src/input_common/gcadapter/gc_adapter.cpp @@ -155,8 +155,12 @@ void Adapter::UpdateStateAxes(std::size_t port, const AdapterPayload& adapter_pa for (const PadAxes axis : axes) { const auto index = static_cast<std::size_t>(axis); const u8 axis_value = adapter_payload[offset + 3 + index]; - if (pads[port].axis_origin[index] == 255) { + if (pads[port].reset_origin_counter <= 18) { + if (pads[port].axis_origin[index] != axis_value) { + pads[port].reset_origin_counter = 0; + } pads[port].axis_origin[index] = axis_value; + pads[port].reset_origin_counter++; } pads[port].axis_values[index] = static_cast<s16>(axis_value - pads[port].axis_origin[index]); @@ -375,7 +379,7 @@ void Adapter::ResetDevice(std::size_t port) { pads[port].buttons = 0; pads[port].last_button = PadButton::Undefined; pads[port].axis_values.fill(0); - pads[port].axis_origin.fill(255); + pads[port].reset_origin_counter = 0; } void Adapter::Reset() { |