Guide: Advanced Controller Mappings
-
Definitely keep the previous fix, but also try wrapping the path to xboxdrv in double quotations:
8way1='sudo "/opt/retropie/supplementary/xboxdrv/bin/xboxdrv" --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick --silent --detach-kernel-driver --deadzone=4000 --deadzone-trigger 15% --force-feedback --mimic-xpad --trigger-as-button --device-name "Arcade_Joystick_Player_1_-_8_way_xboxdrv" --evdev-absmap ABS_X=x1,ABS_Y=y1 --evdev-keymap BTN_TRIGGER=x,BTN_THUMB=y,BTN_THUMB2=a,BTN_PINKIE=b,BTN_BASE3=back,BTN_BASE6=start --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void &'
-
@mediamogul Hi mediamogul. Same response, I'm afraid:
/opt/retropie/configs/all/runcommand-onstart.sh: line 29: 8way1=sudo "/opt/retropie/supplementary/xboxdrv/bin/xboxdrv" --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick --silent --detach-kernel-driver --deadzone=4000 --deadzone-trigger 15% --force-feedback --mimic-xpad --trigger-as-button --device-name "Arcade_Joystick_Player_1_-_8_way_xboxdrv" --evdev-absmap ABS_X=x1,ABS_Y=y1 --evdev-keymap BTN_TRIGGER=x,BTN_THUMB=y,BTN_THUMB2=a,BTN_PINKIE=b,BTN_BASE3=back,BTN_BASE6=start --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void &: No such file or directory /opt/retropie/configs/all/runcommand-onstart.sh: line 31: 4way1=sudo "/opt/retropie/supplementary/xboxdrv/bin/xboxdrv" --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick --silent --detach-kernel-driver --deadzone=4000 --deadzone-trigger 15% --force-feedback --mimic-xpad --trigger-as-button --device-name "Arcade_Joystick_Player_1_-_4_way_restricted_xboxdrv" --four-way-restrictor --evdev-absmap ABS_X=x1,ABS_Y=y1 --evdev-keymap BTN_TRIGGER=x,BTN_THUMB=y,BTN_THUMB2=a,BTN_PINKIE=b,BTN_BASE3=back,BTN_BASE6=start --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void &: No such file or directory /opt/retropie/configs/all/runcommand-onstart.sh: line 33: 8way2=sudo "/opt/retropie/supplementary/xboxdrv/bin/xboxdrv" --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.1:1.0-event-joystick --silent --detach-kernel-driver --deadzone=4000 --deadzone-trigger 15% --force-feedback --mimic-xpad --trigger-as-button --device-name "Arcade_Joystick_Player_2_-_8_way_xboxdrv" --evdev-absmap ABS_X=x1,ABS_Y=y1 --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void &: No such file or directory /opt/retropie/configs/all/runcommand-onstart.sh: line 35: 4way2=sudo "/opt/retropie/supplementary/xboxdrv/bin/xboxdrv" --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.1:1.0-event-joystick --silent --detach-kernel-driver --deadzone=4000 --deadzone-trigger 15% --force-feedback --mimic-xpad --trigger-as-button --device-name "Arcade_Joystick_Player_2_-_4_way_restricted_xboxdrv" --evdev-absmap ABS_X=x1,ABS_Y=y1 --four-way-restrictor --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void &: No such file or directory /opt/retropie/configs/all/runcommand-onstart.sh: line 37: 8way3=sudo "/opt/retropie/supplementary/xboxdrv/bin/xboxdrv" --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.2:1.0-event-joystick --silent --detach-kernel-driver --deadzone=4000 --deadzone-trigger 15% --force-feedback --mimic-xpad --trigger-as-button --device-name "Arcade_Joystick_Player_3_-_8_way_xboxdrv" --evdev-absmap ABS_X=x1,ABS_Y=y1 --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void &: No such file or directory /opt/retropie/configs/all/runcommand-onstart.sh: line 39: 4way3=sudo "/opt/retropie/supplementary/xboxdrv/bin/xboxdrv" --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.2:1.0-event-joystick --silent --detach-kernel-driver --deadzone=4000 --deadzone-trigger 15% --force-feedback --mimic-xpad --trigger-as-button --device-name "Arcade_Joystick_Player_3_-_4_way_restricted_xboxdrv" --evdev-absmap ABS_X=x1,ABS_Y=y1 --four-way-restrictor --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void &: No such file or directory /opt/retropie/configs/all/runcommand-onstart.sh: line 41: 8way4=sudo "/opt/retropie/supplementary/xboxdrv/bin/xboxdrv" --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.4:1.0-event-joystick --silent --detach-kernel-driver --deadzone=4000 --deadzone-trigger 15% --force-feedback --mimic-xpad --trigger-as-button --device-name "Arcade_Joystick_Player_4_-_8_way_xboxdrv" --evdev-absmap ABS_X=x1,ABS_Y=y1 --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void &: No such file or directory /opt/retropie/configs/all/runcommand-onstart.sh: line 43: 4way4=sudo "/opt/retropie/supplementary/xboxdrv/bin/xboxdrv" --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.4:1.0-event-joystick --silent --detach-kernel-driver --deadzone=4000 --deadzone-trigger 15% --force-feedback --mimic-xpad --trigger-as-button --device-name "Arcade_Joystick_Player_4_-_4_way_restricted_xboxdrv" --four-way-restrictor --evdev-absmap ABS_X=x1,ABS_Y=y1 --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void &: No such file or directory Parameters: Executing: /opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-mame2003/mame2003_libretro.so --config /opt/retropie/configs/mame-libretro/retroarch.cfg "/home/pi/RetroPie/roms/arcade-vertical/amidar.zip" --appendconfig /dev/shm/retroarch.cfg'|'"/home/pi/RetroPie/roms/arcade-vertical/amidar.zip.cfg" xboxdrv: no process found
Just for good measure, I tried on the commandline too and it does work from there.
-
-
@mediamogul Hi. Thanks. No problem. I'll have another go with @madhorse technique. I'm just wondering though if that technique is going to work with multiple controllers, but will give it a go.
-
@spud11 said in Guide: Advanced Controller Mappings:
I'm just wondering though if that technique is going to work with multiple controllers, but will give it a go.
What you're looking to do is entirely possible, but it's also a very tailored use case scenario. I have a feeling you'll be dealing with a lot of trial and error no matter what. I'll help as best I can, but it's difficult from the back seat. Plus, my sister keeps kicking me and it smells back here.
-
I am about to try this. I am going to attempt to use a PS4 controller to map a mouse in DosBOX. I have tried Joymap and only got the mouse to move around not capture clicks.
I see that Lakka has default mouse capture, but I prefer retropie by far for customization.
I am hoping this will solve my issue.
-
@dunnieboy said in Guide: Advanced Controller Mappings:
I see that Lakka has default mouse capture, but I prefer retropie by far for customization.
You're better off all around. The standalone DOSBox is just more flexible and has less overhead, allowing some of the more complicated and intensive DOS titles to run on the Pi.
-
@mediamogul awesome ...well ... prepare for an onslaught of pleas for help =)
-
I'll try to answer them as best I can.
-
@mediamogul Ok .. here goes ...
I am going to step through what I did first, and ask questions along the way.
pi@retropie:~ $ cat /proc/bus/input/devices
returned
I: Bus=0003 Vendor=054c Product=09cc Version=0111 N: Name="Sony Interactive Entertainment Wireless Controller" P: Phys=usb-3f980000.usb-1.5/input3 S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.3/0003:054C:09CC.0004/input/input0 U: Uniq= H: Handlers=js0 event0 B: PROP=0 B: EV=1b B: KEY=3fff0000 0 0 0 0 0 0 0 0 0 B: ABS=3003f B: MSC=10 I: Bus=0003 Vendor=046d Product=404d Version=0111 N: Name="Logitech K400 Plus" P: Phys=usb-3f980000.usb-1.4:1 S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.2/0003:046D:C52B.0003/0003:046D:404D.0005/input/input1 U: Uniq= H: Handlers=sysrq kbd leds mouse0 event1 B: PROP=0 B: EV=12001f B: KEY=3007f 0 0 0 0 83ffff 17aff32d bf544446 0 0 ffff0001 130f97 8b17c007 ffff73fa d941dfff febeffdf ffefffff ffffffff fffffffe B: REL=1c3 B: ABS=1 0 B: MSC=10 B: LED=1f
ls /dev/input/by-id
usb-Logitech_USB_Receiver-if02-event-mouse usb-Logitech_USB_Receiver-if02-mouse usb-Sony_Interactive_Entertainment_Wireless_Controller-if03-event-joystick usb-Sony_Interactive_Entertainment_Wireless_Controller-if03-joystick
sudo nano /etc/rc.local
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \ --evdev /dev/input/event0 \ --silent \ --detach-kernel-driver \ --force-feedback \ --deadzone-trigger 15% \ --deadzone 4000 \ --device-name "donotroller" \ --mimic-xpad \ --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_Z=x2,ABS_RZ=y2,ABS_RX=lt,ABS_RY=rt,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \ --evdev-keymap BTN_EAST=a,BTN_C=b,BTN_SOUTH=x,BTN_NORTH=y,BTN_WEST=lb,BTN_Z=rb,BTN_START=tl,BTN_SELECT=tr,BTN_THUMBL=guide,BTN_TL2=back,BTN_TR2=start \ & exit 0
sudo reboot and cat /proc/bus/input/devices
I: Bus=0003 Vendor=054c Product=09cc Version=0111 N: Name="Sony Interactive Entertainment Wireless Controller" P: Phys=usb-3f980000.usb-1.5/input3 S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.3/0003:054C:09CC.0004/input/input0 U: Uniq= H: Handlers=js0 event0 B: PROP=0 B: EV=1b B: KEY=3fff0000 0 0 0 0 0 0 0 0 0 B: ABS=3003f B: MSC=10 I: Bus=0003 Vendor=046d Product=404d Version=0111 N: Name="Logitech K400 Plus" P: Phys=usb-3f980000.usb-1.4:1 S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.2/0003:046D:C52B.0003/0003:046D:404D.0005/input/input1 U: Uniq= H: Handlers=sysrq kbd leds mouse0 event1 B: PROP=0 B: EV=12001f B: KEY=3007f 0 0 0 0 83ffff 17aff32d bf544446 0 0 ffff0001 130f97 8b17c007 ffff73fa d941dfff febeffdf ffefffff ffffffff fffffffe B: REL=1c3 B: ABS=1 0 B: MSC=10 B: LED=1f I: Bus=0003 Vendor=045e Product=028e Version=0110 N: Name="Microsoft X-Box 360 pad" P: Phys= S: Sysfs=/devices/virtual/input/input2 U: Uniq= H: Handlers=js1 event2 B: PROP=0 B: EV=20000b B: KEY=7cdb0000 0 0 0 0 0 0 0 0 0 B: ABS=3003f B: FF=1 3f870000 0 0
I would have thought I would see "donotroller" as a device - what did I do wrong ???
-
Not all controllers have a unique event name. I believe you said you were wanting to map your PS4 controller and it appears to be listed above under the name "Sony Interactive Entertainment Wireless Controller". It's event handler is "event0", so you'll need to use "event0" to move on to the next steps.
-
@mediamogul Ok ... I figured out that it was the
--mimic -xpad \
that was preventing the controller from being renamed. Do I need that line ?I know have ...
I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="donotroller" P: Phys= S: Sysfs=/devices/virtual/input/input2 U: Uniq= H: Handlers=js1 event2 B: PROP=0 B: EV=20000b B: KEY=7cdb0000 0 0 0 0 0 0 0 0 0 B: ABS=3061b B: FF=1 3f870000 0 0
-
Do I need that line ?
You do not. If it's there, it will mimic the naming scheme and button arrangement of an authentic XBox3600 controller. Without it, you're free to create a virtual controller to your own specs.
-
@spud11 Hey Spud, would you mind sharing your list of 4-way games? Or tell me how you were able to figure them out? Was going to add them all to my script :)
-
@mediamogul OMG - Its working - a little chunky (slow) for command and conquer ... but i think that means I just need to adjust my dosbox config. Any suggestions would be appreciated.
One note ... I am adding the code to my fame config files ... I am not sure if this is the most elegant way of handling this ... what do you think .. here is an example.
#!/bin/bash sudo killall >/dev/null xboxdrv sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \ --evdev /dev/input/event0 \ --silent \ --detach-kernel-driver \ --force-feedback \ --deadzone-trigger 15% \ --deadzone 4000 \ --device-name "donotroller" \ --calibration x1=-32767:0:32767,y1=-32767:0:32767,x2=-32767:0:32767,y2=-32767:0:32767 \ --trigger-as-button \ --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_Z=x2,ABS_RZ=y2,ABS_RX=lt,ABS_RY=rt,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \ --evdev-keymap BTN_EAST=a,BTN_C=b,BTN_SOUTH=x,BTN_NORTH=y,BTN_WEST=lb,BTN_Z=rb,BTN_START=tl,BTN_SELECT=tr,BTN_THUMBL=guide,BTN_TL2=back,BTN_TR2=start \ --axismap -Y1=Y1,-Y2=Y2 \ --ui-axismap x1=REL_X:10,y1=REL_Y:10 \ --ui-buttonmap b=BTN_LEFT,a=BTN_RIGHT,start=KEY_F5 \ --ui-buttonmap guide=void,x=void,y=void,lb=void,rb=void,tl=void,tr=void,lt=void,rt=void,back=void \ --ui-axismap x2=void \ -- \ /opt/retropie/emulators/dosbox/bin/dosbox -conf "/home/pi/RetroPie/roms/pc/CC_conf.conf"
-
@Hubz Certainly. I got the list from the website below:
http://www.armchairarcade.com/neo/node/486001 . Ali Baba and 40 Thieves 002 . Alpha Fighter / Head On 003 . Amidar 004 . Anteater 005 . Arm Wrestling 006 . Armored Car 007 . Astro Blaster 008 . Astro Fighter 009 . Astro Invader 010 . Bagman 011 . Balloon Bomber 012 . Barrier 013 . Black Hole 014 . Blasto 015 . Blockade 016 . Burger Time 017 . Car Jamboree 018 . Carnival 019 . Cavelon 020 . Chameleon 021 . Checkman 022 . Chinese Hero 023 . Circus Charlie 024 . Commando 025 . Comotion 026 . Congo Bongo 027 . Cops'n Robbers 028 . Cosmic Guerilla 029 . Cosmos1981 030 . Crash 031 . Crazy Kong (set 1) 032 . Crush Roller 033 . Dazzler 034 . Defend the Terra Attack on the Red UFO (bootleg) 035 . Devil Fish 036 . Diamond Run 037 . Dig Dug 038 . Dig Dug II 039 . Digger 040 . Disco No.1 041 . Do! Run Run (set 1) 042 . Dominos 043 . Dommy 044 . Donkey Kong 045 . Donkey Kong 3 046 . Donkey Kong Junior 047 . Dorodon (set 1) 048 . Dr. Micro 049 . Dragon Buster 050 . Dream Shopper 051 . Elevator Action 052 . Eyes 053 . Faster, Harder, More Challenging Q*bert (prototype) 054 . Fire Trap (US) 055 . Forty-Love 056 . Frogger 057 . Galaga 058 . Galaxian 059 . Galaxy Wars 060 . Gals Panic 061 . Gun Dealer (set 1) 062 . Guzzler 063 . Hard Hat 064 . Head On (2 players) 065 . Head On 2 066 . Heiankyo Alien 067 . Hexa 068 . Hustle 069 . Intrepid 070 . Invader's Revenge 071 . Invinco / Head On 2 072 . Iron Horse 073 . Joust 2 - Survival of the Fittest 074 . Jr. Pac-Man 075 . Jump Coaster 076 . Jumping Jack 077 . Jungler 078 . Karate Champ (US) 079 . Karian Cross (Rev. 1.0) 080 . Kicker 081 . King & Balloon 082 . Kung-Fu Master 083 . Lady Bug 084 . Las Vegas Girl (Girl '94) 085 . Lasso 086 . Levers 087 . Lock'n'Chase 088 . Loco-Motion 089 . Logger 090 . Logic Pro (Japan) 091 . Logic Pro 2 (Japan) 092 . Lunar Rescue 093 . Lupin III 094 . Mahjong Satsujin Jiken (Japan 881017) 095 . Mappy 096 . Marvin's Maze 097 . Meikyu Jima (Japan) 098 . Mikie 099 . Minesweeper 100 . Minky Monkey 101 . Monster Bash 102 . Moon Alien Part 2 103 . Moon Quasar 104 . Mouse Trap (version 5) 105 . Mr. Do! 106 . Mr. Do's Castle 107 . Mr. Do's Wild Ride 108 . Mr. F. Lea 109 . Mr. Goemon (Japan) 110 . Mr. Jong 111 . Mr. TNT 112 . Ms. Pac-Man 113 . Mysterious Stones 114 . NATO Defense 115 . Naughty Boy 116 . Net Wars 117 . New Rally X 118 . Oli-Boo-Chu 119 . Ozma Wars 120 . Pac & Pal 121 . Pac-Man 122 . Pac-Man Plus 123 . Pairs (System Ten) (Japan 890826) 124 . Pengo 125 . Pepper II 126 . Perestroika Girls 127 . Pettan Pyuu (Japan) 128 . Pickin' 129 . Pig Newton (version C) 130 . Pirate Ship HigeMaru 131 . Pisces 132 . Pleiads 133 . Pooyan 134 . Pop Flamer 135 . Popeye (revision D) 136 . Pulsar 137 . Punch-Out!! 138 . Q*bert 139 . Q*bert's Qubes 140 . Qix 141 . Radar Scope 142 . Raiders5 143 . Rally X 144 . Rampage (revision 3) 145 . Reikai Doushi (Japan) 146 . Return of the Invaders 147 . Robby Roto 148 . Roc'n Rope 149 . Rolling Thunder (new version) 150 . Route 16 151 . Route 16 152 . Samurai 153 . Samurai Nihon-ichi 154 . Satan's Hollow 155 . Scrambled Egg 156 . Side Track 157 . Sindbad Mystery 158 . Solar Fox 159 . Son of Phoenix 160 . Space Chaser 161 . Space Invaders 162 . Space Invaders Part II 163 . Space Laser 164 . Space Panic 165 . Space Zap 166 . Spectar (revision 3) 167 . Springer 168 . Stratovox 169 . Streaking 170 . Super Bagman 171 . Super Invader Attack 172 . Super Pac-Man 173 . Super Punch-Out!! 174 . Super Qix 175 . Super Space Invaders '91 176 . SWAT 177 . Tactician (set 1) 178 . Tank Battalion 179 . Tapper (Budweiser) 180 . Targ 181 . Taxi Driver 182 . Telephone Mahjong (Japan 890111) 183 . The Amazing Adventures of Mr. F. Lea 184 . The Electric Yo-Yo 185 . The Electric Yo-Yo (set 1) 186 . The End 187 . The Glob 188 . Thief 189 . Timber 190 . Time Limit 191 . Tomahawk 777 192 . Tower of Druaga 193 . Toypop 194 . Tranquilizer Gun 195 . Triple Punch 196 . Tutankham 197 . Van Van Car 198 . Volfied (World) 199 . VS Gong Fight 200 . Wai Wai Jockey Gate-In! 201 . Warp & Warp 202 . Wiping 203 . Wonder Momo 204 . Yam! Yam!? 205 . Zero Zone 206 . Zig Zag (Galaxian hardware, set 1) 207 . Zoo Keeper (set 1) 208 . Zzyzzyxx
If you manage to create the right code to get them going, please let me know. I'll be working on it myself fairly shortly using the $3 scenario.
-
@spud11 ... That Commando might be the Sega commando, not the Capcom one. Unless memory is playing tricks on me, I'd have a hard time playing the Capcom one with 4 directions only. I never played the Sega one, so that's why I'm guessing it's that one. I may be wrong though.
Also unsure of whether Rolling Thunder wouldn't allow you to turn while crouching, which would suggest that there'd be use in 8-way controls.
Still, great list, will certainly keep it for reference!
-
@mediamogul That made me laugh. By the way, I have got it working up to a point using the @madhorse technique.
The code is below, and a couple of interesting pointers for anyone else who finds themselves stuck and is not sure why:
(a) the issue you alluded to with the --device-name problem definitely is a problem. It really doesn't seem to like any "white space" or "brackets" in the name. Adding underscores instead seems to work;
(b) the start of each line shouldn't start with a number. For example, I've got "amiga1" for the name of my first Amiga joystick. If I had that as "1amiga", it would spit out errors. I think that's why my previous code wasn't working - because I had names like "8way" and "4way" for my joysticks. Starting a line with a number is verboten;
(c) although I had set up a separate folder on the pi for my cocktail (arcade vertical) games, I needed to point to mame-libretro to get it working as I'm using lr-mame2003;
(d) it's possible to get 2 (or more) joysticks working at the same time by using & but you have to remember to refer back to the "basic" joystick configuration each time.
#!/bin/sh ## Uncomment one or all of the following if you need to find some information about the emulator or roms ## Name of the emulator #echo $1 >> /dev/shm/runcommand.log ## Name of the software used for running the emulation #echo $2 >> /dev/shm/runcommand.log ## Name of the rom #echo $3 >> /dev/shm/runcommand.log ##Executed command line #echo $4 >> /dev/shm/runcommand.log ### The FUN begins #Get ROM name striping full path rom="${3##*/}" ### Set variables for your joypad and emulator ### Basic Configurations - Standard controller mappings basic="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \ --silent \ --detach-kernel-driver \ --deadzone=4000 \ --deadzone-trigger 15% \ --force-feedback \ --mimic-xpad \ --trigger-as-button \ --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void" ### Extended Configurations ### Specific emulator configurations or any other parameters you will need only for some emulators scummVM="--axismap -Y1=Y1,-Y2=Y2 \ --ui-axismap x1=REL_X:10,y1=REL_Y:10 \ --ui-buttonmap a=BTN_LEFT,b=BTN_RIGHT,start=KEY_F5,back=KEY_ESC \ --ui-buttonmap guide=void,x=void,y=void,lb=void,rb=void,tl=void,tr=void,lt=void,rt=void,back=void \ --ui-axismap x2=void" amiga1="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \ --device-name "Amiga_Joystick_Player_1_xboxdrv" \ --evdev-absmap ABS_X=y1,ABS_Y=x1 \ --evdev-keymap BTN_TRIGGER=x,BTN_THUMB=y,BTN_THUMB2=a,BTN_PINKIE=b,BTN_BASE3=back,BTN_BASE6=start" amiga2="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.1:1.0-event-joystick \ --device-name "Amiga_Joystick_Player_2_xboxdrv" \ --evdev-absmap ABS_X=y1,ABS_Y=x1 \ --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start" joy1restricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \ --device-name "Player_1_-_4-Way_Joystick_xboxdrv" \ --evdev-absmap ABS_X=x1,ABS_Y=y1 \ --four-way-restrictor \ --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start" joy1unrestricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \ --device-name "Player_1_-_8-Way_Joystick_xboxdrv" \ --evdev-absmap ABS_X=x1,ABS_Y=y1 \ --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start" joy2restricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.1:1.0-event-joystick \ --device-name "Player_2_-_4-Way_Joystick_xboxdrv" \ --evdev-absmap ABS_X=x1,ABS_Y=y1 \ --four-way-restrictor \ --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start" joy2unrestricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.1:1.0-event-joystick \ --device-name "Player_2_-_8-Way_Joystick_xboxdrv" \ --evdev-absmap ABS_X=x1,ABS_Y=y1 \ --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start" joy3restricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.2:1.0-event-joystick \ --device-name "Player_3_-_4-Way_Joystick_xboxdrv" \ --evdev-absmap ABS_X=x1,ABS_Y=y1 \ --four-way-restrictor \ --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start" joy3unrestricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.2:1.0-event-joystick \ --device-name "Player_3_-_8-Way_Joystick_xboxdrv" \ --evdev-absmap ABS_X=x1,ABS_Y=y1 \ --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start" joy4restricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.4:1.0-event-joystick \ --device-name "Player_4_-_4-Way_Joystick_xboxdrv" \ --evdev-absmap ABS_X=x1,ABS_Y=y1 \ --four-way-restrictor \ --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start" joy4unrestricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.4:1.0-event-joystick \ --device-name "Player_4_-_8-Way_Joystick_xboxdrv" \ --evdev-absmap ABS_X=x1,ABS_Y=y1 \ --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start" fourway="--four-way-restrictor" invert="--ui-buttonmap du=KEY_DOWN,dd=KEY_UP" ### Kill Command xboxkill="sudo killall xboxdrv" ### Execute the driver with the configuration you need # $1 is the name of the emulation, not the name of the software used # it is intellivision not jzintv case $1 in mame-libretro) case $rom in "amidar.zip"|"atetris.zip"|"puckman.zip") # Configuration used only for these ROMs $xboxkill joycommand="$basic $joy3restricted & $basic $joy4restricted &" eval $joycommand ;; *) # Configuration for every other ROMs on this emulator $xboxkill joycommand="$basic $joy3unrestricted & $basic $joy4unrestricted &" eval $joycommand ;; esac ;; daphne) ;; scummvm) $xboxkill joycommand="$basic $scummVM &" eval $joycommand ;; amiga) $xboxkill joycommand="$basic $amiga1 & $basic $amiga2 &" eval $joycommand ;; intellivision) ;; esac
So where I'm up to with this is that the Amiga joysticks work.
But the same can't be said for the "cocktail" games. When I start Amidar for example, the little yellow writing at the bottom comes up and it informs me that the 4 DragonRise joysticks are set up and also starts joy3restricted and joy4restricted, but that they are unconfigured. The result of that is that I can't press any joystick buttons at all once the rom has begun (although the keyboard still works). Using TAB to get to Mame's internal menu doesn't help as I can't change the buttons. Exiting out of the rom with the keyboard triggers the runcommand-onend.sh file killing xboxdrv and everything then works as per normal using the xpad driver. (If I start Amidar without loading xboxdrv, then everything works but of course I'm using an 8-way unrestricted joystick.)
To troubleshoot, as I'm using lr-mame2003, using putty I have first started xboxdrv for those 2 joysticks (joy3restricted and joy4restricted), then fired up retroarch and configured those joysticks as users 5 and 6, saving the configurations to retroarch.cfg.
I then go back, start Amidar again, and note that joy3restricted and joy4restricted have started, but once again - no buttons work and using the mame TAB interface again doesn't do anything.
Not sure where to go from here. Any help would be great please.
-
@pjft I definitely can't take credit for the list, but I imagine you'll be right - that some of the games aren't really 4 way. I have the same recollection as you about Commando. I'm sure it's 8 way.
It's going to be trial and error, I feel, for a lot of these games, particularly as there's going to be a need to match the game names to the actual rom names. Haven't figured out yet an automatic method of doing this to save time. May have to do it manually.....
-
@spud11 Thanks a ton for the list! BTW I ran into that same error too with the devicename not working when having spaces in it. Glad to know I wasn't crazy and it happened to others as it took me forever to troubleshoot.
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.