Ants Projects Hub
← All projects

Live

MAME Curator

Picks the best playable arcade games from a MAME set.

LiveWEBLatest: v1.2.0 ·

A full MAME set is about 43,000 machines. Roughly 26,000 of those are arcade games once the BIOSes, circuit boards and non-arcade oddities are stripped out, and most of the remainder are near-duplicates: the Japanese revision, the bootleg, the prototype, the version with the copyright text in a different corner.

Nobody wants 26,000 arcade games. They want the good ones, once each.

MAME Curator does that sorting for you, then lets you argue with its choices.

What it does

  • Reads your MAME set and its DAT file — about 48 MB and 43,000 machines, parsed in around five seconds.
  • Drops what is not a game — BIOSes, devices, computers, and the mahjong, casino and adult machines — using community reference data.
  • Picks the best version of each game from its family of clones, by a fixed chain of rules: community ratings first, then parent over clone, then how well the driver is emulated, then region, then revision.
  • Lets you overrule it. Click any game to see its siblings side by side with cover art and screenshots, and swap the pick with one click.
  • Saves a curation as a named session — a year range plus preferred genres, publishers and developers — so 80s shooters and co-op only are two clicks apart rather than a rebuild.
  • Copies the winners out, along with any BIOS files they need, to a separate folder. Your source set is never touched, and replaced files go to a recycle bin rather than vanishing.
  • Writes a RetroArch playlist on the way out, so the games show proper names and descriptions without you renaming a single file.

Using it

Clone it and run ./run.sh — run.bat on Windows. That sets up Python, installs what it needs, runs a setup wizard the first time asking where your DAT, your ROMs and your destination folder live, then opens the interface in your browser. Run it again any time; it picks up where it left off.

There is a command-line route too, including a dry run that reports what would be copied without copying anything.

You supply the MAME set and its matching DAT — those are not included, and are not something this project distributes.

Where it stands

Version 1 and stable. It runs entirely on your own machine: no telemetry, no analytics, no cloud sync, and the ban on adding any is enforced by an automated check rather than good intentions. You need Python 3.12 or newer and a browser; everything else is handled for you. MIT licensed.

FP19 — Launch games from the site (RetroArch integration)

User asked: "offer the option to launch the games from the site, check /mnt/Storage/Scripts/Linux/RetroDB/ (RetroDB project) for references on doing that."

Studied RetroDB's launcher pattern (subprocess.Popen(shell=False), argv pre-built, token-based registry, stderr drained). Adapted to a slim per-request spawn for v1 — no token registry, no kill API (RetroArch is a foreground app the user closes themselves).

  • New paths.retroarch + paths.retroarch_core fields in PathsConfig. Both required for launch; absent configuration surfaces a 422 with copy that names the fix.
  • POST /api/games/{name}/launch spawns RetroArch via subprocess.Popen with shell=False. ROM-resolution order: dest_roms/<name>.zip → source_roms/<name>.zip (404 if neither exists).
  • Frontend "Launch in RetroArch" button in AlternativesDrawer. useLaunchGame mutation; success toast + error toast via toastApiError.

To configure on your machine:

paths:
  retroarch: /mnt/Emulators/Multi-System/RetroArch/RetroArch-Linux-x86_64.AppImage
  retroarch_core: /path/to/mame_libretro.so

446 backend tests / 86.66% coverage. 182 frontend tests / build clean.

Full changelog · 5 earlier releases →