libretro / libretro/RetroArch

[Feature Request] more flexible Controller Input Mappings depending on type of controller

Open
#17,689 3 comments 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

I would like to see some Kind of Controller Type setting something like : "SNES Style" (4 Buttons on the Front) and "GENESIS/SAT/Fightstick Style" (6 or 8 Buttons on the front).

At moment the whole RA Retropad concept Just centered arround snes/PS Style Controller and for everything else you need to use overrides/remappings to get the most out of the devices.

in a perfect world:
after the initial controllerbinding you can choose a controller type for your device ("SNES Style" or the other mentioned type) . than every core gets mapped perfectly for your device without changing everything because RA "knows" what your Controller looks like.

an nice alternative would be a core-option with this settings (controller-type: snes-style with "4+2" or saturn/arcade stick Style with "6+2" Buttons).

For now (in the real world^^) you can bind a 6/8-button SATURN Style Pad in 2 ways...
Saturn Controller Layout:

Shoulders: L - R

Buttons on the front:

                              X-Y-Z 


                              A-B-C 

for example:
if you want to play Megadrive/Genesis/PCE/3DO Game with a 6-Button genesis/saturn pad you need following binding...

Variant 1)

Retroarch -> Controller

RP_A -> PAD_C

RP_B -> PAD_B

RP_X -> PAD_X

RP_Y -> PAD_A

RP_L1 -> PAD_Y

RP_R1 -> PAD_Z

RP_L2 -> PAD_L1

RP_R2 -> PAD_R1

if you want to play Final Burn Neo, Saturn ,SNES, PS1 . you need a 2nd Binding-variant.

Variant 2)

Retroarch -> Controller

RP_A -> PAD_B

RP_B -> PAD_A

RP_X -> PAD_Y

RP_Y -> PAD_X

RP_L1 -> PAD_C

RP_R1 -> PAD_Z

RP_L2 -> PAD_L1

RP_R2 -> PAD_R1

yeah, i know you can allways set per game/core remapping but in my opinion its not a great solution. f. e. setting up a core-remap for genesis and 6-button pad and it will be the "wrong" (unintuitive) mapping for a SNES-Style Pad with that core and vice versa.

and yeah i know, it would be a pain making it work (basicly all core-mapping and controller profiles needed to be updated) but then it woul be possible to play every core with every controller and still getting the best possible experience)

As a not very nice by-product there are different controller profile-styles for same type of pad.

RA Profile for 8bitdo M30 is mapped with variant 1 to play fine with Megadrive/Genesis
but another fightpad with same button-layout is mapped with variant 2 to play nice with saturn, fbneo.

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

No files, tests, or entry points are identified. Start by reviewing RetroArch's controller binding, controller profiles, and core-remapping behavior described in the issue. Done should mean a controller type can be selected so the relevant cores receive suitable mappings without per-game or per-core remaps.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.