I have managed to get this working somewhat. This works for Version 3.2.1, but later versions removed the retroarch-joyconfig tool.

cd /opt/retropie/emulators/retroarch/bin/
sudo ./retroarch-joyconfig -d linuxraw -j 0 >> /opt/retropie/configs/all/retroarch.cfg

Then in retroarch.cfg uncomment and enter linux raw as the joypad driver

# Input device driver. (Valid: linuxraw, sdl, dinput)
# input_joypad_driver =

I’ve copied the input for a second player and this does work, however, I’m currently stuck on a couple of points.

Firstly, emulationstation still does not recognise the NeoGeoX Joystick (when retroarch is running it names it but says “not configured”). This is frustrating because it means using another controller to select the ROM, then having to switch.

Secondly, when both Neo Geo Joysticks are plugged in, one of them will register 2 credits for every button press (the other does not) – weird but not a deal breaker. Not sure if there is an obvious reason for this.

I’m happy to upload the .cfg file if that helps but would definitely appreciate any help getting emulationstation to recognise the joystick!