RetroArch
RetroArch copied to clipboard
Analog stick input additionally causes dpad input, regardless of bindings/config [Beetle PSX, Flycast, ParaLLEI N64), etc]
Platform / OS / Hardware: RetroArch 1.10.12 Cores: Flycast core 22ad95c, and Beetle PSX cores dd97d81 and 88929ae, ParaLLEI N64 b804ab1 MacOS 10.15.7
Github hash (bug affecting multiple cores, for example): 22ad95c, dd97d81, 88929ae, b804ab1
Hardware: 2.5 GHZ core i5
Description of the Issue
Analog stick left/right/up/down (emulated PS1 Dual Shock or Dreamcast or N64 controller) will always wrongly cause dpad left/right/up/down input no matter what you set your bindings configuration to, unless you unbind (emulated) dpad left/right/up/down so that it’s not assigned to any buttons.
Same as this issue which someone reported for Lakka: https://github.com/libretro/Lakka-LibreELEC/issues/899
Flyinghead said it's likely not a core issue but instead RetroArch layer.
Debugging Steps Tested
- Set Analog to Digital Type = None. Didn’t help
- Unbound and rebound everything, issue remained
- Deleted core remap and game remap files, issue remained
- Tested stand-alone Redream emulator (Dreamcast) and OpenEmu: no issue
- Tested multiple games to rule out a game-specific bug. Examples: in Ape Escape 1 on PS1, left analog stick additionally causes camera movement (which is supposed to be dpad only), Metropolis Street Racer (Dreamcast) your steering inputs will always cause a horn honk, and in Daytona USA analog stick up/down (which is human error while steering) will cause camera change. Goldeneye 64 has same issue on RetroArch.
- Used computer OS-level input testing app, confirmed that controller itself doesn’t have input issue, everything looks fine, no spurious inputs to dpad when using analog stick.
- Tried assigning (real-world in-hand) Dpad Left/Right to Dreamcast (emulated) controller buttons dpad UP and DOWN in RetroArch to see if Analog stick left right would still cause dpad left right inputs. Issue remained.
- Tried binding Dpad left/right to nothing (“- -“), this stopped the spurious inputs, with drawback of losing the assigned in-game functions for dpad
- Ran a ControllerTest-DJ.cdi file in RetroArch Flycast, confirmed that indeed analog stick is causing corresponding dpad inputs. It’s a one-way issue: analog stick causes dpad input, but dpad input itself is OK and doesn’t affect analog stick input.
- Tested in stand-alone Flycast, both the latest stable version and also the 22ad95c build that matches RetroArch, and there is no issue there, analog stick doesn't cause dpad inputs.
Logs Gathered
I turned on verbose logging, repeated the problem inputs inside a game, but the log doesn’t contain anything about inputs, buttons, etc, even if I unbound and rebind the inputs during the session.
I don't have Apple stuff to test, but can't reproduce on Windows 10.
Have you tried other cores? An easy test would be: https://github.com/ShendoXT/padtest/releases , download the .zip and extract both .bin and .cue from the "CD image" folder and load the game with PCSX ReARMed (it doesn't seem to load with Beetle PSX). While it's running change Quick Menu > Controls > Port 1 Controls > Device Type to "dualshock" then resume and see if it works properly.
Update: confirmed same bug in Beetle PSX (Metal version on Mac). (I'm editing the title of the issue.) Confirmed same issue is present in ParaLLEI N64 b804ab1.
Padtest is crashing for me after the 2nd Playstation BIOS screen with message "Bad Sector? - 111" in bottom left corner of RetroArch, possibly due to non-emulator-friendly direct memory access to SIO ports. But Ape Escape 1 I found is a crucial test case:
- PS1: In Ape Escape 1 the analog stick movement control is simultaneously controlling the camera (which is supposed to be limited to dpad).
- N64: In Goldeneye 64, analog stick causes dpad functions in addition to analog stick functions, and this is confirmed on the controller option screen which has animated button press display: dpad gets moved whenever analog stick is moved
I never noticed any issue in PS1 or N64 before because the dpad and analog stick are usually redundant in most PS1 games, and dpad is often not used in N64, so the bug wouldn't cause a problem. I had only noticed it on Dreamcast, where games started to more often put different functions on dpad versus analog stick, like in Metropolis Street Racer. But I see now the bug is present in PS1, N64, Dreamcast, etc.
I am having this same exact issue (Windows 11, RetroArch x64 latest version), but I only tested the Mupen64Plus core. I am trying to play the Donkey Kong 64: Tag Anywhere hack which uses the D-Pad to switch Kongs, but the analog stick is causing false D-Pad input. I checked all my binding multiple times in both "Input" and "Controller" menus. I have "Analog to Digital" disabled in both menus. I have all other controller ports disabled. No matter what I try, the analog stick is sending digital input. This can be seen using this N64 test program.

Edit: Also posted a video on YouTube that shows the problem.
https://www.youtube.com/watch?v=FmstIMSElKM
Edit: Ruling out this being on the OS level. I can push to the top left (or any angle) and it does not trigger the D-Pad. Also tried other games and emulators. This problem is entirely with RetroArch.

Same issue on Linux.
Also experienced this issue on windows 10 with citra/3DS.
Also experiencing this issue on Windows 11 with ParaLLel N64 core. On a SM64 hack that has different functions for left joystick and d-pad, every left joystick movement causes an unintentional d-pad press. Indeed the only Band-Aid fix was to unbind the d-pad functions in order to properly use only the left joystick's functions.
I'm experiencing a very similar issue. The difference for me is that the extra input causes a button press that's not the d-pad.
I'm using a DualShock 4 controller via USB with JELOS 20230517 (the bug is present a few releases ago as well) with Mupen64Plus-Next.
Pressing the Right Analog Stick to the right trigger the L2 button, and the same stick Down trigger R2. Tried both udev and sdl2 drivers, same result. Using udev actually even seems to crash Retroarch if I press right on the Right Analog Stick.
The workaround was to assign nothing to both R2 and L2.
Strangely enough, using Retroarch 1.15.0 on Arch Linux doesn't seem to have this problem.
Same issue as here, though it's odd because it only affects one of my systems, and they are identical to one another, I have even tried swapping cfg files with no solution.
It also more strangely only affects my dualsense edge controllers (tried multiple) on one of my PCs, but on either PC my dualsense regular controllers are not at all affected.
Definitely a strange bug! I noticed it while playing Goldeneye/Perfect Dark in RetroArch 1.15.0 on one of the Windows 11 PC I have, 64-bit.
The only thing which seemed to fix it, but I'm not sure if it the right solution, is applying the Right Analog (forced) option to the dpad emulation, so it may be assigning the wrong dpad emulation option despite what is selected in the menu.
It doesn't affect my other identical PC at all, and it also doesn't affect my Android RetroArch 1.15.0 either.
Also, it is definitely a retroarch issue, and not a core issue. I have never had issues with the button assignments correctly changing within the cores.
As a suggestion for temporary solution can suggest to others, try simply using a different controller on your RetroArch and it may not have the same issue. This is what I'm doing currently for the 1 of 2 PCs which doesn't work correctly.
I have this same exact issue and it seems like it is a permissions issue of some sort because running retroarch as administrator fixes it every time for me.
I have this same exact issue and it seems like it is a permissions issue of some sort because running retroarch as administrator fixes it every time for me.
very interesting, i have just tried this myself also, and it actually did resolve it, i guess this is a temporary fix? worked for me
I have this same exact issue and it seems like it is a permissions issue of some sort because running retroarch as administrator fixes it every time for me.
very interesting, i have just tried this myself also, and it actually did resolve it, i guess this is a temporary fix? worked for me
Wow, this actually did solve my situation completely, maybe Retroarch just needed admin privileges to overwrite some old cfgs?
Now I am launching regularly and tested two games, and restarted RA and tested the same 2 games, and I am no longer having issues, definitely worth a try for others if you are having this issue!
Is this really still a thing, since I haven't been able to reproduce it with any cores or configs? Also tried as normal user and as administrator, and no difference.
Is this really still a thing, since I haven't been able to reproduce it with any cores or configs? Also tried as normal user and as administrator, and no difference.
Yes, it is ongoing, I resolved it on one of my two desktops using admin privilege launch but now it is affecting my laptop RetroArch and as of yet admin privilege has not yet fixed it, but I will keep trying 🤣
Testing with the latest version surely?
Testing with the latest version surely?
Yup 1.16.0
I have a temporary fix on my laptop RetroArch to set right analog as forced to I think C buttons and it actually works that way so it seems like a weird GUI bug maybe even not sure
And updated autoconf profiles and tried other controller drivers?
And to be sure you downloaded the hotfixed versions after the initial 1.16.0, since it had a nasty issue after using analog stick in the menu, which caused d-pad input to the core?
And updated autoconf profiles and tried other controller drivers?
Yup even other controllers it works fine with most controllers such as dualshock 4 and dualsense controllers but for some reason a dualsense edge controller has had this issue twice for me once resolved only
Then it might be something with the autoconf profiles. The only analog stick controllers I have show themselves as either X360 or XOne controllers.
Makes no sense why the controllers would behave differently after the binds are correct. And no background software running that can cause conflicts, like Steam?
How about trying nightly to be sure you are running the latest version?
Then it might be something with the autoconf profiles. The only analog stick controllers I have show themselves as either X360 or XOne controllers.
Makes no sense why the controllers would behave differently after the binds are correct. And no background software running that can cause conflicts, like Steam?
How about trying nightly to be sure you are running the latest version?
Yup tried without all other apps open
I think it is just an error with auto config on specific pads too
I have even uninstalled controllers and reinstalled drivers sometimes it helps sometimes it doesn't so something with the autoconfig
I am not using nightly just stable
Ok, so please try nightly and please try creating a new profile with proper binds manually.
And you are positively sure that Steam is really really closed and not just in the background?
You should give us an exact indication of your runtime state.
- The OS you are running
- All the background applications/services you are running
- Preferably a zip/copy of all your retroarch configs
- Tell us which USB devices are connected to your system
- Whether the pad is connected thru Bluetooth or USB
This seems like an issue that is very specific and pretty hard to reproduce except if you know the exact circumstances of the user. I have personally never experienced issues like this with a DS Edge controller.
You should give us an exact indication of your runtime state.
- The OS you are running
- All the background applications/services you are running
- Preferably a zip/copy of all your retroarch configs
- Tell us which USB devices are connected to your system
- Whether the pad is connected thru Bluetooth or USB
This seems like an issue that is very specific and pretty hard to reproduce except if you know the exact circumstances of the user. I have personally never experienced issues like this with a DS Edge controller.
I can do that in a few days, it has happened on two of my PCs and resolved once so it did repeat for me, but yes can definitely share soon
You should give us an exact indication of your runtime state.
- The OS you are running
- All the background applications/services you are running
- Preferably a zip/copy of all your retroarch configs
- Tell us which USB devices are connected to your system
- Whether the pad is connected thru Bluetooth or USB
This seems like an issue that is very specific and pretty hard to reproduce except if you know the exact circumstances of the user. I have personally never experienced issues like this with a DS Edge controller.
I can do that in a few days, it has happened on two of my PCs and resolved once so it did repeat for me, but yes can definitely share soon
OK, that is fine. Reply in this thread when you have smth for us.
You should give us an exact indication of your runtime state.
- The OS you are running Windows 11 Pro
- All the background applications/services you are running Freshly shut down and turned on PC, startup applications are Xperia Companion, Google Drive, Western Digital, Samsung Magician, CCleaner, Corsair iCue, Bluetooth services, NordVPN, and no other applications were launched before starting RetroArch, game controller DualSense already connected to USB and one Corsair optical mouse connected to USB
- Preferably a zip/copy of all your retroarch configs Will attach
- Tell us which USB devices are connected to your system DualSense controller on USB-A, Corsair optical mouse on USB-A, 2x external NVME external SSD via USB-C
- Whether the pad is connected thru Bluetooth or USB USB-A connected
This seems like an issue that is very specific and pretty hard to reproduce except if you know the exact circumstances of the user. I have personally never experienced issues like this with a DS Edge controller.
I can do that in a few days, it has happened on two of my PCs and resolved once so it did repeat for me, but yes can definitely share soon
OK, that is fine. Reply in this thread when you have smth for us.
I've managed to reproduce it multiple times, I had tried this two days ago and just now as well.
I did what you suggested which was set the controls in the global area using: input -> retropad binds -> port 1 controls -> reset to default controls
This actually fixed it, even when I have re-launched RetroArch.
However I was able to reproduce it by selecting "set all controls" (it would not accept inputs from my DualSense, despite the controller working in games and in menus otherwise), and jumped back into the game from the quick menu and it resulted in the same error of the left analog up/down also applying to the up/down of the D-Pad, notably sometimes it would only bind to one of these directions too, and without exiting RetroArch the only way to "fix" this would be to assign the analog to digital type to "right analog (forced)"
However, since I have done the reconfiguration, now if I restart RetroArch, it will now at least the few times I've tested in the last 3 days or so launch without the errors of stick/button assignment, but as above it was reproducible, so there does seem to be some small bug in the "reset to default controls" on some gamepads
Hope that helps! Seems like a rare and uncommon bug and maybe only with certain controllers and specific functions in the auto-assign controller functions
I've been having this exact same issue on RetroArch using my Series S in Dev mode. Its not so much of an issue with Dreamcast since you can force right stick but on Gamecube and PS2 its makes games impossible to play since they require a dpad, left analog, and right analog all with separate inputs. I notice the issue doesn't occur until I start a game and exit it using the quick menu hotkey, when I go back to the game usually the left analog up and down are simultaneously mapped to dpad inputs. I think this behavior is somehow tied to the digital to analog auto mapping that was added in a fairly recent update. The only workaround I've found is to create a core overrides for Dolphin and PCSX2 changing Settings-->Input-->Input Button Axis Threshold from 0.500 to 1.000 which basically makes it so you cant move the analog stick far enough to trigger the digital (dpad) mapping. The only downside to this is that you are unable to use the analog stick in the menus, you have to use the dpad while the override is active. I hope this helps someone having the same issue as me.
No, there is no "digital to analog auto mapping". That is due to a bug in the menu input that is already fixed. Simply don't use the analog stick in the menu, or just update to current version.
This issue itself is not related, since it was created before the code change, and this issue also occurs with certain controllers after the code fix, so it is something else.
Maybe I didn't us the correct verbiage, but I was referring to the patch notes for version 1.9.6
"1.9.6 modifies the Analog to Digital Type functionality such that it can be disabled automatically for cores that have native analog support. The setting now has the following values:
- None: No mapping
- Left Analog: Map left stick to D-Pad, but disable mapping if core attempts to read analog input
- Right Analog: Map right stick to D-Pad, but disable mapping if core attempts to read analog input
- Left Analog (Forced): Always map left stick to D-Pad, disabling left stick analog input
- Right Analog (Forced): Always map right stick to D-Pad, disabling right stick analog input
Sure, and it has zero role in this issue since it happens with AtD disabled, and 1.9.6 is ancient (over 2 years old). Non-forced AtD modes could easily be the default, since it only applies when the core does not use the analog stick for real.
Happening to a friend just today, causing weird behaviour in Sonic Adventure. If anyone knows of any quick workarounds, it would be appreciated :)