Main > Software Forum
Introducing arcadeEIP
gildahl:
Current Release: arcadeEIP latest release (v0.4.3.0 beta)
arcadeEIP is a custom front-end and launcher I wrote for my arcade machine over a period of several years due to nothing else like it being available. The main reason for writing it was to reduce the amount of "friction" that conventional front ends can add to playing a game. Thus, rather than make a user *always* have to navigate a menu, choose a game, and wait for it to load, I wanted to make the arcade machine *always* immediately playable--more like the way a real arcade machine works--while still supporting game switching as desired.
The answer to this was two-fold: First, make the operation "game-first" rather than "menu-first". Thus, in arcadeEIP there is always a live game running in its *native* attract mode while in standby, This game can be made to change periodically, but the key is that whatever game you see on the screen is always immediately playable by just dropping in a token and/or pressing the start button, just like real arcade machines.
Second, when a user "exits" a game, rather than having to wait for the game to literally exit and then enter another menuing environment, a game selection menu is instead *immediately* shown as an overlay over the current game. When the user selects a new game from this menu, arcadeEIP then exits the current game and loads the new one in a single step, making the game switching experience more like changing channels than changing a DVD. In fact, one does not even need to use this menu to switch games since games can also be hot-switched directly by using an Elgato Streamdeck, dedicated control panel buttons, or even a phone.
arcadeEIP can be used stand-alone; however, it also has integrated support for LaunchBox, enabling you to use LB as a scraper/content manager for its game lists, images, and metadata. You can also pair it with a conventional Front End like BigBox so that arcadeEIP's hot game switching, game-first standby, AND access to a conventional graphical front end can be integrated together to get the best of all worlds (that's actually the way I use it).
A short overview of arcadeEIP's fuller list of features includes:
* Instant gameplay in standby;
* Direct hot game switching via an overlay menu or button device;
* A launcher for all your games in most emulators;
* Standard front end features including run before/after apps, support for loading custom control panel profiles, etc.
* Support for custom lists,metadata, favorites, and star-ratings;
* Display of images such as control panel maps and mame history/mameinfo text on pause;
* Game startup and exit screens;
* Native support for multiple parallel versions of emulators such as MAME;
* Dynamic marquee monitor support with display of high scores on the marquee;
* A custom rules engine;
* Easy command line game launcher.
* All coded in AHK 2.0 and published on GitHub for easy customizability.Lastly, although arcadeEIP isn't technically open source, the source code is available upon request for personal/hobbyist (non-commercial) use and modification.
Here's a general introduction video (a bit long and a very early build, but you'll get the idea :D ):
See MAME Quick Start.txt in the download to get up and running with MAME, then see the documentation for configuring other emulators.
MAME Quick Start (Tutorial #1)
Updated 12/14/2021 - (v.0.3.0.1) Added dynamic marquee feature.
Updated 12/17/2021 - (v.0.3.0.2) Basic support has been added for hi2txt.
Updated 1/4/2022 - (v.0.3.1.0) Big update. Added formal BigBox support and several important bug fixes.
Updated 1/11/2022 - (v.0.3.1.1) Small update with bug fixes for BigBox and an enhancement for high scores.
Updated 1/13/2022 - (v.0.3.1.2) Important update with support for images (like control maps) on pause, fix for missing icons in game menu, etc.
Updated 2/09/2022 - (v.0.3.2.0) Major update with support for more information on pause, and critical bug fixes.
Updated 2/16/2022 - (v0.3.2.1) Important update with full support for the Elgato Stream Deck. See the following video demonstration.
Updated 5/17/2022 - (v0.3.3.0) Major update. Please do full/from scratch re-install since much has changed. See update.txt for details.
Updated 7/04/2022 - (v0.3.3.1) Hotfix. Fixed discrete menu toggle feature (= and - now work again).
Updated 2/16/2023 - (v0.3.3.2) Hotfix. A couple minor bugs fixed (re-posted 2/27).
Updated 2/28/2023 - (v0.3.3.3) Small feature update. Added discrete quit_key= setting for improved Stream Deck support.
Updated 5/19/2023 - (v0.4.0.0) Ported AHK code from 1.1 to 2.0. Moved source to GitHub (new release location).
Updated 5/24/2023 - (v0.4.0.1) Hotfix: Added missing icon files to ..\Resources\Icons needed for marking favorites and star ratings.
Updated 7/11/2023 - (v0.4.0.2) Feature and Documentation update. Added volume normalization, game lock, better LEDBlinky support, bug/doc fixes.
Updated 1/28/2024 - (v0.4.1.0) Major update with many bug and stability fixes, the additon of manual high score entry, better hot switching, many quality of life changes, etc.
Updated 3/19/2024 - (v0.4.2.0) Major release. Stability fixes, XInput, Scorecard improvements, MAME pre-filtering, Favorites/Star-Ratings import.
Updated 9/6/2024 - (v0.4.3.0) Major release. Stability fixes, custom images while browsing, MAME start-up state overriding.
Current Release: https://github.com/gildahl/arcadeEIP/releases
Documentation: https://github.com/gildahl/arcadeEIP/wiki
Discussion: Here on ArcadeControls.com, LaunchBox forums or GitHub
Raktageno:
This looks really well done. I'm wondering if it would work for my current project whose focus is minimalism. That is to say a small list of only MAME titles, one simple frontend, minimal buttons on control panel (joystick, trackball, three main buttons, pause/exit button, and p1 and p2 buttons), and a dynamic marquee. Without having done more research, I would assume that the dynamic marquee is part of the frontend. Would EIP support this?
Additionally, this appears to require command line entry. For an end user experience, is this necessary? I would not want players requiring keyboard access.
gildahl:
It sounds like a potentially good use case for arcadeEIP, since it does take a decidedly minimalistic approach--and if it is just mame, it should be quite simple to configure. By a dynamic marquee, I'm assuming that you mean you'll have a separate screen in the marquee area of the cabinet. I didn't test anything like that, but I suspect you could do this using a runapps configuration. I could certainly help you out to see how best to handle that.
Regarding command-line entry, that's just how you start it up (like any app really). You can either start it with a specific game from a command prompt, windows shortcut, or from any other piece of software that can run a command-line; or you can launch it with no game specified in which case it will launch with a "seed" game. From there it will run and remain resident for as long as you like, auto-switching your game list (if you have that turned on) or allowing users to switch games on-demand using either hot keys on your control panel or via the quick-switch game menu--which is essentially, a very minimalistic front-end (or perhaps "back-end" would be a better term for EIP). There is absolutely no requirement for users to have keyboard access since all essential functions can be mapped to a control panel.
Raktageno:
Now I am enticed. You are correct about the dynamic marquee. I have done no research on it, but my current project is essentially copying this one. The creator of that project notes Attract Mode, HyperSpin, or BigBox all have that ability, and I believe they ended up using BigBox. My current progress will require determining how to make that marquee happen and the dimensions of the display to allow me to complete cutting and assembly.
I would like simplicity in startup, meaning when the machine is powered, it would load directly to either frontend or the seed in attract mode, which sounds doable with your architecture. I really like your focus on attract mode.
gildahl:
Yup, I see. Cool. So no support for dynamic marquee specifically at the moment, but would be a nice feature to add--I can think of a couple ways I could probably integrate that capability.