A macOS front-end for MAME. Browse your ROM library, view control panel artwork, read game history, manage save states, and launch games — all from a clean master-detail UI backed by a local Flask server and a pywebview window.
- Virtual-scrolling ROM list with search by title, publisher, year, or genre
- Detail panel: control panel artwork, history notes, save states, per-game notes
- Control panel art from local artwork zips, URL fetch, or local image file
- Lightbox zoom on artwork images
- MAME keyboard reference sheet
- ROM import via drag-and-drop or file picker
- Safe ROM deletion with optional save-state cleanup
- Background library init with progress stream
- macOS (uses WKWebView via pywebview)
- MAME installed and working
- Python 3.11+
git clone https://github.com/fortunesmith/mame-frontend.git
cd mame-frontend
python3 -m venv venv
venv/bin/pip install -r requirements.txtSet the path to your MAME directory:
export MAME_DIR=~/path/to/mameThe default is ~/DEV/playground01/mame. Add the export to your shell profile to make it permanent.
Place these in your MAME directory for full functionality:
| File | Purpose | Source |
|---|---|---|
catver.ini |
Genre metadata | progettosnaps.net |
history.xml |
Game history notes | arcade-history.com |
artworkdb/ |
Cabinet artwork zips | arcadeartwork.org |
snap/ |
Gameplay snapshots (PNG, named by romname) | Various |
venv/bin/python -m mame_selector.mainvenv/bin/python setup.py py2app
# Output: dist/MAMESelector.appmame_selector/ Flask app + library logic
frontend/ HTML/CSS/JS (served by Flask, rendered in WKWebView)
setup.py py2app packaging config