mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
parent
51adb8c64f
commit
13f6ca0019
3 changed files with 33 additions and 18 deletions
|
@ -149,8 +149,8 @@ void __CtrlPeekAnalog(int stick, float *x, float *y)
|
|||
{
|
||||
std::lock_guard<std::recursive_mutex> guard(ctrlMutex);
|
||||
|
||||
*x = (ctrlCurrent.analog[stick][0] - 127.5f) / 127.5f;
|
||||
*y = -(ctrlCurrent.analog[stick][1] - 127.5f) / 127.5f;
|
||||
*x = (ctrlCurrent.analog[stick][CTRL_ANALOG_X] - 127.5f) / 127.5f;
|
||||
*y = -(ctrlCurrent.analog[stick][CTRL_ANALOG_Y] - 127.5f) / 127.5f;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -229,29 +229,21 @@ void EmuScreen::onVKeyDown(int virtualKeyCode) {
|
|||
#endif
|
||||
|
||||
case VIRTKEY_AXIS_X_MIN:
|
||||
__CtrlSetAnalogX(-1.0f, CTRL_STICK_LEFT);
|
||||
break;
|
||||
case VIRTKEY_AXIS_X_MAX:
|
||||
__CtrlSetAnalogX(1.0f, CTRL_STICK_LEFT);
|
||||
setVKeyAnalogX(CTRL_STICK_LEFT, VIRTKEY_AXIS_X_MIN, VIRTKEY_AXIS_X_MAX);
|
||||
break;
|
||||
case VIRTKEY_AXIS_Y_MIN:
|
||||
__CtrlSetAnalogY(-1.0f, CTRL_STICK_LEFT);
|
||||
break;
|
||||
case VIRTKEY_AXIS_Y_MAX:
|
||||
__CtrlSetAnalogY(1.0f, CTRL_STICK_LEFT);
|
||||
setVKeyAnalogY(CTRL_STICK_LEFT, VIRTKEY_AXIS_Y_MIN, VIRTKEY_AXIS_Y_MAX);
|
||||
break;
|
||||
|
||||
case VIRTKEY_AXIS_RIGHT_X_MIN:
|
||||
__CtrlSetAnalogX(-1.0f, CTRL_STICK_RIGHT);
|
||||
break;
|
||||
case VIRTKEY_AXIS_RIGHT_X_MAX:
|
||||
__CtrlSetAnalogX(1.0f, CTRL_STICK_RIGHT);
|
||||
setVKeyAnalogX(CTRL_STICK_RIGHT, VIRTKEY_AXIS_RIGHT_X_MIN, VIRTKEY_AXIS_RIGHT_X_MAX);
|
||||
break;
|
||||
case VIRTKEY_AXIS_RIGHT_Y_MIN:
|
||||
__CtrlSetAnalogY(-1.0f, CTRL_STICK_RIGHT);
|
||||
break;
|
||||
case VIRTKEY_AXIS_RIGHT_Y_MAX:
|
||||
__CtrlSetAnalogY(1.0f, CTRL_STICK_RIGHT);
|
||||
setVKeyAnalogY(CTRL_STICK_RIGHT, VIRTKEY_AXIS_RIGHT_Y_MIN, VIRTKEY_AXIS_RIGHT_Y_MAX);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -261,28 +253,49 @@ void EmuScreen::onVKeyUp(int virtualKeyCode) {
|
|||
case VIRTKEY_UNTHROTTLE:
|
||||
PSP_CoreParameter().unthrottle = false;
|
||||
break;
|
||||
|
||||
case VIRTKEY_AXIS_X_MIN:
|
||||
case VIRTKEY_AXIS_X_MAX:
|
||||
__CtrlSetAnalogX(0.0f, CTRL_STICK_LEFT);
|
||||
setVKeyAnalogX(CTRL_STICK_LEFT, VIRTKEY_AXIS_X_MIN, VIRTKEY_AXIS_X_MAX);
|
||||
break;
|
||||
case VIRTKEY_AXIS_Y_MIN:
|
||||
case VIRTKEY_AXIS_Y_MAX:
|
||||
__CtrlSetAnalogY(0.0f, CTRL_STICK_LEFT);
|
||||
setVKeyAnalogY(CTRL_STICK_LEFT, VIRTKEY_AXIS_Y_MIN, VIRTKEY_AXIS_Y_MAX);
|
||||
break;
|
||||
|
||||
case VIRTKEY_AXIS_RIGHT_X_MIN:
|
||||
case VIRTKEY_AXIS_RIGHT_X_MAX:
|
||||
__CtrlSetAnalogX(0.0f, CTRL_STICK_RIGHT);
|
||||
setVKeyAnalogX(CTRL_STICK_RIGHT, VIRTKEY_AXIS_RIGHT_X_MIN, VIRTKEY_AXIS_RIGHT_X_MAX);
|
||||
break;
|
||||
case VIRTKEY_AXIS_RIGHT_Y_MIN:
|
||||
case VIRTKEY_AXIS_RIGHT_Y_MAX:
|
||||
__CtrlSetAnalogY(0.0f, CTRL_STICK_RIGHT);
|
||||
setVKeyAnalogY(CTRL_STICK_RIGHT, VIRTKEY_AXIS_RIGHT_Y_MIN, VIRTKEY_AXIS_RIGHT_Y_MAX);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
inline void EmuScreen::setVKeyAnalogX(int stick, int virtualKeyMin, int virtualKeyMax) {
|
||||
float axis = 0.0f;
|
||||
// The down events can repeat, so just trust the virtKeys array.
|
||||
if (virtKeys[virtualKeyMin - VIRTKEY_FIRST])
|
||||
axis -= 1.0f;
|
||||
if (virtKeys[virtualKeyMax - VIRTKEY_FIRST])
|
||||
axis += 1.0f;
|
||||
__CtrlSetAnalogX(axis, stick);
|
||||
}
|
||||
|
||||
inline void EmuScreen::setVKeyAnalogY(int stick, int virtualKeyMin, int virtualKeyMax) {
|
||||
float axis = 0.0f;
|
||||
if (virtKeys[virtualKeyMin - VIRTKEY_FIRST])
|
||||
axis -= 1.0f;
|
||||
if (virtKeys[virtualKeyMax - VIRTKEY_FIRST])
|
||||
axis += 1.0f;
|
||||
__CtrlSetAnalogY(axis, stick);
|
||||
}
|
||||
|
||||
void EmuScreen::key(const KeyInput &key) {
|
||||
if (key.keyCode == KEYCODE_BACK)
|
||||
pauseTrigger_ = true;
|
||||
|
|
|
@ -49,6 +49,8 @@ private:
|
|||
void pspKey(int pspKeyCode, int flags);
|
||||
void onVKeyDown(int virtualKeyCode);
|
||||
void onVKeyUp(int virtualKeyCode);
|
||||
void setVKeyAnalogX(int stick, int virtualKeyMin, int virtualKeyMax);
|
||||
void setVKeyAnalogY(int stick, int virtualKeyMin, int virtualKeyMax);
|
||||
|
||||
// Something invalid was loaded, don't try to emulate
|
||||
bool invalid_;
|
||||
|
|
Loading…
Add table
Reference in a new issue