Install and Launch Multiple Versions of MAME for 3 sided Cocktail Arcade
-
Hi there,
My basic question is: Can I have multiple copies of the same MAME version, each with slightly different MAME .ini files, and different per game configs, and launch them from the RunCommand menu? My ideal scenario is to have the RunCommand menu show two emulator options when you choose the "Select Emulator for ROM" item: 1) MAME (Horizontal), and 2) MAME (Vertical)
Some details on my scenario: I am new to Retropie but not to MAME and arcade emulation. I custom built a three sided, 4 player controls cocktail table. At the long side are player 1 and 2 controls, with a joystick and six buttons for each player. On the two short ends, it's like a traditional arcade cocktail table, a joystick and 3 buttons at each end. There are buttons for player 1 and 2 start, and coin 1 + 2 on the horizontal side, and similar buttons on the player 1 short end for the vertical mode. I am using an Ultimarc I/O USB for the Horizontal P1 and P2 side controls, and a xinmo zero-delay USB keyboard controller on each short end's controls.
I've previously used a Windows laptop in the game with LaunchBox to browse and play arcade and some console games, and while this was easy to setup and configure the way I wanted it, overall the constant Windows and Launchbox updates, slow boot times, lag from other windows processes, and slowness browsing the large amount of games just got in the way of actual playing. So I got a Pi4, and the 4.7 version of Retropie, and have been configuring it for Mame 2003-Plus.
What I liked about my windows implementation was that I could create multiple Emulators in LaunchBox, I could customize the Emulator display name and emulator location, associate the emulator with a Platform (like Arcade, NES, SNES, etc) and then with a right-click on any ROM, I could choose to launch with any version of the configured emulators associated to this platform.
For MAME, I installed the same version of MAME in two different folders (one called "C:\Emulators\MAME Horizontal", and one folder called "C:\Emulators\MAME Vertical"). I created two corresponding emulators in Launchbox, with the same names. And so when right-clicking on an arcade ROM, I could choose to launch in either "MAME Horizontal" or "MAME Vertical". All my ROMS were stored in a completely different folder (C:\ROMS). I edited the ini file of each version of MAME to point to the single ROMS folder. I also edited the Vertical version of MAME.ini to rotate the games 90 degrees for the vertical cocktail TATE mode.
This gave me lots of flexibility:
- I could choose to launch a game in either vertical or horizontal mode, and if I made any per-game settings in the MAME menu, they would be saved in each respective MAME folder. If I launched Ms PacMan in my Vertical MAME instance, for example, I could hit Tab, set the dip switch to Cocktail Mode, and that game would launch rotated in TATE mode and do cocktail flipping from that point forward. That setting wouldn't affect the game if I launched it with Horizontal MAME because that would have a different per-game setting.
- I could setup my controllers unique to each MAME installation. For Vertical MAME, I could map player 1 and 2 inputs globally to the joysticks and buttons on the cocktail's short sides. For horizontal MAME, I could map player 1 and 2 inputs to the sets of controls on the long end of the table. I could even configure the inputs on the short sides as player 3 and 4 for 3 and 4 player horizontal beat em ups like TMNT.
- I can further customize my controller configuration per game to do things like handle double joystick games (Black Widow, Robotron, etc) using the 1 and 2 player joysticks together on the horizontal side.
- I can play two player simultaneous vertical shooters with a buddy (like 1943) on the horizontal side by launching with Horizontal MAME. These games don't really work well in cocktail mode, you need to be standing/sitting side by side with your co player.
I can't see how to accomplish the same thing with RetroPie and Retroarch, so I have a couple of questions.
- Can I install lr-mame2003-plus twice, just in different folders? If there isn't a UI-based way to do this, can I do this manually?
- Can I remove other mame cores I don't want so they don't appear in the RunCommand menu.
- Can I rename the emulators so they appear with a friendly name in the RunCommand window? Honestly "lr-mame2003" means absolutely nothing useful to people that come over to my house and just want to play some games at a party. I want to see "MAME (Vertical)" and "MAME (Horizontal)" as the only options to launch these.
- Can I have Retroarch be "hands-off" my controller configurations for MAME? I'm not using a retropad, I have dedicated arcade joysticks and buttons. I just want it launch MAME, and have me configure the controller inputs for MAME myself, I don't want it to pass my controller configuration to the emulator, or have fixed video settings for the emulator. I would just rather do that myself in the MAME.ini. In this respect it seems that Retroarch is just getting in the way of me just using the emulator as I please, as it is wrapping it in a Core, making assumptions about what I want to to pass into the core, and preventing me from the adjusting the emulator as I see fit. I don't want it to configure Port1 and Port2 and popup messages when I start games that it mapped the xinmo to Port 1, etc.
- Is there a way to have the Run Command window honor the "A" button that I configured in Emulation Station as the Enter Key? We have this nice UI in ES where I can use the joystick to move around and the "A" button to select and launch things, and then as soon as I get into the RunCommand window, to click "OK" requires the Enter key, and I need either some hotkey combination or a keyboard or a totally different button mapped.
- Are there any plans to make the RunCommand window look nicer or be integrated into EmulationStation UI? It's really bad UX to go from this nice slick interface to this UNIX terminal visual.
Sorry for the long post, hopefully you all get the gist and have some recommendations.
-
Can I install lr-mame2003-plus twice, just in different folders? If there isn't a UI-based way to do this, can I do this manually?
Technically yes, but that won't accomplish what you need, since they'd share the same configuration.
Can I remove other mame cores I don't want so they don't appear in the RunCommand menu.
Yes, just uninstall the emulator - see https://retropie.org.uk/docs/Updating-RetroPie/#updatinginstalling-individual-packages.
Can I rename the emulators so they appear with a friendly name in the RunCommand window? Honestly "lr-mame2003" means absolutely nothing useful to people that come over to my house and just want to play some games at a party. I want to see "MAME (Vertical)" and "MAME (Horizontal)" as the only options to launch these.
You can, just edit the
emulators.cfg
in/opt/retropie/configs/<system>
, where<system>
is the ROMs folder that you use for arcade emulation, could bearcade
ormame-libretro
. You can add a friendly name instead oflr-mame2003
, the default name will be added back when you update, but won't overwrite your configuration or the default emulator you've chosen.The
runcommand
menu is not to be used/started each time you start a game, so I don't see a problem when other users are playing. You use it to configure (if ever) the emulator/resolution, then it's just informative, you can even disable it and choose to display a launch image instead.Can I have Retroarch be "hands-off" my controller configurations for MAME? I'm not using a retropad, I have dedicated arcade joysticks and buttons. I just want it launch MAME, [..]
For Mame2003 and (Mame2003 plus) you can choose from the core options in RetroArch to use the Mame native input ,which you can configure in the Mame menu, but you don't have 100% control over the
mame.ini
as you'd have in a standalone installation. Themame.ini
location is also automatically set, so you can't change it.If you're more familiar with standalone Mame, then you can use one of the standalone arcade emulators, like
advmame
ormame
itself, which you can install on RetroPie from the setup menu. The advantage they have is you can point them to different configuration files, configuring different launch options inemulators.cfg
, though that's available also if you're using a libretro based Mame core.For instance, if you want to have different emulators for Vertical/Horizontal for the games in
arcade
, you can modifyemulators.cfg
and add:# copy the `lr-mame2003` entry and rename it Mame2003-Horizontal = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-mame2003/mame2003_libretro.so --config /opt/retropie/configs/arcade/retroarch.cfg %ROM%" Mame2003-Vertical = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-mame2003/mame2003_libretro.so --config /opt/retropie/configs/arcade/retroarch_vert.cfg %ROM%"
then configure the appropriate options for a vertical screen in
/opt/retropie/configs/arcade/retroarch_vert.cfg
.
Use theruncommand
to associate ROMs to emulators during start-up (has to be done only once), or if you switch the display, change the default emulator (also only once) from the same menu.Similarly, you can modify
emulators.cfg
for standalone emulators and have them start with a different configuration file# Standalone Mame mame = "/opt/retropie/emulators/mamedev/mame %ROM%" # Standalone Mame, rotate screen right cloclwise. mame = "/opt/retropie/emulators/mamedev/mame -rol %ROM%"
Is there a way to have the Run Command window honor the "A" button that I configured in Emulation Station as the Enter Key?
Not right now. If your controllers are configured as keyboard devices (and not as gamepads), the remapping that ES provides is not translated into the Runcommand or RetroPie-Setup - it's only gamepad devices that are handled.
Are there any plans to make the RunCommand window look nicer or be integrated into EmulationStation UI? It's really bad UX to go from this nice slick interface to this UNIX terminal visual.
Not right now, though the text interface is not something that you use every day, it's only during configuration or administration that you need to start it.
-
@mitu Thanks for the detailed reply! That gets me most of the way there I think with the emulators.cfg adjustments for the friendly names.
Would those be treated as multiple cores for core overrides and remaps? Could Mame-Vertical have a different controller remap? Or meaning, if I launched Mame-Vertical, hit the tab menu, chose Input (General) and made controller adjustments, would those also affect Mame-Horizontal launched games or would they be stored in an independent core remap/override file for just that emulator?
What I would still be missing I think is a per-game-per-emulator setting, like the cocktail DIP switches. For example if I wanted to launch 1942 in Mame-Vertical with a vertical config, go into MAME Tab menu, set the game dipswitch of Cocktail/Upright to cocktail, it would create a game-based override which would also affect the game if I were to launch it with MAME-Horizontal. Sometimes gaming sessions we get lazy and don't want to switch to the cocktail sides after launching a game, and would prefer to launch the vertical game and play it from the horizontal side. In this case I wouldn't want cocktail flipping. But that's a minor annoyance I think I can live with.
I also had another lingering question - The lr-mame2003-plus documentation makes mention of an input mode called "mame_keyboard", along with "retropad" and "simultaneous", but I don't see this option anywhere. Was this renamed to just "keyboard" instead of "mame_keyboard" adn the docs are out of date?
https://docs.libretro.com/library/mame2003_plus/#keyboard-input -
@adamtoth said in Install and Launch Multiple Versions of MAME for 3 sided Cocktail Arcade:
Would those be treated as multiple cores for core overrides and remaps?
No, they're not treated as different cores.
You can change the remap folder in theretroarch_vert.cfg
to point to a different folder and the remaps would be stored separately. By default, the remap folder is the same as the config folder (i.e./opt/retropie/configs/<system>
).If you do the remap from the Mame menu though, that's a per-game config which is saved in the core sub-folder and it would be applied to both emulator entries.
What I would still be missing I think is a per-game-per-emulator setting, like the cocktail DIP switches. For example if I wanted to launch 1942 in Mame-Vertical with a vertical config, go into MAME Tab menu, set the game dipswitch of Cocktail/Upright to cocktail, it would create a game-based override which would also affect the game if I were to launch it with MAME-Horizontal.
That's not going to work if you're using the multiple-emulators-but-same-core configuration, since those settings are stored in a nvram file that's unique per-core + game.
In general, you should choose a configuration approach and stick to it, either:
- use different entries with the same core, but any settings need to be done from RetroArch and not using the Mame's internal menu/service menu
- use different cores for each 'emulator' (Mame 2003 for vertical, Mame2003-plus for the other) and have the Mame internal settings separately.
I also had another lingering question - The lr-mame2003-plus documentation makes mention of an input mode called "mame_keyboard", along with "retropad" and "simultaneous", but I don't see this option anywhere. Was this renamed to just "keyboard" instead of "mame_keyboard" adn the docs are out of date?
It's part of the Core Options , under Input Interface, I think it was renamed to just keyboard.
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.