You should talk to the vendor of the board - maybe they have a way to check for faulty wiring ? Looking at the documentation for the board, it looks like it's using GPIONext and that should detect any GPIO inputs easily.
@mitu Before I considered dismantling the buttons from my arcade, I found this other command called jstest, which allowed me to see on the command line what each button was configured to on the USB encoder.
Once I ran jstest /dev/input/js0 for player 1 controls and jstest /dev/input/js1 for player 2 controls, Player 1 appeared to be configured correctly with buttons A and B. However, Player 2 clearly is the one not configured correctly. Here I finally found my problem where player 2 had buttons A and B setup to the wrong physical pins of the USB encoder.
Now that I had SW proof of my mistake, I disassembled my controller case and flipped the connections for those two buttons on player 2 onto the USB encoder. Put everything back the way it was, and behold my arcade is now acting correctly with both controls synced up.
Thank you very much @mitu for your suggestion. I do appreciate it.
@mitu Good call! I'm not sure how much power it's pulling, but setting over_voltage to 2 definitely makes it last longer, though not completely staying on all the time. Trying with setting it to 3 right now and that seems to be going strong!
@dankcushions I think that's half the battle, the retroarch approach to mame inputs gets very confusing for users since there's no one size fits all solution. I find many users get lost in all the menus, saves, opt files, etc which are tangled with the inputs mame is expecting.
If you saved a content folder override for the configuration or used 'Save Configuration', I would expect that some configuration would be different, depending on your options set for each system. But - for each system - RetroArch has the same auto-configuration for joypads (created automatically after you configure your gamepad in EmulationStation), so I expect that if a gamepad is detected in one system, it should work in all systems.
As for advmame, it doesn't obey any config hierarcy, so I would also expect the same configuration to apply for all systems.
@mitu Thanks again for all of your help. After doing the single game remap, I took a look at the generated remap file. In there I found:
input_player1_analog_dpad_mode = "1"
On a whim, I tried that in the retroarch.cfg files for SNES and PSX and it worked. It appears that the value needed to be quoted and that you were otherwise correct. I'm glad to be able to set that at the core level and have it apply.
Hey, @mitu, here is the photo that came up with the USB devices.IMG_2163.jpeg .
As to P1/P2 controllers, I configured only P1 and that did the trick for both.
As I'm writing this I realized my mistake and am horribly embarrassed! I just realized that "X" refers to button "X" and not keyboard "X". I reset my controls again to see which is "X" (I think in terms of Buttons A, B, C, etc.), and now I've been able to get into the menu and reconfigure. Problem solved. I really appreciate all the help!
In case i want to seal this arcade box, does raspberry support so many controller inputs? (2 USB-joystick-button controllers, 2 normal USB controllers, 2 light gun controllers and 2 wheel controllers?)
Not sure on the light gun part but I would assume so, I use the ipac (mini) as well with sanwa joysticks and gold leaf buttons from ultimarc. I've used the inexpensive stuff on amazon also but nothing compares to the ultimarc IMO. The only thing with the sanwa's is going from 8way to 4way switching for games like Donkey Kong as the switching is under the panel. I tried using other joysticks that switch at the top and just didn't like them (mag-stik being one of them). I did get the sanwa working with a servo (servo-stik) for auto switching however my control panel did not have room to fit the servo... I used a toggle switch to move the restrictor plate. You can also set the rom bootup to change to the correct setting but I opted for a manual switch.
I use the arcade sticks for mame games, and usb wired xbox360 like controllers for nes/genesis etc. Some nes/genesis games I use the arcade sticks as well, Works great either way. I don't remember if I ever got genesis 4 player games working with arcade sticks and usb controllers together, IIRC I had to use 4 usb controllers was something with the multi-tap in genesis but I only have 1 friend so it's not a problem normally lol.
You will need a powered usb hub as you wont have enough ports for everything.
MDF is what I used for a small 2p bartop, going to do a 4 player pedestal next using MDF again.
@mitu hey thanks so much. Just finally got the chance to get back on the arcade machine and using your method I was able to map the buttons to the left and right paddles respectively and now I can play the pinball game the way I wanted to. Cheers
I've just read this on the mamedev wiki... "The original controller for 720 Degrees was a joystick that was hardware-limited to only travel along the outermost edges in a circle. The internal mechanism for reading this control was similar to a spinner except that it had the additional benefit of knowing which direction the joystick was pointing. Because this knowledge is an important aspect of the game, the current emulation of the controller maps an analog joystick to the underlying controls instead of a spinner." I've never heard of this before! That would be hard to emulate. So does this mean that the system doesn't recognise when the joystick is central, so you always have to be facing in a direction for the game to work? I'm guessing you would have to set the controls in mame to allow this, but you wouldn't need to configure it as a spinner. I'm pretty sure your left right up down system would work as normal.
My advice is to not use 'Save on Exit' and use Core/Game overrides for changes you want to add to the controls. If you want to have a global configuration setting applied to all Libretro cores, open RetroArch from the RetroPie system in Emulationstation, make your changes there (it will modify the global RetroArch config file) and use Save Configuration to save those changes. More details about the configuration structure used by RetroArch in RetroPie can be found here.