The old multiple controller problem! Multiple Controller devices are equal on my Arcade cabinet.
-
Hi everyone,
I've been doing quite a bit of digging around, but don't seem to be able to find a clear answer to my problem.
I have build a cocktail arcade cabinet, with 4 controllers. The controller boards recognise as
DragonRise Inc. Generic USB Joystick
.Due to being an arcade cab, 2 of the controllers are orientated differently. On a game-by-game scenario, i resolve this with some custom control settings in a game-specfic retroarch config.
For example, in
1941
one of the players is sitting the wrong way up, plus i am using the 'vertical' controllers, which are connected as input numbers '2' and '3' - so i fix the problem like this:input_player2_joypad_index = "3" input_player2_left_axis = "+0" input_player2_right_axis = "-0" input_player2_up_axis = "+1" input_player2_down_axis = "-1"
The boards always connect in the same 'order' , so this works fine. I can even created strangely orientated controls for top-down games like Gauntlet, and this is all good.
However, my problem comes with Emulation Station and navigation of the menu. I want to orientate the AXIS so that they match the movement of the option on screen. i.e. left/right movements will actually operation as 'up/down' etc , and be inverted on the opposite site.
I've found some similar related topics such as:
https://retropie.org.uk/forum/topic/6264/you-have-to-use-identical-controllers-for-multiplayer-games-please-prove-me-wrong
and
https://retropie.org.uk/forum/topic/2287/8bitdo-multiple-controllers-and-retroarch-cfg
and
https://www.raspberrypi.org/forums/viewtopic.php?t=126590However, it seems the GUID of all the devices is the same:
pi@retropie:~ $ ./sdl2-joystick 03000000790000000600000010010000 "DragonRise Inc. Generic USB Joystick " axes:5 buttons:12 hats:1 balls:0 03000000790000000600000010010000 "DragonRise Inc. Generic USB Joystick " axes:5 buttons:12 hats:1 balls:0 03000000790000000600000010010000 "DragonRise Inc. Generic USB Joystick " axes:5 buttons:12 hats:1 balls:0 03000000790000000600000010010000 "DragonRise Inc. Generic USB Joystick " axes:5 buttons:12 hats:1 balls:0
Which means i dont seem to be able to make the right modifications in
es_input.cfg
By the same token, the
input_vendor_id
andinput_product_id
appear the same:pi@retropie:~ $ sudo lsusb Bus 001 Device 010: ID 1ea7:0002 Bus 001 Device 009: ID 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. Hub Bus 001 Device 008: ID 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad Bus 001 Device 007: ID 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad Bus 001 Device 006: ID 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad Bus 001 Device 004: ID 05e3:0608 Genesys Logic, Inc. Hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
So... in short - is there any way i can make an adjustment to
es_input.cfg
or an EmulationStation specificretroarch.cfg
which identifies purely by the index number (likeinput_player2_joypad_index = "3"
) and does not adversely affect the setup for everything else?All comments welcome!
-
Just a guess that there is no solution to this issue then?
-
@horaceandspider I've got an arcade cabinet using 4 Sanwa-style arcade joysticks that are recognised as Dragonrise. The only way I've been able to address this problem of differentiating between joysticks is to use meleu's joystick configurator together with Attract Mode (which allows very easy programming of joystick controls "outside" the game environment) and xboxdrv (for in game control).
Basically,
xboxdrv
"ties" each joystick button/movement to keyboard inputs which have been set in Retroarch and also set in each non-Retroarch emulator (the key being that almost every emulator allows keyboard input). I then invokexboxdrv
viaruncommand-onstart
to start up the specificxboxdrv
joystick configuration for that particular emulator.xboxdrv
can even be used on a per-game basis, so it is very flexible.This works very well and basically bypasses the problem of differentiating between each joystick as the effect is that you are "using the keyboard" when moving the joystick or pressing a joystick button, whichever joystick it might be.
However, I suspect it might prove to be quite a bit of work for you to set this up on an established system that is already devoted to emulationstation. You could achieve the same using emulationstation, leaving Attract Mode to one side, but I shifted over to Attract Mode about 2 years ago. Mediamogul is the guru on
xboxdrv
.
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.