Both joysticks controlling both players in P2 game
-
Pi Model or other hardware: 3B+
Power Supply used: (If using a Pi)
RetroPie Version Used (eg 3.6, 3.8.1, 4.1 - do not write latest): 4.4
Built From: Pre made SD Image on RetroPie website
USB Devices connected: Controller
Controller used: Xinmotek controller (2 joysticks + 6 buttons each)
Error messages received:
Log found in /dev/shm/runcommand.log (if relevant):
Guide used: (Mention if you followed a guide)
File: (File with issue - with FULL path)
Emulator: lr/fbalpha
Attachment of config files: (PLEASE USE PASTEBIN.COM FOR LARGE LOGS)Hi
I have a strange problem whereby in 2 player games (specifically 1943), both joysticks control the movement of both players. They are effectively linked on the screen. P1 fire buttons fire from P1 plane and P2 from P2 - it is just the joysticks that are the issue.
I have mapped the binds in Retroarch and have set up the controller settings in Retropie (although I am concerned that I didn't do something correctly here as it only gave me a player 1 option).
Any advice as to how to correct this?
Thank you
Peter.
-
@herts101 How is your controller detected in Emulationstation - in the Input Configuration - is it 1 controller or 2 controllers ?
There's a tidbit of info about Xin-Mo 2P controller in the docs, though it doesn't seem to apply in your case since your buttons are separately detected.
You can use thejstest
program to check that it's not a wiring/hardware problem: runjstest /dev/input/js0
andjstest /dev/input/js1
and see if the P1 joystick moves appear when testing the P2 controls. More details here. -
@mitu said in Both joysticks controlling both players in P2 game:
Input Configuration
Thank you. I've done a bit of testing as you suggested.
The controller is detected in Emulationstation as Gamepad 1. There is only the option to enter controls for one of the joystick/button combos as far as I can see.
I've tried jstest as you suggested and got different numbers for the buttons, but both joysticks changed the 0 and 1 numbers.
I'm sure this isn't a wiring issue as the joypad still works effectively with a previous pi as 2 seperate joysticks. I'm just upgrading the pi to a new fresh install on a fresh pi which has caused the problems.
Any other ideas?
Thank you again
-
Maybe worth saying that my controller.cfg file just seems to refer to 1 input as below.
input_device = "xin-mo.com Xinmotek Controller"
input_driver = "udev"
input_l_btn = "4"
input_load_state_btn = "4"
input_start_btn = "8"
input_exit_emulator_btn = "8"
input_down_axis = "+1"
input_r_btn = "5"
input_save_state_btn = "5"
input_right_axis = "+0"
input_state_slot_increase_axis = "+0"
input_select_btn = "9"
input_left_axis = "-0"
input_state_slot_decrease_axis = "-0"
input_up_axis = "-1"
input_a_btn = "0"
input_b_btn = "1"
input_reset_btn = "1"
input_enable_hotkey_btn = "8"
input_x_btn = "2"
input_menu_toggle_btn = "2"
input_y_btn = "3" -
Solved it! The issue was with getting the Xin-Mo board to be detected as 2 gamepads. Thanks for the link on your reply @mitu
I got a lot of help from this link also https://blog.petrockblock.com/forums/topic/how-to-get-xin-mo-dual-arcade-working-with-retropie-easy-guide/page/2/, but please be wary that it is old and the changing of the kernel is not required for a Pi 3. It will brick the pi.
The process I used was as follows:
Exit emulationstation (F4)
Type lsusb to show the usbhid of your Xin-Mo controller. Note the usbhid of your controller. Mine was 0x16c0:0x05e1:0x040
Type sudo nano /boot/cmdline.txt
Move to the end of the line, press space, then add usbhid.quirks=0x16c0:0x05e1:0x040. If your usbhid is different then use your reference. Do not press enter or move to 2 lines in any way.
Save the cmdline.txt file
If you have already tried to configure a gamepad, then delete these files using sudo rm /home/pi/.emulationstation/es_input.cfg
Type: rebootThen, when emulationstation starts again you will first be able to configure gamepad 1 (pressing one of the P1 buttons), and then go back in and configure P2 by pressing one of the P2 buttons.
Finally, you'll need to configure in retroarch. I had already done this so thought it was fine but the Select and Start P2 buttons didn't work. The solution was to reconfigure User 2 in retroarch, noting that there are now 2 Xin-Mo options under Device Index and User 2 needs to use the second one of these.
-
@herts101 said in Both joysticks controlling both players in P2 game:
I got a lot of help from this link also https://blog.petrockblock.com/forums/topic/how-to-get-xin-mo-dual-arcade-working-with-retropie-easy-guide/page/2/, but please be wary that it is old and the changing of the kernel is not required for a Pi 3. It will brick the pi.
That link is the source material for the page in the Docs that I mentioned, only the configuration (i.e. adding the
usbquirks
module option) is required with the current release. Glad you got it working. -
@mitu Thank you. Only remaining issue I can see is that the L1 and L2 buttons no longer page down the rom lists.
Is there something else I need to do to update the config for this to work?
Thank you so much for the help.
-
@herts101 Restart Emulationstation, should work.
-
I’ve restarted and still no luck. Any other ideas?
Thank you.
-
@herts101 I don't have any other ideas, I noticed that after first configuring the gamepad the L/R triggers don't work, but they work after ES restarts. Can you paste the output of the
~/.emulationstation/es_input.cfg
file ? This is where Emulationstation stores the mapping for gamepads. -
Thank you. File shows the following:
<?xml version="1.0"?>
<inputList>
<inputConfig type="joystick" deviceName="xin-mo.com Xinmotek Controller" deviceGUID="03000000c0160000e105000010010000">
<input name="a" type="button" id="0" value="1" />
<input name="b" type="button" id="1" value="1" />
<input name="down" type="axis" id="1" value="1" />
<input name="hotkeyenable" type="button" id="8" value="1" />
<input name="left" type="axis" id="0" value="-1" />
<input name="leftshoulder" type="button" id="4" value="1" />
<input name="right" type="axis" id="0" value="1" />
<input name="rightshoulder" type="button" id="5" value="1" />
<input name="select" type="button" id="8" value="1" />
<input name="start" type="button" id="9" value="1" />
<input name="up" type="axis" id="1" value="-1" />
<input name="x" type="button" id="2" value="1" />
<input name="y" type="button" id="3" value="1" />
</inputConfig>
</inputList> -
@herts101 Hm, this looks a bit different than the one I have. Try replacing
leftshoulder
withpageup
andrightshoulder
withpagedown
in the file.
My configuration file looks like this (it's a SNES type gamepad) and has the pageup/pagedown functionality using the shoulder buttons.<inputConfig type="joystick" deviceName="USB,2-axis 8-button gamepad " deviceGUID="03000000830500006020000010010000"> <input name="pageup" type="button" id="4" value="1"/> <input name="start" type="button" id="7" value="1"/> <input name="down" type="axis" id="1" value="1"/> <input name="pagedown" type="button" id="5" value="1"/> <input name="right" type="axis" id="0" value="1"/> <input name="select" type="button" id="6" value="1"/> <input name="left" type="axis" id="0" value="-1"/> <input name="up" type="axis" id="1" value="-1"/> <input name="a" type="button" id="0" value="1"/> <input name="b" type="button" id="1" value="1"/> <input name="x" type="button" id="2" value="1"/> <input name="y" type="button" id="3" value="1"/> </inputConfig>
-
Brilliant. Words perfectly. Thank you once again.
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.