libretro / libretro/RetroArch

Dreamcast controller analogue triggers through EMS Trio Linker II Adapter are only detected for 50% of their range

Open
#10,250 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
14.1k
Forks
2.2k
Avg merge
7h 35m
Merged PRs (30d)
51

Description

Description

When trying to bind inputs in Retroarch for an official Dreamcast controller connected through an EMS Trio Linker Plus II USB adapter, the analogue triggers only register when depressed 50% or more. The left and right triggers are assigned as "+6" and "+7" respectively by Retroarch. In a game situation, for example Crazy Taxi using the Flycast core, the car only begins to accelerate when the trigger is pressed halfway or further. On console, you need only press the trigger about 10% for the car to begin moving.

The full range of the triggers is recognised and detected by windows (where they are identified as "dial" and "slider" respectively), from a slight press all the way to a full press (a full press simultaneously registers as a button press). Their full range also functions correctly in Dolphin standalone emulator. So this appears to be an issue with how Retroarch recognises the signal from the triggers. What's interesting is that if you press the trigger down fully, Retroarch seems to read that as a full press (e.g. in Crazy Taxi the car will accelerate at full speed). It just seems to "condense" the signal from the trigger to the bottom 50% of the trigger's physical pressable range.

Expected behavior

I would expect the triggers to register and bind when only slightly presssed, and for the trigger's full range to be usable in games, from a relatively slight press to a fuller press.

Actual behavior

The analogue triggers only bind when pressed down halfway or more. In games e.g. Crazy Taxi, the car only begins to accelerate at this point. Retroarch seems to condense a full range of motion into the bottom 50% of the trigger's pressable range, whereas Windows and Dolphin will detect the entire physical range of the triggers.

Steps to reproduce the bug
  1. Connect Dreamcast controller to EMS Trio Linker Plus II Adapter, and adapter to PC.
  2. Open Retroarch
  3. Bind L2 and R2 triggers with Dreamcast analogue triggers
  4. Left and right triggers are bound as "+6" and "+7" respectively.
  5. Run a game with analogue trigger control in Retroarch. Trigger press will only be detected when half-pressed or more.
Bisect Results

This happened every time I have tried to bind the Dreamcast controller in Retroarch. I also tested the 1.7.5 stable build for the same result.

Version/Commit

RetroArch: 1.8.5
Git version: bbe688cd05

Environment information
  • OS: Windows 10 x64 Build 18632 (Version 10.0)
  • Compiler: nightly build installer download

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue through RetroArch's input binding flow with the EMS Trio Linker Plus II and Dreamcast controller, then compare the trigger range with Windows and Dolphin. Verify that the mapped +6 and +7 inputs respond across the full physical range in RetroArch and in a Flycast game such as Crazy Taxi.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.