batocera-linux/batocera-emulationstation

N64 Controller Mapping Issue

Opened this issue · 1 comments

Concerned project

Both

Distribution Version

Retrobat V6

Architecture

Windows 11

Issue description

Currently there is some issue with n64 controller mapping... Specifically tested with NSO Nintendo N64 Controller.

There is no way to properly map the c buttons in retrobat. For an n64 controller with c buttons etc. one must edit the es_input.cfg file manually to map the c buttons...
There is recent discussion about this here: https://www.reddit.com/r/batocera/comments/18o1mvp/another_n64_controller_mapping_problem/

which references this youtube video: https://www.youtube.com/watch?v=ER4DXS64CkM
and this older discussion: https://www.reddit.com/r/batocera/comments/q6ubcw/how_to_correctly_map_a_usb_n64_controller/ (i still need to read through this more)

If one does in fact edit the es_input.cfg to make the n64 controller work properly with the retrobat autoconfig option --> the buttons don't necesarily make sense with the retrobat GUI (i.e. I prefer left C to correspond to the WEST button which retrobat uses for search etc. but in order to work in retroarch left C needs to be right stick left)

In order to accomplish what I want I need to disable retro bat autoconfig so that my retrobat controller mapping does not effect retroarch. I can then make the controller in retroarch work properly... and map the controller in retrobat such that c left corresponds to WEST (SNES Y) and performs the search function.

So really there are 2 issues here:

(1) This is the more significant issue --> N64 Controller mapping is not possible without manually editing es_input.cfg similar to how it is described here: https://www.youtube.com/watch?v=ER4DXS64CkM

(2) Retrobat button functions may intuitively make sense when dealing with snes/psx/xbox controller but when dealing with n64 controller it gets really confusing... I mean to solve this maybe an option like the existing swap A/B, or swap X/Y options could be implemented that says "use right stick left as SNES Y".. or "use right stick up as SNES X".. but to be honest having all these swap button (or controller mapping modification) options makes things complicated.. and they also are globally applied... and not on a controller type by controller type basis. The need for those "Swap A/B" controller mapping modification options could be eliminated if the retrobat GUI functions were instead named and assignable during the controller mapping. I'm just not sure what to name the retrobat actions.. For example, right now, they are just referred to as a, b, x, y etc. with a usually being the select, b being cancel, y being search and x (i think it is net games list or something) .. instead of calling these a, b, x, y it should be cancel, select, function1, function2. and then you could assign.

The problem presented by (1) above can be overcome by disabling retrobat autoconfiguration option and then simply setting up the controller in retroarch etc. If this is done, then (2) is not really an issue because you can just map the buttons you want using the n64 controller in retrobat without impacting retroarch etc. In summary -- retrobats autonconfiguration is not compatible with n64 controllers --> and maybe that is just how it is... but just wanted to point it out.

Logs and data

No response

I think alot of info is summarized here: https://wiki.batocera.org/systems:n64#controls

I need to do some more investigation -- either way, there definitely could be improvements made to how various controllers are handled..