Repository navigation
Conversation
Give MAME, AdvanceMAME, FBNeo, FBA, Daphne, Singe and the arcade boards that need their own emulator (NAOMI/NAOMI 2/NAOMI GD-ROM, Model 2/3, Hikaru, Triforce, Lindbergh, Namco System 246/3xx, Gaelco, ...) their own slugs with verified provider IDs. Providers without a dedicated entry fall back to their Arcade platform via arcade_fallbacks(). MAME-only boards (CPS1-3, System 16/32, Model 1, Namco 22) stay aliases of arcade. Refs rommapp#5272 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Retry IGDB on unmatched scans for every platform IGDB resolves, not just slugs in IGDB_PLATFORM_LIST. - Resolve config binding/version values through the alias table, so a binding to a retired slug (cps2, model1, ...) still lands on a platform. - Alias the Batocera `typex` folder to type-x. - Build provider id->slug reverse maps before merging Arcade fallbacks. - Share one MAME title lookup between base_handler and libretro. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Alias the three RomM-keyed IGDB versions inside IGDB_PLATFORM_VERSIONS, dropping IGDB_VERSION_SLUGS and _version_slug. - Derive EmulatorJS arcade entries from ARCADE_SET_PLATFORMS. - Remove the unused provider id->slug reverse maps, so the Arcade fallback merge no longer has an ordering constraint. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Migration 0154 moves platforms still on a retired MAME-only board slug (cps1-3, model1, system16, system32, system-32) to arcade, so no row carries a slug the enum no longer has. - MAME shortname expansion keys off the RomM slug via MAME_SHORTNAME_PLATFORMS instead of per-provider arcade ids, so Daphne, Singe, Type X and Lindbergh sets are no longer read as MAME sets. Neo Geo now expands at ScreenScraper too, as it already did at IGDB and Moby. - fba offers fbneo before the FinalBurn Alpha CPS cores. - AdvanceMAME leaves the WebRcade feed; EmulatorJS and WebRcade share PLAYABLE_ARCADE_SET_PLATFORMS. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Verify arcade-board BIOS files against the known list's arcade entries, and make migration 0154 match retired slugs case-insensitively. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Apply IGDB family overrides once in get_platform instead of on each return path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
[Medium impact] The PR appears safe to merge. SummarySplits arcade folders into emulator-family and board-specific platforms.
Explicitly acknowledged or deferred by
Reviews (1) · Last reviewed commit: "refactor(platforms): simplify pass on ar..." · Reviewed by Greptile |
singe now ships an icon, so the no-icon prefetch test needs a slug that never will. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Closes #5272
Arcade folders no longer all collapse into one
arcadeplatform. A system gets its own slug when its games need an emulator outside the MAME/FinalBurn family, or when it is one of those families. Boards that only MAME runs stay aliases ofarcade.New slugs:
mame,mame-advmame,fbneo,fba. Their romsets differ, so none aliases another.atomiswave,chihiro,daphne(withlaserdiscas an alias),dice,gaelco,lindbergh,namco2x6,namco3xx,naomi,naomi2,naomigd,singe,triforce. The existinghikaru,model2,model3,stvandtype-xkeep their slugs.cps1,cps2,cps3,model1,system16,system32andsystem-32become folder aliases ofarcade.system-32was actually Namco System 22. Migration 0154 moves existing rows ontoarcade, and its downgrade restores a row's slug fromfs_slug.How providers handle the new slugs:
backend/utils/arcade_platforms.pyholds the groupings. A provider with no entry of its own for a board uses its Arcade entry (Moby, TGDB, HLTB, LaunchBox, Hasheous). RetroAchievements only gets that fallback for the MAME/FinalBurn set platforms, since it hashes nothing else. Hasheous dropsra_idfor boards for the same reason.hikaru,naomi2andstvto their IGDB platform versions.arcade,mame,fbneoandfba.mame-advmameis excluded because no browser core runs AdvanceMAME sets. Thefbacore list starts withfbneo.arcade:, so verification on any arcade platform checks those entries.arcade(fbacopiesfba2012).Side effects worth a look:
stvdisplay name becomes "Sega Titan Video" (IGDB's platform version name).cps2(or other retired-board) folder appears as a second "Arcade" tile next toarcade/, as in the screenshot below.generate_supported_platforms.pynow usesresolve_platform_name, so 15 non-arcade names in the generated docs table change to the names the app actually shows.mame,fbneoandnaomiplatform rows stored asarcadeare not migrated. Their folder name alone can't distinguish them from a realarcade/folder. They move to the new slug on the next scan that isn't a new-platforms-only scan, since that rewrites the platform row.Follow-ups, not in this PR:
ARCADE_SYSTEMSduplicates the backend set. It should come from the API (anis_arcadefield).mame,fbneoandfba, so they show "RA FBNEO" and similar. They have to match the broker'sretroarch_platforms.json.rommapp/docsneeds updates to the EmulatorJS cores table, the supported-platforms alias note, theconfiguration-file.mdexamples and the "Arcade games playable in browser" smart collection.AI assistance: Claude Code (Claude Opus 5.5) did the provider id research and wrote most of the implementation, tests and this description. I made the design decisions, reviewed the diff and checked the results.
Checklist
Screenshots (if applicable)
The same 12-folder library (
arcade,atomiswave,cps2,daphne,fba,fbneo,mame,model2,model3,naomi,naomi2,snes) scanned on master and on this branch.Before: seven folders read as "Arcade", and the NAOMI and Atomiswave ones show a Play badge that EmulatorJS can't honor.
[

]
After: each family and board has its own tile, and Play shows only where a browser core runs the sets.
[
]
🤖 Generated with Claude Code