Arcade control panel mapping questions
-
Hey guys
I've been told to ask here from reddit since you may know better.
This is my first adventure in retropie and raspberrypi.I'm in retroarch trying to configure my control panel to work properly.
input_player1_a = "a"
input_player1_b = "b"
input_player1_y = "y"
input_player1_x = "x"
input_player1_start = "1"
input_player1_select = "rshift"
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 = "quote"
input_player1_r2 = "rctrl"
input_player1_l3 = "k"
input_player1_r3 = "i"l2, l3, r2, r3 and select are not in use on my control panel. So can I delete that line of code if it not in use?
now I also have "menu" buttons on my panel for enter, pause, exit and settings(menu). Ho do I go about programming those?
-
also I need coin button options as well
-
@sammylj you do not give any information about what your control panel consists of? Is it a decoder? An ipac? Does it read keyboard inputs for example?
-
yes it is an ipac4
-
@sammylj Well with an ipac you can assign any function you like to any switch you have as the ipac is basically appearing as a keyboard. So for me:
input_player1_start = "num1" input_player1_select = "num5"
So here, coin is essentially 5 on a keyboard - the MAME default. Now this whole thing can either be simple to you and it works or you will have issues. I suggest that you read this. It's a good overview.
-
@sammylj Also, if you look at the code table, you will learn about the ipac built in shift feature. So if you hold Player 1 Start and flick your joystick to the right, it's TAB.
-
Thanks for taking the time to help!
So I had read that before and I have used the "5" as player 1 coin and I also have 1 as player 1 start.I guess where i'm getting confused is not so much the individual player buttons but more so the extra function buttons. So across the top of my control panel I have 4 buttons. Enter - Pause - Exit - Settings
I would like to use these to navigate the anything not in game. I used WinIPAC from Ultimarc to code Enter as Enter, Pause as p, Exit as escape and Settings as TAB. So can I code it so that the enter button does that menu selecting function instead of A.Also in retroarch, can I just delete the lines that have programming for buttons I do not have IE: L2, R2, L3, R3
-
@rbaker right but instead of using the shift function can I just use my "settings" button on my control panel that has been programmed in WinIPAC as TAB.
maybe my brain isn't wrapped around this exactly. So here how I thought it out.
Settings button on control panel is wired to P3SW8 on the IPAC
P3SW8 is programmed to TAB in Ultimarc -
-
@rbaker its a control panel designer to assign buttons
now here's a strange twist. I just tried the game 1943 and my 4 menu buttons worked but my player buttons did not. I had to go into the menu and program player one and two player buttons.
so when I hit my exit button on the top of the control panel it exits out of the game. but when I get back to the list of roms in the MAME section, the only button that does anything is enter which pulls up the "Main menu" with scraper, sounds settings, ui settings etc etc.exit still does nothing. -
@sammylj I use IPAC4 with dedicated buttons for Pause and Exit. We should definitely be able to get you sorted, but we need more detail from you to make sure we are all on the same page. For example, what we are talking about are RetroArch key mapping. This is only applicable to libretro core emulators. What EXACT emulator are you using? For instance, if you are using lr-mame2003, then let's proceed. Otherwise, there are other factors. Standalone emulators don't use retroarch keymaps at all, so we would be wasting our time. Can you confirm what EXACT emulator you are using? By that, I mean, you cannot just say MAME, as there are like nine MAMEs in RetroPie.
-
@sammylj Assuming we are on the same page, it is important to understand that SELECT = COIN. You won't find a 'coin' input in retroarch, but for emulators that use coins, it is the SELECT input that gets used. SELECT is obviously an important button on home consoles (e.g NES) and you will need to press it to do certain menu functions in Emulation Station, but if we are talking arcade games, you will need a way to drop coins, and SELECT is what gets used for that input. This is why Select should be mapped as
input_player1_select = "num5"
and on your IPAC, it should be wired to Player1COIN. Number 5 is the MAME default for Player 1 insert coins, so this should be how the IPAC is configured by default.Also, make sure you are wiring your player buttons to SW1 through SW6. This will correspond to MAME defaults for what RetroArch calls 'A,B,X,Y,L,R'. Don't use the IPACs AB buttons for player buttons. You could use them for your dedicated admin functions at the top however, as they are usually setup for those inputs by default anyway.
You could leave l2,l3,r2,r3 empty in retroarch, or better yet, set them
= "nul"
to explicitly NOT map them.Finally, since you already have your admin buttons setup to use Enter, P for pause, Esc, and TAB, you just need to decide how you want to use them in the emulator. lr-mame2003 will see raw key inputs AND it will see the retroarch inputs as virtual gamepad inputs. This is a but hard to understand at first but imagine every time you push UP, MAME sees the UP key getting sent by the IPAC, and MAME also sees a virtual joystick UP getting sent from your retroarch mapping AT THE SAME TIME. It is like you are controlling two joysticks together as one. These dual inputs are not normally a problem. The admin functions are a little different. For example, if you press TAB (via your corresponding admin button) MAME will see the raw TAB key, and nothing else. Retroarch does not send any inputs in this case because TAB is not mapped to anything in RetroArch. Pause on the other hand is a little more confusing. If you set
input_pause_toggle = p
in Retroarch, pressing your pause button will send the RAW "P" key to MAME from the IPAC which should tell MAME to pause, but Retroarch will also attempt to pause the emulator itself. Which pause function wins? Well, it is confusing, because they will compete. First one will pause, then pressing it again will unpause one but let the other pause work finally, then press it again and it will unpause one but pause the other, etc. It is a bit unpredictable as MAME and Retroarch both try to pause. I would recommend either setting theinput_pause_toggle = "nul"
and leaving it to MAME to interpret your raw keyboard key, or leave the retroarch pause as P and remap the pause function inside MAME using the TAB menu to some key you are not using (like a numeric keypad key using an external keyboard). That is what I did because I want to use the RetroArch pause feature in case I am going to try to pause another libretro core emulator. I also like how RetroArch dims the screen and freezes the action as opposed to MAME which seems to just blackout.Finally, Escape for exit might be double mapped as well. This is not as big of an issue because each case will get you out of the emulator, but since you have the dedicated button like me, you might consider looking for these retroarch settings:
input_exit_emulator = escape # input_enable_hotkey = # input_enable_hotkey_btn =
With the second two lines commented out with # in front this disables hotkeys. Maybe you still want them for save states or something, but I have hotkeys disabled. This way, a press of your exit button sends ESCAPE and the first line here tells any libretro core to exit.
Or, if you want to be explicit about disabling hotkeys, uncomment them and set to "nul".
One more thing you might do is go through the entire retroarch.cfg file and see if any functions are mapped to keys that conflict with your setup. If I recall, I had a handful of functions like a turbo feature, or rewind, or next/prev shader that were set to keys I needed for player 3 or 4 controls. You can remap these to other keys on the keyboard that are unused, or set them to "nul" if you don' care.
-
@caver01 I downloaded the mame 0.78 romset. As far as which emulator I am using, im not sure. I can tell you that I have tried the roms in both the arcade folder and the mame-libretro folder. The roms work in both folders but once I open the rom I have to edit the inputs for each game. I have tried the Input(general) UI cancel to my escape but once I get into the game I cant get out.
I wish I could give you a more definitive answer on the emulator question. -
@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" -
@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.
-
@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.
-
@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/.
-
@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.
-
@mitu thanks for the help, the reading helped understand a bit more
-
@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.
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.