Generic USB Arcade Controls with SNES + PSX?
I've done a bit of searching and reading, but so far I haven't been able to figure out how to get my (generic USB) arcade controllers to control SNES or PSX games in my bartop arcade machine. The controls work great for MAME and I was able to configure XBOXDRV to allow the controllers to act as a keyboard for Daphne, but I'm not sure what to do with SNES or PSX. In both cases, it is as if the joystick is not "seen" at all. If I go into RGUI, I can see that the USB controller is recognized, but I'm guessing something needs to be done configuration wise. All my navigation within RGUI has to be done via keyboard.
I have a generic Dragonrise USB controller with a digital arcade joystick (off of Amazon) and 10 arcade buttons. Is it possible to use that with SNES and PSX at all? Even if it is possible, I'm not sure how well the games will play with a digital joystick, but I'd love to get it going and find out.
Alternatively, I have a Logitech F710 controller connected as well, which I could use... but not sure how to get SNES and PSX to use that controller instead of the arcade controls?
Thanks for any tips or pointers.
In both cases, it is as if the joystick is not "seen" at all. If I go into RGUI, I can see that the USB controller is recognized, but I'm guessing something needs to be done configuration wise. All my navigation within RGUI has to be done via keyboard.
Is the gamepad is configured for RetroArch ? When you configure your gamepad in EmulationStation, it should generate an configuration file for RetroArch, so the gamepad is recognized and configured when you start a libretro core. When you start RetroArch (through the
psxemulator cores), do you get a message that the controller is not-configured ?
Add more info about your system, as detailed in https://retropie.org.uk/forum/topic/3/read-this-first.
Thanks for responding. I will pull together the relevant information tonight.
csetera last edited by csetera
@mitu I do see that both controllers are configured when starting a game. The read-this-first information:
Pi Model or other hardware: Pi 4B - 4G RAN
Power Supply used: Vilros Raspberry Pi 4 Compatible Power Supply with on/off switch
RetroPie Version Used 4.6.1 - Latest updates
Built From: Retropie Image for 4.6.0 (before initial release)
USB Devices connected:
- 046d:c21f Logitech, Inc. F710 Wireless Gamepad [XInput Mode]
- 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad
Controller used: Attempting to use Arcade controls attached to DragonRise adapter
Error messages received: N/A
Log found in /dev/shm/runcommand.log (if relevant): https://pastebin.com/8YfWzkPn
Guide used: N/A
Emulator: lr-pcsx_rearmed & lr-snes9x2010
Attachment of config files: N/A - Specific configuration files available as it makes sense
How to replicate the problem: Attempt to run emulated game with arcade controllers
I see the gamepad(s) are detected
[WARN] [udev]: Couldn't open any keyboard, mouse or touchpad. Are permissions set correctly for /dev/input/event*? [INFO] [udev]: Plugged pad: DragonRise Inc. Generic USB Joystick (121:6) on port #0. [INFO] [udev]: Pad #0 (/dev/input/event0) supports 0 force feedback effects. [INFO] [udev]: Plugged pad: Logitech Gamepad F710 (1133:49695) on port #1. [INFO] [udev]: Pad #1 (/dev/input/event1) supports force feedback. [INFO] [udev]: Pad #1 (/dev/input/event1) supports 16 force feedback effects.
but I don't see loading of any auto-configuration profile for them.
When you configure the gamepad in EmulationStation, a RetroArch auto-configuration profile is created for it in
\\retropie\configs\all\retroarch-joypads. Can you check to see if you have those entries there ?
Here's what I'm seeing:
pi@retropie:/opt/retropie/configs/all/retroarch-joypads $ ls 'DragonRise Inc. Generic USB Joystick .cfg' 'Logitech Gamepad F710.cfg' 'DragonRise Inc. Generic USB Joystick .cfg.bak' 'Logitech Gamepad F710.cfg.bak' pi@retropie:/opt/retropie/configs/all/retroarch-joypads $ cat DragonRise\ Inc.\ \ \ Generic\ \ \ USB\ \ Joystick\ \ .cfg input_device = "DragonRise Inc. Generic USB Joystick " input_driver = "udev" input_enable_hotkey_btn = "6" input_l_btn = "2" input_load_state_btn = "2" input_select_btn = "6" input_r2_btn = "9" input_l_y_plus_axis = "+1" input_l_x_plus_axis = "+0" input_l2_btn = "8" input_l_x_minus_axis = "-0" input_r_btn = "5" input_save_state_btn = "5" input_l_y_minus_axis = "-1" input_y_btn = "1" input_x_btn = "0" input_menu_toggle_btn = "0" input_start_btn = "7" input_exit_emulator_btn = "7" input_b_btn = "4" input_reset_btn = "4" input_a_btn = "3"
Here's what I'm seeing: [..]
This looks ok - if you have the
DragonRise ..controller as P1 - you can check in the RGUI - then it should work.
If you wish to use another controller as P1, you'll have to go into the RGUI and change the controls and choose in the
Port 1 Bindsthe Logitech Gamepad as the device, then save the a remap file for the core (so all games for this system would use the Logitech as P1).
@mitu What I'm seeing is that the buttons on the Dragonrise are properly recognized, but the joystick is not. Is it possible to use a digital joystick with SNES and PSX emulators or will that not work? I could switch to the Logitech device for those emulators per your suggestion, but would prefer to be able to use the arcade joystick if possible.
Have you tried setting the Analog to Digital Type for the P1 controls ?
@mitu Does that work for Digital -> Analog? I saw that option, but it looked like it was the reverse of what I needed.
@csetera No, it's actually exactly what you're trying to do - map an Analog controller to the RetroPad's D-Pad.
@mitu Is there a configuration key/value that I can set in
to set that value properly? Does setting the value in RGUI set it at the emulator level or the game level?
@csetera As said before - you can change the settings from the RGUI, then save a core or game remap from the RGUI. This will save the
.rmpconfiguration file to the configuration folder of the system you're configuring.
The configuration option is named
input_player1_analog_dpad_mode(for P1), if you wish to add it to the
retroarch.cfg, you can add a line with
I must be doing something wrong, but not sure what it would be. I updated the retroarch.cfg:
pi@retropie:~ $ cat /opt/retropie/configs/snes/retroarch.cfg # Settings made here will only override settings in the global retroarch.cfg if placed above the #include line input_player1_analog_dpad_mode=1 input_remapping_directory = "/opt/retropie/configs/snes/" #include "/opt/retropie/configs/all/retroarch.cfg"
Unfortunately, the joystick still didn't want to work. I see that config being read in the runcommand.log (pasted here: https://pastebin.com/B1Fj3kM5)
Thanks again for helping me out with this. I'm sure I'm missing something stupid.
It depends on how you mapped your joystick. Can you post your controller
Do you have any game/core overrides present ? Have you tried changing the option from the RGUI ?
I'm not sure what I was doing wrong the first time I tried, but I was just able to get this working via RGUI for a PSX game. Do changes in one game via RGUI apply to all games for that core or does it need to be done for every game individually? Where do the values set in RGUI get stored?
I just began the disassembly of my bartop build (long story), so I won't be able to do much with this until I get it put back together again. I really appreciate all of your help!
Do changes in one game via RGUI apply to all games for that core or does it need to be done for every game individually?
Changes in the RGUI don't save by default, you'll need to save them somehow. In your case, as I said before, save a Core/Game remap and the configuration will be applied accordingly.
Where do the values set in RGUI get stored?
Remaps are saved in
@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.