make JVS L and R buttons from slider work with input emulator active

(should fix issue #6)
This commit is contained in:
somewhatlurker
2019-08-08 17:08:42 +10:00
parent 26de4c1a1a
commit 79ba676287
3 changed files with 51 additions and 0 deletions
@@ -125,6 +125,13 @@ namespace TLAC::Components
inputState->DoubleTapped.Buttons = GetJvsButtonsState(tappedFunc);
inputState->IntervalTapped.Buttons = GetJvsButtonsState(tappedFunc);
// if not interacting with L and R, use values from the slider instead
if ( ( (inputState->Tapped.Buttons | inputState->Released.Buttons | inputState->Down.Buttons)
& (JVS_L | JVS_R) ) == 0)
{
UpdateSliderLR();
}
UpdateHoldState();
heldButtons = GetButtonFromHold();
@@ -305,4 +312,43 @@ namespace TLAC::Components
inputState->SetBit(bit, keyboard->IsIntervalTapped(keycode), InputBufferType_IntervalTapped);
}
typedef uint8_t getSliderSensorFunc(void*, int);
void InputEmulator::UpdateSliderLR()
{
getSliderSensorFunc* getSliderSensorTapped = (getSliderSensorFunc*)GET_SLIDER_TAPPED_ADDRESS;
getSliderSensorFunc* getSliderSensorReleased = (getSliderSensorFunc*)GET_SLIDER_RELEASED_ADDRESS;
getSliderSensorFunc* getSliderSensorDown = (getSliderSensorFunc*)GET_SLIDER_DOWN_ADDRESS;
if (getSliderSensorTapped((void*)SLIDER_CTRL_TASK_ADDRESS, 36))
inputState->Tapped.Buttons |= JVS_L;
else
inputState->Tapped.Buttons &= ~JVS_L;
if (getSliderSensorReleased((void*)SLIDER_CTRL_TASK_ADDRESS, 36))
inputState->Released.Buttons |= JVS_L;
else
inputState->Released.Buttons &= ~JVS_L;
if (getSliderSensorDown((void*)SLIDER_CTRL_TASK_ADDRESS, 36))
inputState->Down.Buttons |= JVS_L;
else
inputState->Down.Buttons &= ~JVS_L;
if (getSliderSensorTapped((void*)SLIDER_CTRL_TASK_ADDRESS, 37))
inputState->Tapped.Buttons |= JVS_R;
else
inputState->Tapped.Buttons &= ~JVS_R;
if (getSliderSensorReleased((void*)SLIDER_CTRL_TASK_ADDRESS, 37))
inputState->Released.Buttons |= JVS_R;
else
inputState->Released.Buttons &= ~JVS_R;
if (getSliderSensorDown((void*)SLIDER_CTRL_TASK_ADDRESS, 37))
inputState->Down.Buttons |= JVS_R;
else
inputState->Down.Buttons &= ~JVS_R;
}
}