RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    Guide: Advanced Controller Mappings

    Scheduled Pinned Locked Moved Help and Support
    joystickcontrollermappingxboxdrvscummvm
    626 Posts 35 Posters 462.6k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      dunnieboy @mediamogul
      last edited by

      @mediamogul awesome ...well ... prepare for an onslaught of pleas for help =)

      mediamogulM 1 Reply Last reply Reply Quote 0
      • mediamogulM
        mediamogul Global Moderator @dunnieboy
        last edited by

        @dunnieboy

        I'll try to answer them as best I can.

        RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

        D 1 Reply Last reply Reply Quote 0
        • D
          dunnieboy @mediamogul
          last edited by dunnieboy

          @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 ???

          mediamogulM 1 Reply Last reply Reply Quote 0
          • mediamogulM
            mediamogul Global Moderator @dunnieboy
            last edited by mediamogul

            @dunnieboy

            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.

            RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

            D 1 Reply Last reply Reply Quote 0
            • D
              dunnieboy @mediamogul
              last edited by dunnieboy

              @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
              
              mediamogulM 1 Reply Last reply Reply Quote 0
              • mediamogulM
                mediamogul Global Moderator @dunnieboy
                last edited by

                @dunnieboy

                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.

                RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

                D 1 Reply Last reply Reply Quote 1
                • H
                  Hubz @spud11
                  last edited by

                  @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 :)

                  S 2 Replies Last reply Reply Quote 0
                  • D
                    dunnieboy @mediamogul
                    last edited by dunnieboy

                    @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"
                    
                    1 Reply Last reply Reply Quote 0
                    • S
                      spud11 @Hubz
                      last edited by

                      @Hubz Certainly. I got the list from the website below:
                      http://www.armchairarcade.com/neo/node/486

                      001	.	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.

                      RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                      pjftP H 2 Replies Last reply Reply Quote 0
                      • pjftP
                        pjft @spud11
                        last edited by

                        @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!

                        S 1 Reply Last reply Reply Quote 0
                        • S
                          spud11 @mediamogul
                          last edited by

                          @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.

                          RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                          1 Reply Last reply Reply Quote 0
                          • S
                            spud11 @pjft
                            last edited by

                            @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.....

                            RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                            1 Reply Last reply Reply Quote 0
                            • H
                              Hubz @spud11
                              last edited by

                              @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.

                              S 2 Replies Last reply Reply Quote 0
                              • S
                                spud11 @Hubz
                                last edited by

                                @Hubz No problems. It was mediamogul who picked it up.

                                RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                                1 Reply Last reply Reply Quote 0
                                • mediamogulM
                                  mediamogul Global Moderator
                                  last edited by

                                  Glad to see things working out here. I'll add the information about --device-name to the guide .

                                  RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

                                  S 1 Reply Last reply Reply Quote 0
                                  • S
                                    spud11 @mediamogul
                                    last edited by

                                    @mediamogul That's a good idea.

                                    I'm still having a bit of trouble as per 3 posts ago. Hoping you might still be able to help, if possible, please.

                                    RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                                    mediamogulM 1 Reply Last reply Reply Quote 0
                                    • mediamogulM
                                      mediamogul Global Moderator @spud11
                                      last edited by mediamogul

                                      @spud11

                                      Have those particular virtual controllers been mapped through Emulation Station like any other controller? If not, it could be that there's no automatic configuration for them at /opt/retropie/configs/all/retroarch/autoconfig for RetroArch to draw on.

                                      RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

                                      S 1 Reply Last reply Reply Quote 0
                                      • S
                                        spud11 @mediamogul
                                        last edited by spud11

                                        @mediamogul Hi. Yes, they are in fact both mapped:

                                        Player_3_-_4-Way_Joystick_xboxdrv.cfg

                                        input_driver = "udev"
                                        input_device = "Player_3_-_4-Way_Joystick_xboxdrv"
                                        input_b_btn = "1"
                                        input_y_btn = "3"
                                        input_select_btn = "8"
                                        input_start_btn = "9"
                                        input_up_axis = "+0"
                                        input_down_axis = "-0"
                                        input_left_axis = "+1"
                                        input_right_axis = "-1"
                                        input_a_btn = "0"
                                        input_x_btn = "2"
                                        

                                        Player_4_-_4-Way_Joystick_xboxdrv.cfg

                                        input_driver = "udev"
                                        input_device = "Player_4_-_4-Way_Joystick_xboxdrv"
                                        input_b_btn = "1"
                                        input_y_btn = "3"
                                        input_select_btn = "8"
                                        input_start_btn = "9"
                                        input_up_axis = "+0"
                                        input_down_axis = "-0"
                                        input_left_axis = "+1"
                                        input_right_axis = "-1"
                                        input_a_btn = "0"
                                        input_x_btn = "2"
                                        

                                        And thinking about it, I'll need to map the corresponding 8 way configs to Users 7 and 8 in Retroarch too, given that all other roms will rely on those 8 way configs. Personally, I'd just prefer for the xpad (rather than xboxdrv) driver to work for normal 8 way mame-libretro joystick games, but when I added the hash to the below, xboxdrv wouldn't load at all:

                                        ;;
                                        			*) # Configuration for every other ROMs on this emulator
                                        				$xboxkill
                                        				# joycommand="$basic $joy3unrestricted & $basic $joy4unrestricted &"
                                        				# eval $joycommand
                                                                      ;;
                                        

                                        I've also tried to edit, without success, the individual amidar.zip.cfg file which is as follows by adding the extra line at the top:

                                        # Settings made here will only override settings in the global retroarch.cfg if placed above the #include line
                                        
                                        input_player3_joypad_index = 5
                                        video_allow_rotate = "true" 
                                        video_rotation = "3" 
                                        aspect_ratio_index = "19" 
                                        video_aspect_ratio_auto = "false" 
                                        video_aspect_ratio = "1.75"
                                        
                                        #include "/opt/retropie/configs/all/retroarch.cfg"
                                        

                                        RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                                        mediamogulM 1 Reply Last reply Reply Quote 0
                                        • mediamogulM
                                          mediamogul Global Moderator @spud11
                                          last edited by

                                          @spud11

                                          You may just want to map those final two controllers for keyboard input. I have most of my controllers mapped like that anyway. RetroArch will still respect all the controller button mappings, but have a separate set for keyboard keys as well. An example of one and two player keyboard controls from my own retroarch.cfg is:

                                          input_player1_a = "a"
                                          input_player1_b = "b"
                                          input_player1_y = "y"
                                          input_player1_x = "x"
                                          input_player1_start = "t"
                                          input_player1_select = "e"
                                          input_player1_l = "l"
                                          input_player1_r = "r"
                                          input_player1_left = "left"
                                          input_player1_right = "right"
                                          input_player1_up = "up"
                                          input_player1_down = "down"
                                          input_player1_l2 = "d"
                                          input_player1_r2 = "f"
                                          input_player1_l3 = "c"
                                          input_player1_r3 = "v"
                                          
                                          input_player2_a = "k"
                                          input_player2_b = "m"
                                          input_player2_y = "o"
                                          input_player2_x = "n"
                                          input_player2_start = "num9"
                                          input_player2_select = "num0"
                                          input_player2_l = "p"
                                          input_player2_r = "q"
                                          input_player2_left = "g"
                                          input_player2_right = "h"
                                          input_player2_up = "i"
                                          input_player2_down = "j"
                                          input_player2_l2 = "s"
                                          input_player2_r2 = "u"
                                          input_player2_l3 = "w"
                                          input_player2_r3 = "z"
                                          

                                          RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

                                          S 1 Reply Last reply Reply Quote 0
                                          • D
                                            dunnieboy
                                            last edited by dunnieboy

                                            So far I am mainly using this for dosbox to capture the mouse. Are there reason to use this as the main controller rather than the xpad default mapping ?

                                            The systems I am suing are :
                                            DosBOX
                                            Vice (C64)
                                            Amiberry (amiga)
                                            Daphne (Dragon's Lair)
                                            Mame 2003

                                            I am currently initiating the xboxdrv in the .sh of each game for DosBOX.

                                            Thanks

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            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.