Attract-Mode Plus is a graphical frontend for launching command-line emulators. It offers robust list filtering capabilities, and employs a versatile scripting language to showcase an extensive range of image, video, and audio formats. Compatible with Windows, Linux (x86, x86-64, ARM, Raspberry Pi), and Mac OS X.
[Releases](https://github.com/oomek/attractplus/releases)
• [Manual](./Manual.md)
• [Discord](https://discord.gg/86bB9dD)
• [Coding Reference](./Layouts.md)
• [Compiling](./Compile.md)
• [WIP](https://github.com/oomek/attractplus/actions)
> Attract-Mode Plus is a fork of [Attract-Mode](https://github.com/mickelson/attract), enhanced by numerous community-driven improvements, fixes, and features. Licensed under the terms of the GNU General Public License, version 3 or later.
---
# ⏱️ Quickstart + Mame + Windows
Attract-Mode Plus is a blank canvas that requires external assets to operate effectively.
> Although `Snaps` are essential, `Videos` greatly enhance the frontend experience.
- 👾 Application - _Emulators and Roms to launch_
- [Attract-Mode Plus](https://github.com/oomek/attractplus/releases) - extract to `C:\attract-mode-plus`
- [Mame](https://www.mamedev.org/release.html) - extract to `C:\mame`
- [Roms](https://www.mamedev.org/roms/) - place in `C:\mame\roms`
- 🎨 Artwork - _Images and Videos to show_
- [Snaps](https://www.progettosnaps.net/snapshots/) - extract to `C:\mame\snap`
- [Videos](https://emumovies.com/files/file/2214-mame-arcade-video-snaps-pack-3862) - extract to `C:\mame\video` - _Standard Quality_
- [Logos](https://emumovies.com/files/file/1969-mame-game-logo-pack/) - extract to `C:\mame\wheel`
- [Marquees](https://emumovies.com/files/file/551-mame-marquees-pack/) - extract to `C:\mame\marquee`
- 📚 Additional - _Category, Series, Languages, and Players information_
- [catver.ini](https://www.progettosnaps.net/catver/) - place in `C:\mame\folders`
- [series.ini](https://www.progettosnaps.net/series/) - place in `C:\mame\folders`
- [languages.ini](https://www.progettosnaps.net/languages/) - place in `C:\mame\folders`
- [nplayers.ini](https://nplayers.arcadebelgium.be/) - place in `C:\mame\folders`
> [!TIP]\
> Select - `Up/Down`\
> Accept/Back - `Return/Escape`\
> Configure - `Tab`\
> Fullscreen/Window - `F11`
- 🚀 Launch `C:\attract-mode-plus\attractplus.exe`
- 🌏 Select your language
- 📡 Auto-detect emulators > `Yes`
- 💾 Found 1 emulator > `Import`
- 🎉 **_Attract-Mode Plus is ready to play!_**
---
# ⚙️ Basic Configuration
[Controls](#️-controls)
• [Emulators](#️-emulators)
• [Romlists](#-romlists)
• [Artwork](#-artwork)
• [Displays](#️-displays)
• [Filters](#-filters)
• [Global Filters](#-global-filters)
• [Favourites](#-favourites)
• [Tags](#️-tags)
• [Layouts](#️-layouts)
• [Plugins](#-plugins)
• [Modules](#-modules)
• [Displays Menu](#️-displays-menu)
• [Clones](#-clones)
• [Files](#-files)
• [Updates](#-updates)
> Fine-tune Attract-Mode Plus to fit your needs.
## 🕹️ Controls
Configure the input bindings to suit your device - navigation is a good place to start.
- Configure > Controls
- Previous / Next Page - _Scroll by an entire page_
- Previous / Next Letter - _Skip to the next letter_
- Previous / Next Filter - _Switch between Filters_
- Previous / Next Display - _Switch between Displays_
- Displays Menu - _Toggle the Displays Menu_
> Hold multiple keys to create combos.
>
> 🔍 `C:\attract-mode-plus\config\attract.cfg`
## 🛠️ Emulators
Emulators specify how Executables run Roms.
- Configure > Emulators > `mame`
- Executable > `C:\mame\mame.exe`
- Command Arguments > `[name]`
- Working Directory > `C:\mame`
> Launches `C:\mame\mame.exe [name]` where `[name]` is substituted with the selected Romlist entry name.
>
> 🔍 `C:\attract-mode-plus\emulators\mame.cfg`
## 📜 Romlists
Romlists are created by scanning `Rom Paths` for files matching `Rom Extensions`.
- Configure > Emulators > `mame`
- Rom Path(s) > `C:\mame\roms`
- Rom Extension(s) > `.zip;.7z`
- Info Source/Scraper > `listxml`
- Additional Import File(s) > _`your;ini;files;here`_
- Generate Collection/Romlist - _Rebuild the Romlist_
> `Additional Import Files` and the Mame-only `listxml` scraper augment the Romlist to support advanced Filtering.
>
> 🔍 `C:\attract-mode-plus\romlists\mame.txt`
## 🎨 Artwork
Artwork is associated with Romlist entries that have matching names.
- Configure > Emulators > `mame`
- snap > `C:\mame\snap;C:\mame\video`
- marquee > `C:\mame\marquee`
- wheel > `C:\mame\wheel`
> `Configure > Emulators > mame > Scrape Artwork` can import some artwork, but with reduced control over the results.
>
> 🔍 `C:\attract-mode-plus\scraper\mame`
## 📽️ Displays
Displays determine what the frontend presents to the user.
- Configure > Displays > `mame`
- Layout > `BasicPlus` - _The Theme_
- Collection/Romlist > `mame` - _The Roms_
- Filter > `All` - _The Lists_
> Multiple Displays can share the same Romlist, each with its own Layout and Filters.
>
> 🔍 `C:\attract-mode-plus\config\displays.cfg`
## 🔬 Filters
Filters are rule-sets that organise Romlists into concise, structured Lists.
- Configure > Displays > mame
- Add Filter > `The 90's`
- Add Rule
- Target > `Year`
- Comparison > `contains`
- Filter Value > `199`
> `Filter Value` is a [regular expression](https://en.wikipedia.org/wiki/Regular_expression) that matches Romlist fields.
>
> 🔍 `C:\attract-mode-plus\config\displays.cfg`
## 🔭 Global Filters
Global Filters refine the Romlist for the _entire_ Display.
- Configure > Displays > mame
- Global Filter
- Add Rule
- Target > `Category`
- Comparison > `does not contain`
- Filter Value > `Mahjong`
> Use to exclude Roms from all Filters within the Display.
>
> 🔍 `C:\attract-mode-plus\config\displays.cfg`
## ⭐ Favourites
Displays are created with two Filters, one of which is a "Favourites" List.
- `All` - _Show all Roms in the Romlist_
- `Favourites` - _Show favourite Roms in the Romlist_
> Use the `Add/Remove Favourites` control to toggle a Rom's "Favourite" status.
>
> 🔍 `C:\attract-mode-plus\romlists\mame.tag`
## 🏷️ Tags
Custom Tags can be added to Roms, allowing Filters to generate personalised Lists.
- Configure > Displays > mame
- Add Filter > `Party Games`
- Add Rule
- Target > `Tags`
- Comparison > `contains`
- Filter Value > `party`
> Use the `Add/Remove Tags` control to add a Tag named `party` to your Roms.
>
> 🔍 `C:\attract-mode-plus\romlists\mame\party.tag`
## 🎞️ Layouts
Layouts are themes that define the appearance and behaviour of a Display.
- Configure > Displays > mame
- Layout > _`Select a Layout`_
- Layout Options > _`Varies by Layout`_
> Layout Options belong to the Layout - they are common to all Displays that use it.
A multitude of Layouts can be found on [Discord](https://discord.com/channels/373969602784526336/1145679917808353370) or the [Forum](http://forum.attractmode.org/index.php?board=6.0).
- While some explore [technical possibilities](https://discord.com/channels/373969602784526336/1145679917808353370/1379329222782484500), others are [total conversions](https://discord.com/channels/373969602784526336/1145679917808353370/1145684611863674930).
- A select few are [passion projects](https://discord.com/channels/373969602784526336/1194713309430173766/1357592010462335046), featuring hand-crafted Layouts for close to a *thousand* individual Games.
- With some basic coding you can even [create your own!](./Layouts.md)
> As community-generated content, Layouts can vary in quality.
>
> 🔍 `C:\attract-mode-plus\layouts`
## 🔌 Plugins
Plugins run _atop_ the Layout, providing additional features across all Displays.
- Configure > Plugins > SearchPlus
- Enabled > `Yes`
- Show > `Custom1` - _The control that shows the Keyboard_
> Use the `Plugin Options` control to configure the last viewed Plugin.
>
> 🔍 `C:\attract-mode-plus\plugins`
## 📦 Modules
Modules are shared libraries that provide functionality to Layouts. Popular Modules such as `inertia`, `animate`, and `wheel` are bundled with Attract-Mode Plus.
> Modules do not require enabling. If a Layout isn't working, run `attractplus-console.exe` to inspect console warnings. Refer to the Layout's Readme for information about required files.
>
> 🔍 `C:\attract-mode-plus\modules`
## 🏟️ Displays Menu
The `Displays Menu` can be configured to use a Layout. Setting it to show on startup makes it the "root" Menu to which other Displays return.
- Configure > Displays > Displays Menu Options
- Layout > _`Select a Layout`_
- Configure > Settings >
- Startup Mode > `Show Displays Menu`
> Artwork for the `Displays Menu` must match the `Display` or `Romlist` name, located in the `menu-art/` subfolder.
>
> 🔍 `C:\attract-mode-plus\menu-art\snap\mame.png`
## 🐑 Clones
Rom clones are grouped into sub-menus, which are opened by selecting the Rom.
- Configure > Settings >
- Group Clones > `Yes`
> Use the `Back` control to exit the clone sub-menu.
## 📁 Files
Configuration files can be edited while Attract-Mode Plus is running.
> Close the menu to avoid changes being overwritten by the frontend. Preserve the file's formatting to ensure it remains readable.
>
> Use the `Reload Config` control to reload all configuration files.
## 📬 Updates
A notification will appear at startup whenever an update is available. Visit the [Releases](https://github.com/oomek/attractplus/releases) page to download it.
> Extract the new version over your existing files - your configuration will remain intact.