/arcadeEIP

Arcade Emulator Integration Player

Primary LanguageAutoHotkey

========================================
arcadeEIP 
Arcade Emulator Integration Player
https://github.com/gildahl/arcadeEIP
========================================
Readme.txt for version, 0.4.0.2 beta
========================================

QUICK START GUIDES
==================
See, "Quick Start 1 - MAME.txt" for fast startup with MAME.
See, "Quick Start 2 - MARQUEE.txt" if you have a marquee monitor.
See, \Docs folder for comprehensive documentation and examples.

SUMMARY
=======
arcadeEIP is a custom front-end and launch tool 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
allow my arcade machine to always operate in a walk-up-and-play mode as opposed to the menu-first 
operation of most front-ends. It achieves this by always having a live game running while in standby,
and auto-switching games periodically.  The key feature is that the game you see on the screen is
always playable by just dropping in a token and/or pressing the start button, just like a real 
arcade machine. Manual game selection is supported too, of course, but via a minimalistic overlay
menu allowing fast selection and launch of any game without needing to exit the currently running
game first--something I don't believe any other launcher or front-end supports. arcadeEIP's hotkey
game switching ability also makes it an ideal companion to the Elgato Stream Deck, which can provide
your arcade machine with one of the most unobtrusive front-ends possible.

arcadeEIP can be used stand-alone; however, it also has integrated support for LaunchBox, enabling
you to use LB as a content manager for its game lists, images, and metadata. When used in this way,
arcadeEIP can also be used as either an alternative or supplement to BigBox as your arcade machine's
front-end. Integration with other front-ends is also supported, though not as tightly.

A short overview of arcadeEIP's fuller list of features includes:
* Live attract mode with auto (and manual) game-switching;
* Game list browsing and selection without exiting the currently running game first;
* Direct game switching using hotkeys/hotstrings making it work well with virtual button panels like
  the Elgato Stream Deck;
* Ability to function as a full-feature launching engine for all your games;
* Many conventional 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;
* "Bookend" (i.e. 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;
* Game specific sound volume adjustments;
* Sidecar rom re-directs transparent to front-ends;
* And even a unique command-line front-end tool using simple <system> <title> vectors to run any
  game from any system.

INSTALLATION
============
To install arcadeEIP, create a dedicated folder (e.g. \arcadeEIP or \EIP) and unzip the archive to it. 
If desired, add eip.exe to your system path to allow running it from anywhere.

Next, double-click on create_cfg.bat to create a fresh arcadeEIP.ini configuration file.  This will
also create a file called arcadeEIP_example.ini that contains documentation of all the settings.

Follow the instructions in "Quick Start 1- MAME.txt" to get up and running with MAME quickly. 

DOCUMENTATION
=============
See these guides in the \Docs folder for more detailed information.

  Configuration Reference Guide.pdf  
  Command-Line Reference Guide.pdf
  Rules Reference Guide.pdf

Also see the example configurations for various emulators in the "\Docs\[System] examples" folder.

NOTE ABOUT MAME VERSIONS
========================
Be aware that arcadeEIP relies rather heavily on being able to send virtual keystrokes to emulators. 
Version 0.172 of MAME introduced support for the "-keyboardprovider dinput" parameter that allows it to 
accept such commands. Versions of MAME prior to this will work with arcadeEIP, but not as well.
Therefore, it is strongly advised that for best results with MAME, that you use arcadeEIP with MAME
version 0.172 or higher.

CONTROLS
========
arcadeEIP should work out of the box, using your keyboard and/or a control panel with default 
MAME key mappings. If you are using a control panel with different key mappings, you can configure
arcadeEIP to other mappings via its configuration file, arcadeEIP.ini.

Here is a list of key defaults.

Basic controls - available while a game is playing (relies on correct configuration)
-------------------------------------------------------------------------------
Menu:                 '                Toggle game selection menu
Exit:                 ~                Exits emulator, then arcadeEIP
Magic Key (menu):     .                Toggle game selection menu
Magic Key (exit):     .                Hold 2-3 seconds to exit 
Pause:                ,                Pause emulator.
Previous Game:        [   or q         Go back to previous game in autoplay list
Next Game:            ]   or w         Advance to next game in autoplay list
Lock Game:            Ctrl-Alt-l       Pause/resume autoswitching
Exit (panic):         Ctrl-Alt-k       (Use RIGHT Ctrl-Alt) Exit (during hang, black screen, etc.)

Quick-Switch game picker menu controls (only used when in the menu)
--------------------------------------------------------------------------------
Navigation:           Arrow keys       Can also use mouse/trackball/spinners, or joysticks
Launch                Left-Ctrl        Launch the currently selected game
Favorite              m                Mark (or unmark) game as a favorite
Star Rating           s                Change star rating of a game
List Mode:	      Left-Alt         Toggles "Picks" list for a system or custom list.
Edit Mode:            Left-Shift       Puts a custom list in edit mode for add/remove.
Add/Remove:           Space            Add/remove selected game to/from a "Picks" or targeted custom list.
Add/Remove All:       a                Add/remove all games to/from a "Picks" or tageted custom list

Additional controls used to bulk add/remove games to/from pick lists and custom lists.
---------------------------------------------------------------------------------
Add/Remove by rating        r      Add/remove all games having the same star rating as selected game.
Add/Remove by favorite      f      Add/remove all games having the same favorite marking as selected game.
Add/Remove by genre         g      Add/remove all games having the same genre as selected game.
Add/Remove by year          y      Add/remove all games having the same release year as selected game.
Add/Remove by publisher     u      Add/remove all games having the same publisher as selected game.
Add/Remove by developer     d      Add/remove all games having the same developer as selected game.
Add/Remove by players       n      Add/remove all games having the same number of players as selected game.

Marquee
---------------------------------------------------------------------------------- 
Exit Marquee      Ctrl-Alt-x       Exit Marquee application (if in use)

FILE MANIFEST
=============
eip.exe                      : main arcadeEIP executable
marquee.exe                  : marquee player supporting dynamic marquees
util.exe                     : command line/console utility
license.txt                  : terms of the license.
readme.txt                   : this file
update.txt                   : version update information
sound.txt                    : information about turning on sound effects
Quick Start 1 - MAME.txt     : short guide to setting up MAME with EIP.
Quick Start 2 - MARQUEE.txt  : short guide to using a dynamic marquee monitor with EIP.

Configuration FILE
------------------
arcadeEIP.ini                : main configuration file (intended for user editing)
arcadeEIP_example.ini        : commented configuration file for reference.

OTHER FILES
-----------
.state : record of current list states
.history : record of game play history
arcadeEIP.lic : license file (see license.txt)
arcadeEIP.log : log file, created at runtime
arcadeEIP_fe.log : log file, created by the front-end launcher.
runlast_native.bat: batch file that will run last emulator command line
runlast_eip.bat: batch file that will re-launch last run game

DEVELOPMENT NOTES
=================
arcadeEIP is written in AHK 2.0.

Current development environment is Visual Studio Code using the following extensions:
* AutoHotkey Plus Plus
* AutoHotkey v2 Language Support
* vscode-autohotkey-debug

========================================
arcadeEIP 0.4.0.2 beta
Copyright (c) 2023 by David G. Dahlstrom
https://github.com/gildahl/arcadeEIP