Can't exit games using X-Arcade controller
-
@BuZz hmm I went into the configuration, stopped the service, and removed it then rebooted my pi. I can get the configuration file tonight.
-
@BuZz if start and select on the xarcade output tab, can't I just edit the configuration file to quit the emulator when tab is pressed?
-
you can set tab as the exit button, but you would need to disable the hotkey enable button also. You will have problems on some libretro cores with that though as I think some use tab for the mame menu.
I would follow that youtube view and set it up as described. Or this one - https://github.com/scottnath/retropie-with-dual-x-arcades
-
I re flashed retropie, and stayed away from the drivers this time. Got it all setup like it should be as a keyboard (what i tried to do lastnight for hours worked right the first time). Sorry I was so annoying buzz! It would be nice though to get the drivers fixed so we can use our sticks as axis's instead of key presses.
-
@Jerkamie i will look at he driver code at some point. Glad you gave it working
-
I assume this is fixed as I downloaded 4.0 back at the end of August and used the drivers and I can exit just fine in libcores. I only ran into a problem with Mame4all initially where it didn't like the select and start buttons I was using but just a quick button change in the Xarcade-to-GamepadDevice.cfg file fixed that. I've switched to all libretro cores now and I use the drivers flawlessly.
-
I use my Tankstick with RetroPie 4.0 and the xarcade2Jstick driver flawlessly since day one. I never really understood (and still don't) the issue people are having with the select + start thing... but I think that's some issue with mame4all. I use all libretro emulators and they all work perfectly. I think the only thing i changed was the hotkey from the select/insert coin button to one of the extra 2 buttons under player 1.
But now that I've been building my own units and gotten more advanced, I've found a real issue. It's not so much with Xarcade2Jstick, but more with the limitations of retroarch and hotkey buttons. Basically, I was trying to set the following
p1: 8 buttons
p2: 8 buttons
admin: 4 buttons - dedicated Exit/Reset/Save/LoadBut I found that RetroArch doesn't support dedicated joystick buttons for admin (which is beyond ridiculous)
So I would have to do Hotkey/Exit/Save/Load and put the reset button in the player buttons somewhere.
But that also means 2 buttons from P1 and 2 buttons from P2. But you can't use p2 buttons as hotkeys and you can't cross the gap with a hotkey button P1 and the Save button on P2.So my only solution for both issues now is to rip out all the xarcade2jstick stuff and leave it as default keyboard emulation. Won't be fun but hopefully I can get it all working.
-
But driver uninstall doesn't seem to work. disabled the service from retropie configuration and uninstalled. Rebooted 4 times now. But each time i come back into ES, it sees it as an "Xarcade-to-gamepad" device. Going to try a fresh install of RetroPie 4.1
-
Ok fresh install and now my TS is now seen as a keyboard correctly
So I'm working on becoming an expert here with the Xarcade with/without driver scenarios here. I'll reference it as the "TankStick" or "TS" for name sake, but I'm actually just using Xarcades encoder boards in my own arcade cabs that I sell on etsy.With Driver
Pros:- TS is seen as a gamepad by emulation station instead of a keyboard
- TS Player1 and Player2 controls can be assigned separately through emulation station
- After initial setup in ES, all libretro emulated games worked perfectly
Cons:
- Player2 controllers cannot be used with hotkeys in RetroArch (this is a retroarch limitation, likely with all gamepad devices, not just TS). Makes 2 buttons pretty useless on P2
- Seems the Select+Start combo causes some issues on some emulators. I simply changed the hotkey enable button to button 7, under player1 controls, instead of the left flipper and it's fine. I believe this was the issue @Jerkamie was seeing above. Simple fix.
- Player 1 Left Paddle and Player 2 Right Paddle wouldn't work together for single player pinball games. So you would need to rewire it so that both side buttons were from the Joy 1 wiring harness. This is only something you'd see when wiring your own.
- Limited to a single 2 player tankstick. If you want to follow guide for dual tanksticks (4 players), you can't use the driver. At least not for all 4. You could in theory use the driver for the first 2 players and the keyboard mapping for the other 2 players.
Without Driver
Pros:- TS is seen as a keyboard and the default is already mapped some certain keys. You can also change these if necessary
- TS Player1 and Player2 controls can be assigned separately through emulation station
- RetroArch seems to allow dedicated exit buttons (without hotkey) to be assigned to keyboards, but not to gamepads, so you can have a dedicated exit button (at least). Not sure yet about dedicated save/load/reset/menu buttons but I'll find out as that is what I'm attempting to have.
Cons:
- Emulation Station only supports one keyboard device, so now you need to be sure to sync up your real keyboard and TS buttons to work together
- Since Emulation Station only supports one keyboard, that means it only allows you to configure one player within the controls. So the only way to add Player2 controls to Retroarch is by manually editing the file to add them.
I've just started using the TS as a keyboard because I found out the limitations of the driver the hard way after cutting the holes in my next unit.
--------------------------------------------------------- || E R 1 2 S L || || || || || || O L X Y O L X Y || || | R B A | R B A || || || || || ---------------------------------------------------------- ---------------------------------------------------------- || C C || ---------------------------------------------------------- E - Exit S - Save State R - Reset Game L - Load State C - Coin/Select (on front panel)
The idea was that "E" and "R" would be the 2 extra buttons from Player 1's side and "S" and "L" would be the 2 extra buttons from Player 2's side and I would disable the hotkey and just have dedicated buttons. But apparently this can't be done for the multiple reasons mentioned above.
So holes drilled already, my fallback was to change the Exit button to the Hotkey button and the reset button to the Exit button, requiring the hotkey to be held for Exit, Save, and Load. But due to the other issue with P2 controls not being allowed as hotkey buttons, I have to go with the TS as a keyboard option and hope for the best.
-
@dsstrainer This is awesome info. Thanks for taking the time to post it. I'm excited to hear how it all turns out for you.
-
So I got the tankstick working as a keyboard fully now with 2 players and YES YOU CAN have dedicated hotkey buttons for Exit, Reset, Save, Load, etc when used this way. That seemed to be that question that nobody could answer properly. Some people said set the hotkey and the exit button to the same key, some people just wanted to know how to change which key was the hotkey shift, some said set it to nul but the button assignments didn't work. But I have finally proven to myself that you CAN have a dedicated buttons when your joystick emulates a keyboard. So that's a load off my mind.
The next thing is how to handle when you have a keyboard AND the tankstick which looks like a keyboard installed. Yes they both work, but since the tankstick default use things like num keys and brackets for controls, it made it a bit trickey to use a keyboard within Emulation station.
And further more in system menus like the RetroPie setup, you still need an Enter key which wasn't mapped.
Luckily though you can change the mode of these to change key mapping. So I worked on what should be a more functional mapping last night. I haven't programmed it yet (waiting for usb to ps/2 adapter for keyboard) but this should hopefully fix the need for the enter button and make ES navigation with keyboard (when necessary) much easier.This will give me the normal control buttons like Enter and arrow keys. I might change the backtick to esc if allowed and maybe the End to Space. This will then also give me more usable key commands in system menus for selection and basic modification.
The goal here is that these units are for customers and they will only have a joypanel to control their system. So I will remove things some menus and such so that they cannot screw up their system, but when I want to help and connect a keyboard to get additional features, I need those features to be accessible and intuitive to me. I don't want to have to hit the semi-colon key to scroll down, etc.
So I'll post back after I make the key send changes. But so far, so good.
-
So it looks like the new versions of the Tankstick and xarcade encode boards use a diff default layout now which is better, but wasn't perfect. Luckily you can reprogram it so I think I am pretty close to perfect. ES was designed around an NES gamepad but since I'm using an arcade, the concept of "start" and "a/b" don't really apply, so I needed to setup more intuitive keys, and they had to work across all 3 environments: ES, Retroarch, System Level menus (RetroPie Setup)
Requirements:
Joy panel needs to work in 3 places- System level
u/d/l/r, Enter, Esc, Space for menu select - Emulation Station
u/d/l/r, Enter (A), Esc (B), Tab (Start), Ctrl (Select) - Retroarch
u/d/l/r, Enter (P1 start), Esc (Exit), 18 other buttons and P2 u/d/l/r can be arbitrary
So I reprogrammed the encoder to send the primary control keys needed for System level: Enter, Esc, Tab, Ctrl, Space, u/d/l/r as my base for P1. I've mapped the P1 start button to "Enter" key and in ES mapped it to the "A" button because I wanted to keep it common across all 3 that P1 start button "starts/enters/goes" and the Esc button will "exit/go back" in all systems. The ES "start" menu is now mapped to tab which is more of a menu key and also the reset button within retroarch.
When you save the ES config though, it will try to apply those settings to retroarch, but the "A" button then would be the P1 start so that wasn't going to work, so I manually edited the main retroarch.cfg file to make more sense for that alone.
Now I have everything working perfectly across the 3 environments with intuitive controls.
- System level
-
What changes did you make and where? I have it working fine besides mame4all. For some reason it binds to the right stick for player 1 and I can't exit games without a reboot.
-
Old topic, but for those interested here is a working, easy to set up solution :
1 - Install xarcade2jstick as instructed here : https://github.com/petrockblog/Xarcade2Jstick
2 - Configure keys as you'd like em. Use the side buttons of the X-Arcade for "select" (if you'd like)
3 - Now comes the magic trick : Modify the "/opt/retropie/configs/all/retroarch-joypads/Xarcade-to-Gamepad Device 1.cfg" config file so that it does NOT use the side button. I used the "LB" button... diagram so you know what button i'm talking about : http://www.xgameroom.com/service/images/Layouts/Printable/Xbox_360_Button_Layout.jpg
4 - Reboot your pi (not sure if needed)
5 - Once in in an emulator you can now press "LB button" + "player 1 start" to exit emulators.Credits : LumenBrite's youtube video named "RetroPie + X-Arcade setup"
Hope this helps. Enjoy!
For reference, here is my /opt/retropie/configs/all/retroarch-joypads/Xarcade-to-Gamepad Device 1.cfg, with the modified line in BOLD :
input_device = "Xarcade-to-Gamepad Device 1"
input_driver = "udev"
input_l_btn = "2"
input_load_state_btn = "2"
input_start_btn = "9"
input_exit_emulator_btn = "9"
input_up_axis = "-1"
input_a_btn = "4"
input_b_btn = "3"
input_reset_btn = "3"
input_down_axis = "+1"
input_r_btn = "5"
input_save_state_btn = "5"
input_r2_btn = "7"
input_right_axis = "+0"
input_state_slot_increase_axis = "+0"
input_x_btn = "1"
input_menu_toggle_btn = "1"
input_select_btn = "8"
input_enable_hotkey_btn = "6"
input_y_btn = "0"
input_left_axis = "-0"
input_state_slot_decrease_axis = "-0"
input_l2_btn = "6"And heck, I'm feeling generous, here's the second controller config file in case you need it : /opt/retropie/configs/all/retroarch-joypads/Xarcade-to-Gamepad Device 2.cfg. I did not modify anything in this one.
input_device = "Xarcade-to-Gamepad Device 2"
input_driver = "udev"
input_l_btn = "2"
input_load_state_btn = "2"
input_start_btn = "9"
input_exit_emulator_btn = "9"
input_up_axis = "-1"
input_a_btn = "4"
input_b_btn = "3"
input_reset_btn = "3"
input_down_axis = "+1"
input_r_btn = "5"
input_save_state_btn = "5"
input_r2_btn = "7"
input_right_axis = "+0"
input_state_slot_increase_axis = "+0"
input_x_btn = "1"
input_menu_toggle_btn = "1"
input_select_btn = "8"
input_enable_hotkey_btn = "8"
input_y_btn = "0"
input_left_axis = "-0"
input_state_slot_decrease_axis = "-0"
input_l2_btn = "6" -
There's a fix for this now: https://support.xgaming.com/support/solutions/articles/5000554993
-
Thanks JeremyXgaming, however I'd be careful using that fix.
If the Xarcade2Jstick driver gets an update and X-Gaming don't update their patched main.c source code in a timely fashion, doing that fix might break the driver, or make it fail to compile.
In other terms, approach with caution.
Cheers!
-
@mazterbaker Neither would be the case actually. The source would be downloaded overwriting ours before recompiling.
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.