libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
9.8k stars 1.78k forks source link

macOS RA 1.15 Buttons swapped #15077

Open Metal-Snake opened 1 year ago

Metal-Snake commented 1 year ago

Description

After updating from 1.14 to 1.15 I had to remap the Controller Buttons, now the ok/cancel buttons are swapped. Tried with Nintendo Switch Pro Controller

edit: In game everything is chaotic. Buttons are weirdly remapped and do completly different things than what is set up.

edit2: Ignore previous edit, that was because old 1.14 style overriden controls. But in Nintendo DS core DeSmuME I have to swap A-B and X-Y I guess it's because Nintendo and MS have those labels swapped and the new msi driver handles this differently than the old thing?

Expected behavior

If the "Menu Swap OK and Cancel Buttons" option is disabled, it should be Japanese (A = OK and B = Cancel on the Switch Pro Controller) and vice versa if it's enabled.

Actual behavior

Now it's the actual oposite of what the description states.

Steps to reproduce the bug

  1. Use Nintendo Switch Pro Controller
  2. Map the Buttons in Settings/Input/Port 1 Controls/
  3. Check the option in Settings/Input/Menu Controls/Menu Swap OK and Cancel Buttons

Bisect Results

1.14 Stable had the expected behavior 1.15 swapped it

Version/Commit

RetroArch 1.15 Build Date Mar 11 2023 Git Version: GIT_VERSION Port 1 Device Name: mFi Controller

Environment information

Agusum commented 1 year ago

I'm experiencing the exact same issue.

Moreover, changing the mappings in-game does nothing to the controls, they remain as the default behavior.

spijet commented 1 year ago

I experienced the same issue on MacOS Ventura and Metal-version of RetroArch 1.15 from Homebrew repo.

The contollers used are 8BitDo Lite 2, both are in "Switch" mode and connected over Bluetooth. I will try to test them in "Dinput" mode as well, but on previous RA versions this mode caused RA and cores to mix up the controller<->player mapping on every init (e.g. on every game start/close).

Moreover, the issue seems to be different in each core:

montyclt commented 1 year ago

Same issue with Nintendo Switch Pro controller and macOS Ventura 13.1 on M1 chip.

spijet commented 1 year ago

I think I found the possible root cause of this problem. Turns out MacOS thinks that the 8BitDo controller has a different button mapping (XBox-like one?) and applies its' own remapping profile before passing the events to applications. Here's my attempt at fixing it:

  1. Connect the controller(s) in "S" mode to your Mac;
  2. Go to System Settings -> Game Controllers, scroll down to "Profiles" section and click the "+" button create a new profile (e.g. "8BitDo") image
  3. Double-click the newly created profile and remap the 4 "face buttons" like so: image
  4. Then double-click each of the controllers that you want to apply the fix for and select the new "8BitDo" profile in the "Use profile" option, like so: image

This fixed the problem for me. Now RA and all cores (and some other emulators as well) work as intended, with no button mixups.

Agusum commented 9 months ago

@LibretroAdmin This issue persists in RetroArch 1.16. Tested it on macOS Sonoma 14.0.

sysadmininator commented 1 month ago

@LibretroAdmin this issue seems to be present on iPadOS as well. Not really surprised as I imagine the default profiles are shared across most/all of Apple's ecosystem, but wanted to share nonetheless. Please let me know if there's a better way to report this as my intent is not to hijack but to help with scope.

iPadOS 17.5.1 (M4) RetroArch 1.19.1 (App Store) 8bitdo Lite 2 (both S and D modes, Bluetooth) Not sure how many cores are affected but I have experienced the issue with RA menu, FinalBurn Neo, Sega*, Mupen64Plus-Next, PPSSPP, and PCSX Rearmed.

Following @spijet suggestion above appears to correct the issue for all menus/cores.