Arcade control panel mapping questions
-
@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.
-
-
@mitu will do, thanks
rebuild a car engine, no problem
build a house, no problem
wrap my noodle around computer programming, error -
@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:
- Ultimarc IPAC -- this is the first, and most important, as this defines what raw keystrokes your switches generate.
- 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.
- 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).
-
@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 = downinput_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 = finput_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 = kinput_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 = nhow we looking so far?
so last thing would just be the enter button on the panel. -
and settings button
-
@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. -
@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:
-
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.
-
@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?
-
@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
-
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 -
so moving forward....
when i'm in emulation station
B = Back
A = Launch
START = menu
SELECT = Optionsbut '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. -
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.
-
@sammylj no that cannot be Runcommand. Maybe retroarch GUI menu? Check your retroarch.cfg to see if f is mapped to something.
-
@sammylj said in Arcade control panel mapping questions:
so moving forward....
when i'm in emulation station
B = Back
A = Launch
START = menu
SELECT = Optionsbut 'B' is a player 4 button, 'a' is a player 2 button etc
where do I go to configure those?You are confusing a gamepad A and B with keyboard keys. In Emulation Station, these refer to the player1 gamepad buttons.
Is there any setup to a trackball or is it straight usb plug in and go?
Read this documentation. There is a whole section I wrote about spinners and trackballs. It is not hard to setup. Mostly plug and play, some configuration.
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.
-
@caver01 so when in game, if I hold down on player 2(which is f) the screen goes black and the grey box comes up in the middle. It says...
Launching avps (lr-mame2003) ...
Press a button to configure
Errors are logged to /dev/shm/runcommand.logThe only thing I see mapped to f isn't active
#Toggles fullscreen.
#input_toggle_fullscreen = fshould I send you my cfg file so you can look at it, maybe i'm missing something
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.