Issue with XIN-MO Arcade Controller (2 Players).
Firstly, the issue:
I am building a 2 Player Arcade Cabinet. I bought a complete Button Kit from ArcadeWorld. It came with a 'XIN-MO controller Dual Arcade' which I have connected everything to (All buttons & x2 Joysticks). I am aware that in order to make the RP3 recognise it as x2 Controllers instead of one, you must follow this article:
Xin Mo Controller
I added the the following to /boot/cmdline.txt
I double checked the Vendor/Product ID with lsusb and there are no typos in this line.
Ok great, it is now recognized as two controllers...
So I configure Input in Retropie as per normal. My setup has a joystick per player and 6 main buttons, and each have a start/select button.
First of all, there is NO issue when I configure the first controller. Games work fine, controls are great! BUT then when I configure Player 2, the first controllers Right and Left switch! For example I jump into Metal Slug. And one player is perfect BUT the other one's Right and Left have been inverted (Right goes Left and Left goes Right on the Joystick). While browsing the Retropie Menus, you can also see the Left / Right issue. I must push Right on my joystick to move to the left in Retropie Menu (Viewing Consoles). Also the Start / Select buttons have switched.
When I configure the second controller (in any order physically) in Retropie, that the controls get messed up on the one that was set first.
So I thought, ok I can just go into RetroArch and switch the Left - Right buttons on the second controller which was configured. But that doesn't work. RetroArch won't save the configs.
I don't believe this is a physical issue, seen as there is no issue using any ONE controller on its own. Its when that second controller is programmed in Retropie that the isssue occurs. So definetely software related?
Pi Model or other hardware: Pi 3B
Power Supply used: Official RP3 Charger
RetroPie is v4.3
Built From: SD Image on RetroPie website
USB Devices connected: XIN-MO 2 Player Controller
Guide used: https://github.com/RetroPie/RetroPie-Setup/wiki/Xin-Mo-Controller
Emulator: NEO-GEO / MAME
How to replicate the problem: Configure Player 1 in Retropie. Configure Player 2. Jump into Metal Slug. Observe, that the second controller configured has become corrupt. Left move of the joystick will move player Right. Also the Start / Select buttons have switched.
Update Question: I now think there may be an issue with the wiring. Lets take the joystick for example. I placed a 4-pin connector into the XIN-MO, in the allocated spot which I see on the XIN-MO diagram for the LRUD directions. Do these have to go to exact correct button on the Joystick? Because it is hard to tell which connector (of the 4) on the joystick is which direction? I just thought, ok any of the LRUD pins on the XIN-MO can connect to the joystick, once its one of four in the block on the diagram?
Found a fix:
Deleting the retroarch.cfg for that emulator should fix it! Reboot Your Pi and it will be re-created. I did this and it fixed my P1 / P2 getting mixed up. Issue was MAME specific too!
@shay90 hey I'm having this same issue... How did you find the file and do you need to delete it all of the emulators? Much appreciated thanks
dsstrainer last edited by
Why do you prefer xin mo over zero delay? Seems like ZD is the new defacto standard now as they are literally sold by dozens of companies on aliexpress, ebay, and amazon. Plus they work out of the box and are about $9 each with simple connectors. Can't really beat that.
@dsstrainer it's not that I prefer it.. It just came with my build but if it's easy enough to swap I will.. It is connected by one USB port but I did the steps to have retropie recognize 2 controllers with the cmdline.txt addition (usbhid etc.)... Ill search for what you mentioned and if the measurements are the same I will do it... But for now I wanna try to delete that file he was talking about to see if it works
dsstrainer last edited by
@Kvnsrv Understood :)
@dsstrainer so I tried deleting that file and didn't work... Then tried remapping through retroarch and the buttons still get swapped as soon as the other controller is configured..i noticed through mapping that the 2nd controller axis isn't the same though... Like UP on the 1st controller registers as "+1" and DOWN as "-1" but 2nd controller UP registers as "-0" and DOWN as "+0" its really weird but I'm at a loss right now... I even tried physically putting the joystick in a different position on the control board but either way doesn't help... If anyone else can jump in on this I would be eternally grateful.
I just wanna play 2 players on my 2 player cabinet!!
Okay so update!
At long last I figured out the issue... Hallelujah!
I opened up the hardware and looked hard at the xin mo encoder. I had a diagram to reference where the connections need to be beforehand in case.
I then simply unplugged the 2nd player side's 4 pin (up, down, left, right) connector and turned it around and plugged it right in and BAM! All of the configurations read right and the controls were as they should be!
Hopefully this can help anyone who was at a loss like I was. It seems when all software issues fail... Check the physical connections to verify. 😂👍