Single place to map controllers
-
I just setup a RetroPie for use with MAME. I am using an ODroid XU4, an Z-Arcade Tankstick, and the current version on the three layers of software. I was shocked at how difficult getting the Tankstick to work was. It's not a simple matter. Why is this?
RetroPie is a piece of software, EmulationStation is a separate piece, and then there is MAME. So three layers. At the MAME layer, there are several parallel emulation choices; the situation would be the same with any to those I recon.
Getting the Tankstick to work - to correctly interact with all three of these layers - took several hours. There is no clear documentation on this. There are lots of half-complete write-ups and video's, and no clear direction. I ended up needing to configure each of these three things individually:
- first for RetroPie (editing a config file)
- then for EmulationStation (running the controller configuration utility)
- then in MAME, going into the MAME configuration menu, and globally configuring there
Why is there no single place to configure this, that all of the various layers can use? My (granted limited) understanding of RetroPie is a layer to make all of this (running various emulators) easier. This seems a glaring oversight.
I plan on setting of a second one from scratch, and tanking better notes of what I need to do, and when, to get all of this to work.
The point of this post is to see if there is anyone working on this, or if I should go ahead and create a ticket to track the request.
-
@treaves Did you try using this documentation?
https://github.com/RetroPie/RetroPie-Setup/wiki/X-Arcade -
@hurricanefan said in Single place to map controllers:
That is for using the user-space driver to treat the Tankstick as two gamepads; no, I didn't. I did consider it, but, read conflicting reports as to if the one accessible from within RetroPie worked, and even tough folks are using it installed manually, it provides no value over just using the keyboard encoder.
I will be building my own controller using an IPac, and the issue would be there too. There is documentation that states that the RetroPie, EmultationStation,{engine} are all three configurable from a single place, but, that just seems to not be the case.
-
@treaves said in Single place to map controllers:
folks
The documentation here: https://github.com/RetroPie/RetroPie-Setup/wiki/Keyboard-Controllers does at least mention the 'layers of abstraction' and the 'retread' concept. But there seems just no may to keep everything in sync when setting up even a modest keyboard-controller based inout system.
-
@treaves said in Single place to map controllers:
It's not a simple matter. Why is this?
you tell me? it's your responsibility to create a seamless experience as much as it is anyone elses.
there is a single place to map USB controllers - https://github.com/retropie/retropie-setup/wiki/First-Installation#configure-controllers
these various keyboard emulating arcade controllers do things in a variety of ways. we have documentation that you didn't follow. it's complex because it's complex. if someone wants to code a better solution, then PRs welcome :P
-
Thanks for the response; I do appreciate it. I would like to clear up a few inaccuracies however.
Why would you say I didn't follow the documentation? I surely did. And no, it's not a users responsibility to 'create a seamless experience'. And no, keyboard controllers do NOT do things in a variety of ways. And no, the developers of an OSS application are under no obligation either.
For USB controllers, the referenced document may or may-not work; as I don't use one, I'm in no position to tell.
You may not know this, but, all keyboard controllers work in exactly the same way; they may buttons or joystick movements to key presses. What keys the controls are mapped to may differ, and how they get mapped surely will differ, but that has nothing to do with how it's configured in an application. Any application sees a keyboard as a keyboard.
It's complex because no one has made it simple. I in no way imply that making it simple is easy. And as for PR's, sure, I'll look over the code. There are plugins to do things like bring down theme's, scrape, etcetera. At a minimum one could be written to handle the mappings in one layer to another. A plugin that allowed a keyboard-mapped controller to press each control on their device, and them state what it should be in-application, may be a good starting point.
-
@treaves I've read a few of your posts and you are coming across as an entitled, know-it-all ass. Hopefully this is not your intention.
RetroPie incorporates Libretro cores PLUS a huge number of standalone emulators PLUS ports that all handle input in slightly different ways. If you want to herd those cats then good luck to you.
I look forward to seeing your seamlessly integrated solution being implemented. -
And no, it's not a users responsibility to 'create a seamless experience'
i didn't actually say this. it's no-one's responsibility, to be clear.
For USB controllers, the referenced document may or may-not work; as I don't use one, I'm in no position to tell.
there's 100,000s of known retropie users, so you'll have to take my word for it that this fundamental use case works :)
At a minimum one could be written to handle the mappings in one layer to another. A plugin that allowed a keyboard-mapped controller to press each control on their device, and them state what it should be in-application, may be a good starting point.
this already happens: https://github.com/RetroPie/RetroPie-Setup/wiki/Keyboard-Controllers#emulation-station-and-retroarch
now, you may run into difficulty with some standalone non-libretron emulators (mame4all-pi), or if you want to do 2 players on 1 keyboard, etc.
@caver01 has written some very thorough explanations of the various relationships involved with keyboards.
looking forward to your PR...
-
@dankcushions said in Single place to map controllers:
this already happens: https://github.com/RetroPie/RetroPie-Setup/wiki/Keyboard-Controllers#emulation-station-and-retroarch
Kind of. This may be a good starting point. But for keyboard based controllers, it doesn't do anything for users other that the first user. It also doesn't configure the MAME emulators (not sure about the others). I did this step, upon initial, and just assumed it had set everything up. But it didn't. And searching around shows others with the same issue. Most if not all with he keyboard-based controllers.
So I'll take a look at that area of the code. If I understand correctly, a lot of cfg files are binary; I couldn't find the standard MAME configuration files.
Thanks for the info.
-
@treaves said in Single place to map controllers:
@dankcushions said in Single place to map controllers:
this already happens: https://github.com/RetroPie/RetroPie-Setup/wiki/Keyboard-Controllers#emulation-station-and-retroarch
Kind of. This may be a good starting point. But for keyboard based controllers, it doesn't do anything for users other that the first user.
correct. this is why keyboards are more complex than controllers for us. you only have to configure a controller once, and then you can plug in however many you like and it will handle those as new players, with the same config. the framework isn't in place to do the same for keyboards.
It also doesn't configure the MAME emulators (not sure about the others).
yes, it does. at least, the libretro ones (lr-mame2003, for example).
So I'll take a look at that area of the code. If I understand correctly, a lot of cfg files are binary; I couldn't find the standard MAME configuration files.
no, libretro mame cores use the retropad libretro abstraction, which is handled by retroarch.cfg, and the joypad autoconfigs, etc. all human readable.
now, SOME lr-mame cores ADDITIONALLY still expose the original old mame 'tab' menu, which allows you to remap beyond the retropad abstraction, which can be useful in certain scenarios. the files this config is held are NOT human readable.
-
@dankcushions said in Single place to map controllers:
yes, it does. at least, the libretro ones (lr-mame2003, for example).
It didn't seem to for me. I'll have to go back though to process and document what I do better (my memory is not what it once was...). But the way I remember it, I did the initial setup, when into Arcade, played Galaga, and neither the fire button nor the joystick worked. The Tankstick uses out-dated mappings for MAME (I guess they changed at some point). So I assumed that was the cause. I ended up remapping the Tankstick to just 'regular' letters on the keyboard, ran the controller setup, and still no-go. I had to go into the tab menu, and do a 'global' mapping there for it to work.
I've got some good areas to start looking.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.