aboutsummaryrefslogtreecommitdiff
path: root/src/input_common/gcadapter/gc_adapter.cpp
diff options
context:
space:
mode:
authorgerman77 <juangerman-13@hotmail.com>2021-04-25 11:45:42 -0500
committergerman77 <juangerman-13@hotmail.com>2021-04-26 18:34:00 -0500
commit729545a9461a59e6e2b986db3aeb0346624ac8d8 (patch)
tree5ba3c39e9a2536457e1ee11f96cf92fbf6a8b97c /src/input_common/gcadapter/gc_adapter.cpp
parentcd80471c902540ae1086732234d45b6fb5b2e169 (diff)
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.cpp8
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 ec3167beac..320f51ee65 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() {