Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SDF layout breaks compatibility with some games #68

Open
Kanuan opened this issue Apr 15, 2021 · 7 comments
Open

SDF layout breaks compatibility with some games #68

Kanuan opened this issue Apr 15, 2021 · 7 comments
Assignees
Labels
bug Something isn't working Core Core/Common Driver Topic
Milestone

Comments

@Kanuan
Copy link
Collaborator

Kanuan commented Apr 15, 2021

The issue

SDF mode sliders number go beyond the DInput limit. This seems to be breaking compatibility with some older games (e.g.: Legacy of Kain: Defiance). When setting the gamepad in-game some buttons don't register and the ones that do are out-of-order. In GPJ mode the buttons are mapped correctly.

To-do

Remove all sliders that reside outside of DInput axis limit and test if this fixes game compatibility to verify if this really is what is causing the issue.

Proposed solution

A new HID Device Mode (Common Gamepad) that spawns a similar layout to SDF but without the buttons' pressure sliders. This mode would be the ideal mode for old games compatibility since it spawns only one device and by not having additional sliders there's no chance of the pressure sliders messing when setting button/axis mappings.

Though GPJ could be used, the sliders in the Joystick part can also mess with button/axis detection when setting the controller in games. Also, there are some games that only register the first controller it recognizes, meaning that if the joystick part is recognized first the controller bindings can't be set up.

@Kanuan Kanuan changed the title SDF mode breaks compatibility with older games SDF is not compatible with older games Apr 15, 2021
@Kanuan Kanuan changed the title SDF is not compatible with older games SDF layout breaks compatibility with some games Apr 15, 2021
@Kanuan
Copy link
Collaborator Author

Kanuan commented Apr 16, 2021

Hypothesis

The number of total axis in SDF may break compatibility with some games.
SDF Mode layout has:

  • 13 buttons
  • 1 Axis for the POV T-hat
  • 6 axis for both sticks and triggers
  • 10 Sliders for the pressure feature in each button (d-pad, face and R1/L1)

Because of the limitations of D-Input, 8 of the sliders are normally out of reach.

Tests

First, it was tested if the SDF layout was broken beforehand when the unsued 14th button was removed, but after reverting to a version of DsHidMini before the change it was comproved the issue still occurs.

Second, it was tested if the number of total axis in the controller was breaking the input detection in the game by testing the SDF mode with different number of sliders declared in the HID Descriptor (all sliders values were zeroed so slider activity couldn't interfere with the test):

  • No Sliders: buttons register correctly
  • 2 sliders: buttons register correctly
  • 6 sliders: buttons register correctly
  • 7 sliders: triangle button does not register anymore
  • 8 sliders: triangle and L2 don't register anymore.

It seems after the 6th new slider each new one included breaks a different button, though more tests weren't made to fully determine if this is the case.

Conclusion

It seems the number of sliders is the one thing breaking input detection in-game. Though this behavior was only verified with a single game, it may also happen with other old games. The best route to keep compatibility appears to be a new HID Device mode based on SDF but without the pressure sliders (Common Gamepad Mode).

@nefarius nefarius added bug Something isn't working Core Core/Common Driver Topic labels Apr 22, 2021
@nefarius nefarius added this to the Fixed in v3.0.x milestone Feb 15, 2022
@MetalGearAlex1

This comment was marked as off-topic.

@nefarius

This comment was marked as off-topic.

@MetalGearAlex1

This comment was marked as off-topic.

@nefarius

This comment was marked as off-topic.

@MetalGearAlex1

This comment was marked as off-topic.

@nefarius

This comment was marked as off-topic.

@nefarius nefarius self-assigned this May 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working Core Core/Common Driver Topic
Projects
None yet
Development

No branches or pull requests

3 participants