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

Face Button follows Positional Button layout instead of Labels #1045

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

AL2009man
Copy link

@AL2009man AL2009man commented Mar 5, 2025

what SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS does is that SDL's Controller API will follow on Button Labels, by default: it is set to 1. Consequences: the modern Nintendo Switch layout will be using the Nintendo Layout across Menu Navigation and Gameplay.

     (Y)              (X)
  (X)   (B)        (Y)   (A)
     (A)              (B)

  Standard         Nintendo

In the case of Sonic Unleashed: every single part of the game will be using Nintendo Layout, thus between the Daytime and Night time stages will make the gameplay much harder than it really is due to muscle memory. This will require Nintendo users to rely on a Button Remapping solution just to correct it.

This pull request is essentially a simple hack that adds SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS on hid::Init list and set the value to 0. Forcing the game to use the Positional Layout across all controllers, SDL3-style. The only downside is that for older Nintendo controllers like Wii family of controllers, GameCube or even SEGA Controllers; it'll will also follow the Face Button Positional layout. (refer to SDL_GameControllerDB's Mapping Guide)

Until Nintendo Switch controller support gets properly added (which for some reason: SDL_HINT_JOYSTICK_HIDAPI_SWITCH is missing) and/or Action Remapping gets added, this is considered a temporary fix on #488, as it'll make Nintendo controllers use the Positional layout instead of the Labeled layout.

Experimenting a way to add a hint for Button Labels. It should attempt to fix the Nintendo Layout issue when using a Nintendo Switch controller
@AL2009man AL2009man changed the title Face Button layout follows Positional Face Button layout follows Positional Button layout Mar 5, 2025
@AL2009man AL2009man changed the title Face Button layout follows Positional Button layout Face Button follows Positional Button layout instead of Labels Mar 5, 2025
@blueskythlikesclouds
Copy link
Member

I queued CI, you can test if this works through the CI build artifacts.

@AL2009man AL2009man marked this pull request as ready for review March 6, 2025 01:37
@AL2009man AL2009man closed this Mar 6, 2025
@AL2009man AL2009man reopened this Mar 6, 2025
@AL2009man
Copy link
Author

AL2009man commented Mar 6, 2025

I queued CI, you can test if this works through the CI build artifacts.

was able to test between the Release Build and the Debug build (that one is purely for testing reasons). Based on my quick testing session: I don't think the code is working as intended (despite me accidentally pressing merge review.)

I will have to look further into hid/driver/sdl_hid.cpp and see what I could do with it, I believe there's a likely chance that it's being overriding my existing changes.


edit: quick update - earlier: I was messing around with the bat file for experimentation. I intentionally unhinted the PS5 stuffs and it seems to ignore my change. There's a likely chance that something is indeed overriding the hint changes.


for now: don't merge this pull request until I (or others) able to confirm if it works.

@AL2009man AL2009man marked this pull request as draft March 6, 2025 02:06
@AL2009man AL2009man marked this pull request as ready for review March 6, 2025 05:07
@AL2009man
Copy link
Author

AL2009man commented Mar 6, 2025

After troubleshooting (turns out: my Visual Studios install got messed up, had to reinstall it) and testing between the main brand to my fork: I can directly confirm that the HINT does work as intended.

It should be ready to merge now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants