Fix for always firing triggers on some controllers, trigger threshold more universal

This commit is contained in:
Ameer 2020-07-04 00:40:48 -04:00
parent e69d715e3d
commit d00972fce1
2 changed files with 5 additions and 5 deletions

View file

@ -156,14 +156,12 @@ void Adapter::Read() {
pads[port].axis_value = pads[port].substick_y;
pad_queue[port].Push(pads[port]);
}
if (pads[port].trigger_left > pads[port].TRIGGER_CENTER + pads[port].THRESHOLD ||
pads[port].trigger_left < pads[port].TRIGGER_CENTER - pads[port].THRESHOLD) {
if (pads[port].trigger_left > pads[port].TRIGGER_THRESHOLD) {
pads[port].axis = GCAdapter::PadAxes::TriggerLeft;
pads[port].axis_value = pads[port].trigger_left;
pad_queue[port].Push(pads[port]);
}
if (pads[port].trigger_right > pads[port].TRIGGER_CENTER + pads[port].THRESHOLD ||
pads[port].trigger_right < pads[port].TRIGGER_CENTER - pads[port].THRESHOLD) {
if (pads[port].trigger_right > pads[port].TRIGGER_THRESHOLD) {
pads[port].axis = GCAdapter::PadAxes::TriggerRight;
pads[port].axis_value = pads[port].trigger_right;
pad_queue[port].Push(pads[port]);

View file

@ -63,9 +63,11 @@ struct GCPadStatus {
static constexpr u8 C_STICK_CENTER_X = 0x80;
static constexpr u8 C_STICK_CENTER_Y = 0x80;
static constexpr u8 C_STICK_RADIUS = 0x7f;
static constexpr u8 TRIGGER_CENTER = 20;
static constexpr u8 THRESHOLD = 10;
// 256/4, at least a quarter press to count as a press. For polling mostly
static constexpr u8 TRIGGER_THRESHOLD = 64;
u8 port{};
PadAxes axis{PadAxes::Undefined};
u8 axis_value{255};