Configuring emulators (in Windows, Linux or the Pi) is the biggest pain in the butt you’ll ever have.

If you succeed to successfully configure one or more emulators then you can call yourself a power user, no matter what developers say. Anyway, I’ll limit myself here to Mame and any controller that is properly recognized by Linux. I NEVER try to edit RetroPie/Emulationstation/Retroarch -or what have you not- directly. Only if there is no other way. First, I check if my controller is properly recognized and if all buttons and axis work from the command line (press F4) w/:

jstest /dev/input/js0

You might have to check js1 or js2 if you have multiple controllers. You might also need to install the package ‘joystick’ in Linux first by running the command:

sudo apt-get install joystick

And then there is Mame with its myriad of twin brothers: mame4all, SDLMame, advance-Mame, mame 0.94, etc. etc. Besides all of them demanding a different ROM set (why? WHY?? Aaarrggggghhh!!!!!!!) they all appear to have a different way to setup joysticks. What I do in advMame 0.94 (I use that one because it lets me save games):

– TAB (it gives you the menu)

– Configure the FOUR (!) ways the input can be configured (especially the ‘insert coin’ and ‘player 1 start’). Being: (1) Input (general) — user interface; (2) Input (general) — player 1 controls; (3) Input (general) — other controls; (4) Input (this game).

– I find this configuration to be quite tricky. It accepts multiple controls to perform an action (i.e. the ‘5’ on your keyboard for insert coin as well the ‘Select’ button on your controller). However sometimes they disappear when I try to enter an additional one.

Succes w/ configuring Mame and RetroPie! :)

P.S. Another problem altogether is to get non-PC/non-USB-standard controllers to work like your iPac or PS3 controllers or what have you not. See this page for the (limited) Linux support for the iPac.