USB: Add Hori FlightStick controller emulation
Description of Changes
Emulates the two models of Hori Flight Stick controllers, HP2-13 and HP2-217.
Rationale behind Changes
Provides a standardized way to play supported games using a FlightStick or HOTAS device. I believe some games will not apply any dead zone when the input device is a FlightStick, as opposed to a standard DualShock2. HP2-217 features rumble and more buttons than HP2-13. HP2-217 should be compatible with any game that supports HP2-13. Hori listed it as being backwards compatible.
Suggested Testing Steps
Test in some compatible games:
- Sega Ages 2500 Vol.30 Galaxy Force II (requires pressing select to configure input as USB FlightStick)
- Ace Combat 4
- Ace Combat 5 (supports HP2-217 exclusive features)
Did you use AI to help find, test, or implement this issue or feature?
No
@Florin9doi On a related note, I've started to implement Logitech Flight Force too. Putting it on usb-pad.cpp to use the already implemented ffb parsing.
Makes sense to move the hori flight stick to that same file? Or keep it separated?
For the logitech ffb one, I've added more input bindings here: "usb-pad.h"
enum ControlID
{
//existing data
CID_STEERING_L,
...
...
CID_BUTTON31,
//added flightstick data
CID_STICK_L,
CID_STICK_R,
CID_STICK_U,
CID_STICK_D,
CID_STICK_THROTTLE_U,
CID_STICK_THROTTLE_D,
CID_STICK_TWIST_L,
CID_STICK_TWIST_R,
CID_COUNT,
};
Appended to the end to not break existing input map. If I move the Hori implementation to that file, it will need a few more entries on that enum.
@Florin9doi On a related note, I've started to implement Logitech Flight Force too. Putting it on usb-pad.cpp to use the already implemented ffb parsing. Makes sense to move the hori flight stick to that same file? Or keep it separated?
You can move ParseFFData from PadState to FFDevice and use it from usb-flightstick.cpp
@Florin9doi Already moved it to usb-pad, and added another flightstick type XD Wanna take a look? https://github.com/sonik-br/pcsx2/tree/flightstick-devices
FFB is untested. I don't have access to any forcefeedback device, but I can "simulate" one using a rp2040 and it does receive ffb commands. Looks like it's working. Game to test the Flight Force: AirForce Delta Strike