Analog Triggers have no analog function using Dualshock 3 controllers

I’ve got a Dualshock 3 controller and tried to play Outrun on FB Neo, MAME 2003 Plus, Beetle Saturn (Sega Ages version) and no analog triggers function at all, since 3 different cores were tested is not a core issue.

The drivers installed are Motioninjoy 0.7.1001 offline version over OS Windows 7 x86. PC games were tested and no issue with the analog triggers at all.

The UI treats them as digital all the time, but you can do some manual adjustment (the autoconfig profile for your pad is a good place to do it) to make them analog (see the last couple of posts here: https://github.com/libretro/RetroArch/issues/6920).

I tried it out, and was a bit complicated to understand since my programming skills are very basic, what I did is to change the following lines to:

  • input_player1_l2_axis = “+2”
  • input_player1_r2_axis = “+5”

and added these lines:

  • input_player1_l2_axis_label = “LT”
  • input_player1_r2_axis_label = “RT”

The file edited was retroarch.cfg a custom one, address: \RetroArch\config. The autoconfig files don’t have the required lines to be edited but all this is not working at all.

Once they’re assigned as axes, the core still needs to support them. You might try Cannonball core, as I think it supports analog triggers for acceleration/brake.

I think Beetle Saturn supports analog triggers since there is a core option to adjust analog triggers deadzone, on the other hand I now figure out that is not implemented yet, I thought there was a misconfiguration of mine. I’ll wait for proper analog triggers support then, thanks.

I kind of figured out the reason the triggers only work as digital, it seems is related to the joypad driver, I changed the default XINPUT to SDL2 and the brake was configured to right stick, the controller I’m using is original DS3 and a message popped up indicating it is a DS3 controller connected and not a Motioninjoy (Windows interfase for DS3) controller anymore as when the joypad driver was XINPUT.

Does anyone know what the axes to configure for the DS3 controller since I can select the one I want, this is the configuration used.

Left stick(left) AXIS X-
Left stick(right) AXIS X+
Left stick(up) AXIS Y+
Left stick(down) AXIS Y-
Right stick(left) AXIS RX-
Right stick(right) AXIS RX+
Right stick(up) AXIS RY+
Right stick(down) AXIS RY-
Left Trigger (L2) AXIS Z+
Right Trigger (R2) AXIS RZ-

The brake only worked as analog when I changed the driver from XINPUT to SDL2 and did’t bind none of buttons at all.

I found 2 solutions:

1st. Emulate the DS3 controller to a Xbox360 one by Motioninjoy interface that’s all or:

2nd. Use “dinput” joypad driver, the details are below:

  • Configure Axis Z+ to L2 analog trigger by Motioninjoy
  • Configure Axis Z- to R2 analog trigger by Motioninjoy
  • Edit your “retroarch.cfg” and find the follow lines:
input_player1_l2_axis = “nul”
input_player1_r2_axis = “nul”

Change values to:

input_player1_l2_axis = “+2”
input_player1_r2_axis = “-2”

Finally save retroarch.cfg

1 Like

I found solutions that can work on Windows and Android (Nvidia Shield Tv)

  • On Windows map L2 and R2 by Motioninjoy to Dial+ (Axis +6) and Slider+ (Axis +7) respectively.
  • On Android no need since is automatically mapped.

Now edit your “retroarch.cfg” and find the following lines:

input_player1_l2_axis = “nul”
input_player1_r2_axis = “nul”

Change values to:

input_player1_l2_axis = “+6”
input_player1_r2_axis = “+7”

And save retroarch.cfg

Note 1: Don’t ever set this controls by Retroarch to avoid digital controls to be mapped.

Note 2: When L2 and R2 are mapped to same number axis simultaneous interrupt is made at both triggers pressed for an instant.

Here’s what I use for my Windows PC:

https://vigem.org/projects/DsHidMini/

https://ryochan7.github.io/ds4windows-site/

And before you ask, yes, it does work with DS3 controllers…

This is still an issue.

My controller had a configuration under autoconfig/drivername/mymodel.cfg, but you can generate one easilly via settings, input, retropad binds, port #x controls,save controller profile.

Then you can edit the generated file and comment:

input_l2_btn = "6"
input_r2_btn = "7"

like:

_input_l2_btn = "6"
_input_r2_btn = "7"

…and finally add:

input_l2_axis = “+5”
input_r2_axis = “+2”

+2 and +5 works for me, you may have different values.

That way the configuration will be tied to that specific controller and not system wide like when editing retroarch.cfg.
Indeed, i’ve found that everything you throung in it takes priority over the single controller profiles (wth!), so it is not only something to avoid, but if the above method is not working for you, you may want to take a look in that file for likes like:

input_player1_l2_btn = "5"
input_player1_l2_btn = "6"

and ensure they are set to nul

input_player1_l2_btn = "nul"
input_player1_l2_btn = "nul"

…or just delete them.