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

    Arcade control panel mapping questions

    Scheduled Pinned Locked Moved Help and Support
    mameretroarchcontrol panelipac4noob
    44 Posts 4 Posters 9.4k 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
      SammyLJ @caver01
      last edited by

      @caver01 here's what I have. Of course this could all be for not if i'm using the wrong emulator.
      input_player1_a = "b"
      input_player1_b = "a"
      input_player1_y = "y"
      input_player1_x = "x"
      input_player1_start = "1"
      input_player1_select = "5"
      input_player1_l = "z"
      input_player1_r = "c"
      input_player1_left = "left"
      input_player1_right = "right"
      input_player1_up = "up"
      input_player1_down = "down"
      input_player1_l2 = "nul"
      input_player1_r2 = "nul"
      input_player1_l3 = "nul"
      input_player1_r3 = "nul"
      input_player2_a = "n"
      input_player2_b = "o"
      input_player2_y = "k"
      input_player2_x = "l"
      input_player2_start = "2"
      input_player2_select = "6"
      input_player2_l = "m"
      input_player2_r = "q"
      input_player2_left = "i"
      input_player2_right = "j"
      input_player2_up = "g"
      input_player2_down = "h"
      input_player3_a = "nul"
      input_player3_b = "e"
      input_player3_y = "d"
      input_player3_x = "f"
      input_player3_start = "3"
      input_player3_select = "lshift"
      input_player3_l = "nul"
      input_player3_r = "nul"
      input_player3_left = "t"
      input_player3_right = "u"
      input_player3_up = "r"
      input_player3_down = "s"
      input_player4_a = "nul"
      input_player4_b = "9"
      input_player4_y = "7"
      input_player4_x = "8"
      input_player4_start = "4"
      input_player4_select = "lctrl"
      input_player4_l = "nul"
      input_player4_r = "nul"
      input_player4_left = "rshift"
      input_player4_right = "space"
      input_player4_up = "v"
      input_player4_down = "w"
      menu_swap_ok_cancel_buttons = "false"
      input_state_slot_increase = "right"
      input_state_slot_decrease = "left"
      input_exit_emulator = "escape"
      input_reset = "b"
      input_menu_toggle = "tab"
      input_pause_toggle = "p"

      caver01C 1 Reply Last reply Reply Quote 0
      • caver01C
        caver01 @SammyLJ
        last edited by

        @sammylj input_menu_toggle = "tab" is a bad idea I think. It will conflict with the MAME GUI menu.

        You need to read the documentation my friend. It will explain details about which emulator you are using. Look at Runcommand.

        My 4-player cocktail style cabinet built as a custom "roadcase"

        S 1 Reply Last reply Reply Quote 0
        • S
          SammyLJ @caver01
          last edited by

          @caver01 ok so I have found that there are 9 emulators that run mame in retropie. I'm not completely computer literate so where is the runcommand that I should be looking for? Being that the roms are version .78, is there a emulator that I should specifically be using? Also is that decided by what folder the roms go in? I figure we should get that sorted before I worry about controls.

          mituM caver01C 2 Replies Last reply Reply Quote 0
          • mituM
            mitu Global Moderator @SammyLJ
            last edited by mitu

            @sammylj https://retropie.org.uk/docs/Arcade/ should get you started. The lr-mame2003 core is the one that supports this romset version. The Runcommand is documented in the Getting Started part of the docs - https://retropie.org.uk/docs/Runcommand/.

            S 1 Reply Last reply Reply Quote 0
            • caver01C
              caver01 @SammyLJ
              last edited by

              @sammylj I was on my phone when I responded last. Thanks @mitu for adding links. The reason the TAB mapping you setup would conflict is that the input menu toggle you specified is for retroarch, and you probably want access to MAME's GUI menu instead with the TAB key.

              You mappings have some mistakes. They should all conform to the acceptable inputs that are listed in the retroarch.cfg:

              # Keyboard input. Will recognize letters ("a" to "z") and the following special keys (where "kp_"
              # is for keypad keys):
              #
              #   left, right, up, down, enter, kp_enter, tab, insert, del, end, home,
              #   rshift, shift, ctrl, alt, space, escape, add, subtract, kp_plus, kp_minus,
              #   f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12,
              #   num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, pageup, pagedown,
              #   keypad0, keypad1, keypad2, keypad3, keypad4, keypad5, keypad6, keypad7, keypad8, keypad9,
              #   period, capslock, numlock, backspace, multiply, divide, print_screen, scroll_lock,
              #   tilde, backquote, pause, quote, comma, minus, slash, semicolon, equals, leftbracket,
              #   backslash, rightbracket, kp_period, kp_equals, rctrl, ralt
              

              for example, you have input_player3_select = "lshift" which is not in the list. make it just "shift". Each of your numbers should be "num1", "num2", etc. instead of "1", "2", and so on. While the bare numerals might work, I don't know that every core will respond properly.

              Also, your mapping seems to have deviated away from IPAC/MAME defaults. While you can use whatever keys you want, it makes way more sense to follow the MAME defaults, especially if you are going to try using non retroarch emulators like AdvanceMAME. This is probably why you find yourself having to remap everything inside MAME.

              My 4-player cocktail style cabinet built as a custom "roadcase"

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

                @mitu thanks for the help, the reading helped understand a bit more

                mituM 1 Reply Last reply Reply Quote 0
                • S
                  SammyLJ @caver01
                  last edited by

                  @caver01 ok just so I make sure that I am understanding correctly...
                  programming retroarch is like programming a gamepad essentially. Retroarch is used for in game whereas "mame gui" is the overall menu configuration. So what I should do is remap to the ipac/mame defaults so that less is being confused back and forth.
                  If I revert back to the original retroarch.cfg file the /all folder(which I saved a coy of) that should start me over. Then will I need to reprogram my IPAC board with the Ultimarc program to match?

                  to verify that I am running lr-mame2003 for my 0.78 roms I should see it on the runcommand(load screen) before the game starts and if it is incorrect then press 0 to open the menu and select lr-mame2003 as the default emulator for that specific rom.

                  as far as saved states go, the only thing I ever want saved is the high scores.

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

                    @sammylj No problem, but the real expert here is @caver01 - so heed his advice.

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

                      @mitu will do, thanks

                      rebuild a car engine, no problem
                      build a house, no problem
                      wrap my noodle around computer programming, error

                      caver01C 1 Reply Last reply Reply Quote 0
                      • caver01C
                        caver01 @SammyLJ
                        last edited by

                        @sammylj I think you have the right approach, but just to clarify the frameworks:

                        I recommend using Ultimarc defaults. The IPAC ships with keys assigned to the switches to match MAME, so you can use the board on anything and it should work with MAME out of the box so to speak.

                        In retropie, we have a lot of emulator choices, but it helps to think of the emulators as living in two categories. The first is Retroarch/Libretro framework, and the second are standalone emulators. Standalone are easier to understand, but not usually the default in RetroPie. Our conversation focuses on the Retroarch framework.

                        Think of Retroarch as a kind of emulator playground. You can configure one set of inputs, and these will work in a variety of emulators--some for arcade and some for home consoles etc. Each libretro "core" inside Retroarch is essentially an entire emulator, each for running different systems, but they can all share the same input mapping choices and the same video effects and so on. The retroarch.cfg files are used to store the overall configurations for retroarch, naturally, and they are setup so that the one in /all can apply globally, and other versions of the file can apply to individual cores or types of cores. Features like Save States, or the use of HotKeys--these are retroarch concepts. The key mapping we are discussing above refer to the keys that will trigger inputs across all libretro cores. You must understand also that retroarch itself has an interface. There is a retroarch GUI menu that can be invoked to make changes to the retroarch.cfg files. This has nothing to do with the MAME GUI that you are probably familiar with when you hit TAB.

                        So, we have Retroarch, and inside that, we have a core called lr-mame2003 which is the default arcade emulator. When you add ROMS to mame-libretro, this is your main choice of emulator (same for arcade).

                        Ok, so far? So, here is where it gets complicated. MAME is built to accept inputs from a keyboard. But not everyone has a keyboard. Many people have gamepads. So, the retroarch framework allows gamepad users to map their joysticks and buttons and lr-mame2003 core has been coded to accept the RetroArch inputs AND to accept keyboard inputs at the same time.

                        Because you happen to use a keyboard interface (IPAC), you technically don't need to map ANYTHING in Retroarch because your IPAC defaults would match MAME's defaults and should work out of the box so to speak. But the reality is that some users want to try other cores, for example, Final Burn Alpha. The Final Burn libretro core is different than MAME in that it only accepts the retroarch inputs. No raw keyboard commands will work. Consequently, we keyboard (ipac) users find ourselves mapping keys in retroarch.cfg anyway to cover the bases.

                        Ok, so you can reset the IPAC to defaults, then map these in RetroArch.cfg to match, like described here. Disable hotkeys, set exit to ESC.

                        At that point, you should be able to run games in lr-mame2003, but you have an additional gotcha. You reamapped some games using the MAME GUI (TAB). These are MAME keymaps that get stored in separate files per game ROM. They are located next to your ROMs inside a mame2003/cfg/ folder. They happen to be .cfg files but these ones are different than retroarch.cfg and cannot be edited. If you have them for a game you were already messing with, you can just delete it. You can also delete one called default.cfg here. That will clear any remapping you did in the MAME GUI for ALL GAMES.

                        It gets really confusing because keys get mapped, then remapped in so many places and they all matter because one uses the next which uses the next and so on, in this order:

                        1. Ultimarc IPAC -- this is the first, and most important, as this defines what raw keystrokes your switches generate.
                        2. retroarch.cfg the one in the configs/all defines the global mapping for the typical inputs we think of for home consoles (a,b,x,y etc.). These get forwarded to the libertro cores as virtual gamepad inputs. You are basically setting up a virtual gamepad here that can accept keyboard keys as buttons and joystick movements.
                        3. MAME GUI -- If you leave the defaults, gamepad users probably don't need to mess with this, but keyboard users end up with two sets of inputs going through here, the virtual gamepad setup on #2 above, and the raw keyboard keys. It is better if they simply match. You can, as needed do a final remap here (something I do all the time because my vertical games get played sideways with different controls).

                        My 4-player cocktail style cabinet built as a custom "roadcase"

                        S 1 Reply Last reply Reply Quote 0
                        • S
                          SammyLJ @caver01
                          last edited by

                          @caver01 WOW let me start by thanking you for your time and patience.

                          Ultimarc IPAC - reset
                          Since the basic panel designer does not have My Enter - Pause - Exit - Settings(Menu) buttons, I've had to add them. I programmed escape to be exit and pause to be p. BUT, Enter is already programmed, by default to be 3sw3. Should I change that around? Also, since you've suggested we move away from tab being the settings keystroke, what should we use instead.

                          retroarch is setup as such
                          input_enable_hotkey = "nul"
                          input_pause_toggle = p
                          input_exit_emulator = "escape"

                          input_player1_a = alt
                          input_player1_b = ctrl
                          input_player1_y = shift
                          input_player1_x = space
                          input_player1_start = num1
                          input_player1_select = num5
                          input_player1_l = z
                          input_player1_r = x
                          input_player1_left = left
                          input_player1_right = right
                          input_player1_up = up
                          input_player1_down = down

                          input_player2_a = s
                          input_player2_b = a
                          input_player2_y = w
                          input_player2_x = q
                          input_player2_start = num2
                          input_player2_select = num6
                          input_player2_l = i
                          input_player2_r = k
                          input_player2_left = d
                          input_player2_right = g
                          input_player2_up = r
                          input_player2_down = f

                          input_player3_a = enter
                          input_player3_b = rctrl
                          input_player3_y = rshift
                          input_player3_start = num3
                          input_player3_select = num7
                          input_player3_left = j
                          input_player3_right = l
                          input_player3_up = i
                          input_player3_down = k

                          input_player4_a = e
                          input_player4_b = b
                          input_player4_y = h
                          input_player4_start = num4
                          input_player4_select = num8
                          input_player4_left = v
                          input_player4_right = u
                          input_player4_up = y
                          input_player4_down = n

                          how we looking so far?
                          so last thing would just be the enter button on the panel.

                          caver01C 1 Reply Last reply Reply Quote 0
                          • S
                            SammyLJ
                            last edited by

                            and settings button

                            caver01C 1 Reply Last reply Reply Quote 0
                            • caver01C
                              caver01 @SammyLJ
                              last edited by caver01

                              @sammylj I cannot access my config file since I am away from my Pi, but I know there are some odd overlaps on the defaults, specifically, notice how " i" and "k" are used twice. This is still MAME default, and the rationale is that there are no 3 player games that would have player 2 using those buttons.

                              So, if you want to have the ENTER key accessible to the admin button you have, just wire Player3SW3 to it. You can have two buttons wired to the same switch on the IPAC.

                              And for settings, I have # input_menu_toggle = space, or in other words, it is setup as spacebar but it is commented out because of the #. I am not using the retroarch settings menu for anything. Remember, that line is going to invoke the RETROARCH settings, which, if you get things configured in the file correctly, you should not need to use. You want to keep TAB unmapped in Retroarch so that the raw key will work to invoke MAME's own menu. So, you will still need to wire the button to an IPAC input, and that input should be configured in the IPAC to send TAB, but there is no corresponding entry in retroarch for it. It is just a raw key.

                              My 4-player cocktail style cabinet built as a custom "roadcase"

                              S 1 Reply Last reply Reply Quote 0
                              • caver01C
                                caver01 @SammyLJ
                                last edited by

                                @sammylj Basically, ENTER is used as button 3 in MAME. You can also wire it to your admin button too.

                                Here is a screenshot from the WinIPAC utility looking at my IPAC4:
                                0_1512169132679_key_assignments_table.png

                                My 4-player cocktail style cabinet built as a custom "roadcase"

                                caver01C S 2 Replies Last reply Reply Quote 0
                                • caver01C
                                  caver01 @caver01
                                  last edited by

                                  I can use the secondary shift feature of IPAC to invoke TAB, but if I had a dedicated button I might have configured Player3 or 4 switch 6 or something out of the way like that to be TAB, and wired that to my admin button. I did not really want to have TAB easy to access on my system. I figured I would do most of my configuration with an external keyboard attached, and once everything is setup and working, there is no reason to use tab. For me, my admin buttons are EXIT (esc), Pause (p), and volume UP and Down. You can see in my IPAC that my exit and pause switches double as ENTER and TAB in the secondary shift feature if I ever need them.

                                  My 4-player cocktail style cabinet built as a custom "roadcase"

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    SammyLJ @caver01
                                    last edited by

                                    @caver01 while I could just physically move the wire on the ipac couldn't I just program both buttons to be enter in winipac and it would do the same thing?

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      SammyLJ @caver01
                                      last edited by

                                      @caver01 either i'm getting smarter or you are a good teacher because I completely understood what you said about the tab keystroke. ok will do

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

                                        I also have volume + and - buttons.
                                        Volume + is 4sw7 and Volume - is 4sw8
                                        #Increases audio volume.
                                        input_volume_up = kp_plus
                                        #Decreases audio volume.
                                        input_volume_down = kp_minus

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

                                          so moving forward....
                                          when i'm in emulation station
                                          B = Back
                                          A = Launch
                                          START = menu
                                          SELECT = Options

                                          but 'B' is a player 4 button, 'a' is a player 2 button etc
                                          where do I go to configure those?

                                          Is there any setup to a trackball or is it straight usb plug in and go?
                                          I put a trackball, aim left and aim right buttons just above the trackball for Goldentee. They are 4sw5 and 4sw6. Because those are for 1 game only, I can edit those in the in game control menu.

                                          caver01C 1 Reply Last reply Reply Quote 0
                                          • S
                                            SammyLJ
                                            last edited by

                                            added a bunch of games and tested Player 2 down is "f" and during game play it brings up the runcommand screen. let go of down and it goes back to the game.

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