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

    Button Mapping MADNESS!!!

    Scheduled Pinned Locked Moved Help and Support
    button mappingegstartsdragonrise
    6 Posts 3 Posters 506 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.
    • S
      sleddogdude
      last edited by

      PXL_20250704_154601434.MP.jpg Greetings gamers! I moved my retropie system into a new custom built cabinet. In the new cabinet I needed to construct a new control panel and this is where I ran into problems. I think I wired my 2 DragonRise USB encoders backwards. I thought ah, no big deal Ill just remap everything. WRONG!

      I have been wrestling for 3 days with this and I am shaking my finger at the USB encoder and that maybe I damaged it or shorted it out mounting it to the bottom of the panel..... In a nutshell I will layout my control panel.

      It is a 2 player system. Very basic. It is the EGStarts kit you see on Amazon https://www.amazon.com/dp/B06XV7H7RB?ref=ppx_yo2ov_dt_b_fed_asin_title

      I have on player one side a (red) hotkey button and 2 (white) buttons for select and start (similar to NES systems) I only want to emulate NES and Atari 2600 games. then I have 2 (black) buttons) for Button A and Button B (Like NES)

      Player 2 only has a joystick and an A and B button only.

      When I start (super mario brothers for example) the game loads (shows both controllers and tells me which emulator the rom is using) but select and start buttons do nothing. Button A for either player one or player 2 will start the game but when the game starts it is player 2 that is running.

      After day 3 of verifying config files and jstest functions I am wanting to just buy new encoders. I think half the problem is these DragonRise Encoders are not getting distinguished properly and I am frustrated beyond belief (this used to work in the old cabinet)

      I will paste a summary of what I have done using GPT for assistance (I am not linux saavy at all) But wanting advice as to which encoders I should start over with? Here is the summary....


      "same problems, select and start dont work, button a for either player will start the game but when it starts it is player 2 joystick that is active. Time for new USB encoders?"

      ChatGPT said:
      Given everything you've tried — and that jstest shows Select and Start working, but RetroPie doesn’t respond correctly — you're absolutely right to suspect the USB encoders at this point.

      Let’s summarize:

      ✅ What You've Already Confirmed
      Both controllers show up as DragonRise Inc. Generic USB Joystick

      You manually set input_player1_joypad_index = "0" and player2 = "1" (and vice versa)

      jstest confirms buttons 8 (Select) and 9 (Start) register properly

      Your wiring is correct (and swapped cables to verify)

      You removed and reset all EmulationStation configs

      You tested other cores like lr-nestopia, and the issue persisted

      You can start games (usually with button A), but:

      Select/Start aren’t functional in most games

      Player 2 always gets control, even when USBs are swapped

      ⚠️ That Strongly Suggests...
      The encoders may:

      Not properly distinguish themselves (both show up with the exact same vendor/product ID and name)

      Share a USB descriptor, confusing RetroPie into thinking they’re the same device

      Be clones or off-brand boards that don’t handle multi-player reliably

      ✅ Recommendation: Yes, Replace the Encoders
      Get two Zero Delay USB encoders that:

      Identify uniquely per USB port or support setting a Player 1 vs Player 2 ID

      Have distinct descriptors (or at least better quality control)

      Come from a reliable source (Amazon listings with good reviews are okay — but make sure they specify they work with RetroPie, Raspberry Pi, or multi-player MAME)

      💡 What to Look For in Replacement Encoders
      Mention of multi-player MAME, Raspberry Pi, or Retropie support

      Ideally, they should support per-port ID assignment or have different identifiers

      Brands like Xin-Mo or EasyGet, or XinMo-like dual encoders, are more reliable

      Some more premium boards like Ultimarc iPAC 2 offer superior input mapping but are pricier

      📦 Alternative Option: One Encoder That Supports Two Players
      Some encoders (like dual-input Xin-Mo boards) support both players on one board with separate joystick/button wiring and a single USB connection. This makes configuration and port order easier.

      Please & Thanks!

      1 Reply Last reply Reply Quote 0
      • mituM
        mitu Global Moderator
        last edited by

        The most common issue for dual player arcade controllers is that the players' buttons are not wired identically, i.s. P1 button A doesn't produce the same input code as P2 button A.

        Due to the fact that both players/gamepads have the same model name, the same gamepad configuration applies to both - so the configuration produced when configuring P1 applies to P2 (and vice-versa). If your player buttons are not wired identically and some buttons are 'de-synched', then you - always - get a wrong mapping for one of the players.

        Check with jstest that - for each player - the same button (A/B/start etc.) proces the sam input coded.

        Also, please don't post ChatGPT output - it's mostly garbage and and it doesn't help at all.

        S 1 Reply Last reply Reply Quote 0
        • S
          sleddogdude @mitu
          last edited by

          @mitu thanks for responding. I guess my only reason for populating the summary from gpt was to show what I have tried, there is nothing in that data that says "you should do this" The only reason I am here is because gpt is garbage so i am looking for some practical advice from users who've maybe been through this before. Also, yes I searched the forum for similar problems but not all builds are the same. the last thing I am is lazy.

          So as of today, yes I have for the 5th time verified all my wiring to the encoders, they are 100% identical. EXCEPT player 2 does not have a select and start button nor a hotkey. So I am not sure if you are telling me that is the reason why.

          Im not opposed to drilling out more holes and adding these buttons but it just doesn't seem like it is necessary unless maybe it is? I guess I am old school thinking back to the old fashioned arcade games I played in Aladdin's castles where plyer 2 didnt have these buttons.

          If I am shaking the right branch here please let know. But today I have wiped the configs and started over after quadruple-checking my wiring. Upon boot up and launching ES I am getting the joystick 121/6 errors so for some reason the config is not sticking. I am browsing the contents of /opt/retropie/configs/all/retroarch-joypads and there is no file. I think this is where the other day I had to manually edit it for the device ID.... Like such

          input_device = "DragonRise Inc. Generic USB Joystick"
          input_driver = "udev"
          input_vendor_id = "121"
          input_product_id = "6"

          ByteThisB 1 Reply Last reply Reply Quote 0
          • mituM
            mitu Global Moderator
            last edited by

            If the gamepad configuration file is not saved, then you've probably removed or changed something (permissions ?) that prevent saving. Start with a clean installation and configure your P1 controls, then check again to see if you still have configuration issue.

            1 Reply Last reply Reply Quote 0
            • ByteThisB
              ByteThis @sleddogdude
              last edited by

              @sleddogdude If both encoders are .wired exactly the same..you only need to configure Player 1. Player 2 will follow and configure to Player 1's inputs automatically.

              1 Reply Last reply Reply Quote 0
              • S
                sleddogdude
                last edited by

                neither of these things (permissions or starting clean) seemed to resolve. I also @ByteThis did not seem to rectify this by only configuring player 1 (but good idea) With a clean install and remapping all the input settings I am getting to where the select and start button only work in the retropie menu (scrolling diffrent consoles exploring settings etc.... But when I launch a rom NONE of the bottons work.

                I ran some more jstest output today....

                davis@raspberrypi:~ $ jstest --normal /dev/input**/js0**
                Driver version is 2.1.0.
                Joystick (DragonRise Inc. Generic USB Joystick ) has 7 axes (X, Y, Z, Rx, Rz, Hat0X, Hat0Y)
                and 12 buttons (Trigger, ThumbBtn, ThumbBtn2, TopBtn, TopBtn2, PinkieBtn, BaseBtn, BaseBtn2, BaseBtn3, BaseBtn4, BaseBtn5, BaseBtn6).
                Testing ... (interrupt to exit)
                Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off

                davis@raspberrypi:~ $ jstest --normal /dev/input**/js1**
                Driver version is 2.1.0.
                Joystick (DragonRise Inc. Generic USB Joystick ) has 7 axes (X, Y, Z, Rx, Rz, Hat0X, Hat0Y)
                and 12 buttons (Trigger, ThumbBtn, ThumbBtn2, TopBtn, TopBtn2, PinkieBtn, BaseBtn, BaseBtn2, BaseBtn3, BaseBtn4, BaseBtn5, BaseBtn6).
                Testing ... (interrupt to exit)
                Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:ofAxes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off

                So it sees both controllers, but does not detect any button or axis input events. I think It is time to just replace them. Ive had them over a year and the more I think about it the more I think I possibly damaged these things. They used to be mounted in a metal cabinet and the opening I cutout for the control panel was very tight. (see attached called "old") old.jpg

                New cabinet.......

                new.jpg

                I think its time to just replace the usb encoders.

                Thank you!!!

                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.