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

    DOSBox does not detect axis 4 or 5 on PS4 and XBox 360 controller

    Scheduled Pinned Locked Moved Help and Support
    controllersdosboxmappingmapperps4 controller
    12 Posts 4 Posters 2.2k 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.
    • JemyMJ
      JemyM
      last edited by JemyM

      edited: added segment on xbox 360 after further testing...

      I am part of a huge project mapping every DOS action game out there. So far we have covered almost 600 games.

      I noted that when I try to assign up and down on the right stick on my Playstation 4 controller in the DOSBox internal mapper (CTRL+F1), nothing happens. No reaction. Nothing is assigned. All other axises works instantly. When I add the axis manually in a .map file it will be displayed as "Key unknown key". Two different PS4 controllers were tested with the same result. Then I tested to assign an xbox 360 controller where y on right stick also is "axis 4" and input_r2_axis is "+5". Lo and behold, same result. These inputs are not detected by the emulator at all.

      Example:
      key_f3 "stick_0 axis 4 0" "key 284"

      When I tested the very same procedure with a Playstation 2 controller it worked instantly without issue. The PS2 controller use "Axis 2" for right stick y. When using the same controller on a Windows pc, the Axises are different. Right stick y is axis 3 and right stick x is axis 2. Its only "axis 4" and "axis 5" that are not detected.

      This is my "Wireless Controller.cfg", my attached PS4 controller.
      input_device = "Wireless Controller"
      input_driver = "udev"
      input_r_y_plus_axis = "+4"
      input_r_x_minus_axis = "-3"
      input_l_btn = "4"
      input_load_state_btn = "4"
      input_start_btn = "9"
      input_exit_emulator_btn = "9"
      input_r_y_minus_axis = "-4"
      input_down_btn = "h0down"
      input_l_x_plus_axis = "+0"
      input_r_btn = "5"
      input_save_state_btn = "5"
      input_right_btn = "h0right"
      input_state_slot_increase_btn = "h0right"
      input_select_btn = "8"
      input_left_btn = "h0left"
      input_state_slot_decrease_btn = "h0left"
      input_l2_btn = "6"
      input_l3_btn = "11"
      input_l_y_minus_axis = "-1"
      input_up_btn = "h0up"
      input_a_btn = "0"
      input_b_btn = "1"
      input_reset_btn = "1"
      input_enable_hotkey_btn = "10"
      input_l_y_plus_axis = "+1"
      input_r2_btn = "7"
      input_r3_btn = "12"
      input_x_btn = "3"
      input_menu_toggle_btn = "3"
      input_l_x_minus_axis = "-0"
      input_y_btn = "2"
      input_r_x_plus_axis = "+3"

      1 Reply Last reply Reply Quote 0
      • BobHarrisB
        BobHarris
        last edited by BobHarris

        Edit: Sorry remembered it wrong. My Dual shock 4 has the same issue.

        Pi 3B , 64 GB Sandisk ultra flashdrive, 19 systems, 872 hand picked classic gaming gems :-) Dual shock 4v2

        JemyMJ 1 Reply Last reply Reply Quote 1
        • JemyMJ
          JemyM @BobHarris
          last edited by JemyM

          @BobHarris said in DOSBox does not detect axis 4 (right stick y+/y- up/down) on PS4 controller:

          That's odd indeed. I used the Dosmapper for 1 layout for 5 DOS games. I had no issues assigning keys to any of the directions on the right thumbstick (Dual shock 4 v2). But I couldn't assign any key to the left thumbstick.

          Edit: I'm not at home now so I can't verify it...could be that it was just the horizontal axis on the left stick that didn't respond.

          I only experience this issue with y on the right stick, and only on a playstation 4 controller, which Retropie reads as "axis 4". You can see what axis is assigned to this by looking under\RETROPIE\configs\all\retroarch-joypads and checking the value after "input_r_y_plus_axis" and "input_r_y_minus_axis".

          My playstation 2 controller do not have this problem. The same input is detected as axis 2.

          The right stick is essential for our project since we use it for prelaunch commands (such as "f3 for vga, f5 for soundblaster") and for looking around or turning in 3d games.

          @BobHarris said in DOSBox does not detect axis 4 (right stick y+/y- up/down) on PS4 controller:

          Dual shock 4 v2

          I do not know if it matters, but both my controllers are v2 and I tested both. Both are detected as "axis 4" in Retropie.

          BobHarrisB D 2 Replies Last reply Reply Quote 0
          • BobHarrisB
            BobHarris @JemyM
            last edited by

            @JemyM IT's been a while since I worked on that and apparently I remembered it wrong. :) I have the same problem as you with the right stick.

            Pi 3B , 64 GB Sandisk ultra flashdrive, 19 systems, 872 hand picked classic gaming gems :-) Dual shock 4v2

            1 Reply Last reply Reply Quote 0
            • D
              dudleydes @JemyM
              last edited by

              @JemyM The issue seems to be that in Stretch, the triggers on Playstation controllers are recognised as buttons and axes.

              Running jstest on my PS3 controller provides the following info:

              • Axis 0 (X) is Left stick left/right
              • Axis 1 (Y) is Left stick up/down
              • Axis 2 (Z) is Left trigger
              • Axis 3 (Rx) is Right stick left/right
              • Axis 4 (Ry) is Right stick up/down
              • Axis 5 (Rz) is Right trigger

              The standard joystick port in DOS supports a maximum of 4 axes (source). As DOSBox recognises the right stick up/down as the 5th axis, it is not recognised.

              My RetroPie build containing DOSBox is still running Jessie, primarily because it would have involved renumbering my DOSbox mapper files. Consequently I haven't looked into this issue (which validates my decision to stick with Jessie).

              One solution may be remap the axes with a tool such as xboxdrv which can be installed from the setup script.

              Alternatively, you could post at the DOSBox forums, VOGONS.

              JemyMJ 1 Reply Last reply Reply Quote 0
              • JemyMJ
                JemyM @dudleydes
                last edited by

                @dudleydes said in DOSBox does not detect axis 4 or 5 on PS4 and XBox 360 controller:

                @JemyM The issue seems to be that in Stretch, the triggers on Playstation controllers are recognised as buttons and axes.

                Running jstest on my PS3 controller provides the following info:

                • Axis 0 (X) is Left stick left/right
                • Axis 1 (Y) is Left stick up/down
                • Axis 2 (Z) is Left trigger
                • Axis 3 (Rx) is Right stick left/right
                • Axis 4 (Ry) is Right stick up/down
                • Axis 5 (Rz) is Right trigger

                The standard joystick port in DOS supports a maximum of 4 axes (source). As DOSBox recognises the right stick up/down as the 5th axis, it is not recognised.

                My RetroPie build containing DOSBox is still running Jessie, primarily because it would have involved renumbering my DOSbox mapper files. Consequently I haven't looked into this issue (which validates my decision to stick with Jessie).

                One solution may be remap the axes with a tool such as xboxdrv which can be installed from the setup script.

                Alternatively, you could post at the DOSBox forums, VOGONS.

                This answers the question indeed. It seems Retropie relies on a dosbox that lacks the joystick patch which is used by both ECE and Daum and other more popular editions.

                https://www.vogons.org/viewtopic.php?f=32&t=27452&p=314840&hilit=joystick#p314840

                D 1 Reply Last reply Reply Quote 0
                • D
                  dudleydes @JemyM
                  last edited by

                  @JemyM It is possible to apply the patch in the first post in that thread to RetroPie's version of DOSBox to enable the two remaining axes 4 and 5. I have successfully tested it with a fresh 4.4 image and using Blood where the right stick up/down axis is mapped to look/aim up and down.

                  Below are the commands I used. It's a good idea to back up your image first or start with a fresh image.

                  Get Sources

                  cd
                  cd RetroPie-Setup
                  sudo ./retropie_packages.sh dosbox depends
                  sudo ./retropie_packages.sh dosbox sources
                  

                  Apply Patch

                  pushd tmp/build/dosbox/
                  sudo wget -O dosbox-joystick-patch.diff https://www.vogons.org/download/file.php?id=8645
                  sudo patch -f -p1 < dosbox-joystick-patch.diff
                  

                  When applying the patch, you will get a message Hunk #2 FAILED at 523. I checked the relevant section of the code and it appears that that section of patch has already been applied.

                  Build and Install

                  popd
                  sudo ./retropie_packages.sh dosbox build
                  sudo ./retropie_packages.sh dosbox install
                  sudo ./retropie_packages.sh dosbox configure
                  

                  Now you can test your right stick up/down axis. If all is well, you can remove the source code with the command:

                  sudo ./retropie_packages.sh dosbox clean
                  

                  It is possible to raise an issue to ask the devs to include the patch so that DOSBox with the joystick patch can be installed using the setup script rather than the command line.

                  1 Reply Last reply Reply Quote 0
                  • JemyMJ
                    JemyM
                    last edited by

                    @dudleydes said

                    It is possible to raise an issue to ask the devs to include the patch so that DOSBox with the joystick patch can be installed using the setup script rather than the command line.

                    Dudleydes, I thank you greatly for your detailed walkthrough and fix for this issue. I was able to follow your instructions and it worked as intended. I will certainly raise an issue about this. Its essential to be able to use our keyboard to joystick project as intended on the Retropie.

                    1 Reply Last reply Reply Quote 0
                    • P
                      psyke83 Global Moderator
                      last edited by

                      Please test and report on whether the joystick binding patch (as well as dosbox in general) works as expected: https://github.com/RetroPie/RetroPie-Setup/pull/2646

                      JemyMJ 1 Reply Last reply Reply Quote 1
                      • JemyMJ
                        JemyM @psyke83
                        last edited by

                        @psyke83 said in DOSBox does not detect axis 4 or 5 on PS4 and XBox 360 controller:

                        Please test and report on whether the joystick binding patch (as well as dosbox in general) works as expected: https://github.com/RetroPie/RetroPie-Setup/pull/2646

                        I am not good enough. I was able to follow Dudleydes instructions above and that worked, but I do not know how to get this patch to my retropie. I tried to update "dosbox from source" but that did not work.

                        P 1 Reply Last reply Reply Quote 0
                        • P
                          psyke83 Global Moderator @JemyM
                          last edited by

                          @JemyM said in DOSBox does not detect axis 4 or 5 on PS4 and XBox 360 controller:

                          @psyke83 said in DOSBox does not detect axis 4 or 5 on PS4 and XBox 360 controller:

                          Please test and report on whether the joystick binding patch (as well as dosbox in general) works as expected: https://github.com/RetroPie/RetroPie-Setup/pull/2646

                          I am not good enough. I was able to follow Dudleydes instructions above and that worked, but I do not know how to get this patch to my retropie. I tried to update "dosbox from source" but that did not work.

                          The PR already been merged, so update your Retropie-Setup script and then update dosbox to get the patched version.

                          Have you tried dosbox-sdl2? It might have better joystick handling.

                          JemyMJ 1 Reply Last reply Reply Quote 0
                          • JemyMJ
                            JemyM @psyke83
                            last edited by

                            @psyke83 said in DOSBox does not detect axis 4 or 5 on PS4 and XBox 360 controller:

                            @JemyM said in DOSBox does not detect axis 4 or 5 on PS4 and XBox 360 controller:

                            @psyke83 said in DOSBox does not detect axis 4 or 5 on PS4 and XBox 360 controller:

                            Please test and report on whether the joystick binding patch (as well as dosbox in general) works as expected: https://github.com/RetroPie/RetroPie-Setup/pull/2646

                            I am not good enough. I was able to follow Dudleydes instructions above and that worked, but I do not know how to get this patch to my retropie. I tried to update "dosbox from source" but that did not work.

                            The PR already been merged, so update your Retropie-Setup script and then update dosbox to get the patched version.

                            Have you tried dosbox-sdl2? It might have better joystick handling.

                            I forgot about this because I updated and I can verify that it works. We are not using dosbox-sdl2 in our keyboard 2 joypad project since its not needed. The keyb2joy.pad project document and index keys assigned to functions. We basically fill in columns with the keys used for things like "jump", "move" or "fire". I have then made an utility that produce authentic DOSBox .map files with full Retropie-support based on these profiles. So far we made 550 platform games fully playable on joypad and we are 20% through the 600 shoot-em ups on the DOS platform.

                            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.