Files
libretro/schemas/arcade-parents.schema.json
T
Abdessamad Derraz 7a3d91585d feat: read ES-DE MAME search paths
ES-DE starts standalone MAME with -rompath %GAMEDIR%\;%ROMPATH%/<system>
in 78 live commands across 54 systems (resources/systems/linux/
es_systems.xml at retrodeck-main-20261103-162710, 15e1b236; two more
are commented out). The command line outranks mame.ini, so RetroDECK's
MAME reads its sets in the roms folder each command names and in no
BIOS folder. The ES-DE rom folders parser now records, per folder, the
folders a standalone command passes as its ROM search path and the
machines it starts, or that the game is the machine (%BASENAME%).
Rescraped at the pinned revisions: retrodeck, emudeck and
emudeck-windows gain these records and nothing else.

A command reads the sets its machines load: the machine's own set, the
BIOS sets on its romof chain and the device sets with ROMs it
instantiates, from games/arcade/mame.json (mame0289 -listxml). That
index now also lists the game and device sets of each driver source
file, so a %BASENAME% folder reads for its board: neogeo and stv by
their BIOS root, cps1-3 and model2 by source file, daphne and laserdisc
by the laserdisc player devices, gameandwatch and lcdgames by the
handheld sources, any other (arcade, mame, consolearcade) for every
machine. The published installer copy of the index leaves the sources
out.

Manifests: RetroDECK gains 1399 files, 378.2 MB, below roms/. Of the 219
sets named as read outside the BIOS folder, 58 reach 146 files (25.9 MB),
161 stay named, no command's machine reading them. 441 sets RetroDECK's
list also declares at bios/ reach 1253 files (352.3 MB), 429 each in
arcade and mame and 480 in consolearcade. No other platform changes.
2026-11-11 11:17:06 +01:00

107 lines
4.4 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://abdess.github.io/retrobios/api/v1/schemas/arcade-parents.schema.json",
"title": "RetroBIOS arcade parent index of one core version",
"description": "games/arcade/<profile>.json, written by python -m scripts.scraper.arcade_parent_importer from the DAT or the driver code the profile pins. A game set needs every BIOS set it is listed under (the romof chain read to its end) and, for the MAME family, every device set with ROMs it is listed under.",
"type": "object",
"additionalProperties": false,
"required": ["schema", "profile", "core_version", "source", "bios", "devices", "chd", "missing_parents", "no_bios", "bios_sets", "counts"],
"$defs": {
"set_name": { "type": "string", "minLength": 1, "pattern": "^[^\\s/\\\\]+$" },
"set_list": {
"type": "array",
"items": { "$ref": "#/$defs/set_name" },
"uniqueItems": true
},
"sets_by_archive": {
"type": "object",
"propertyNames": { "$ref": "#/$defs/set_name" },
"additionalProperties": { "$ref": "#/$defs/set_list", "minItems": 1 }
},
"sha1": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
"count": { "type": "integer", "minimum": 0 }
},
"properties": {
"schema": { "const": 1 },
"profile": { "type": "string", "pattern": "^[a-z0-9][a-z0-9_.-]*$" },
"core_version": { "type": ["string", "null"] },
"source": {
"oneOf": [
{
"type": "object",
"description": "A MAME -listxml release asset.",
"additionalProperties": false,
"required": ["release", "url", "sha256"],
"properties": {
"release": { "type": "string", "minLength": 1 },
"url": { "type": "string", "pattern": "^https://" },
"sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
}
},
{
"type": "object",
"description": "Files or directories of a repository at a commit, each with its git blob or tree sha.",
"additionalProperties": false,
"required": ["repo", "commit", "files"],
"properties": {
"repo": { "type": "string", "pattern": "^https://" },
"commit": { "$ref": "#/$defs/sha1" },
"files": {
"type": "object",
"minProperties": 1,
"additionalProperties": { "$ref": "#/$defs/sha1" }
}
}
}
]
},
"bios": {
"$ref": "#/$defs/sets_by_archive",
"description": "BIOS set -> the game sets whose romof chain reaches it."
},
"devices": {
"$ref": "#/$defs/sets_by_archive",
"description": "Device set with ROMs -> the game sets that instantiate it."
},
"chd": {
"$ref": "#/$defs/set_list",
"description": "Game sets that also need a CHD, which is game content and is not installed."
},
"missing_parents": {
"type": "object",
"description": "Game set -> the romof target the DAT does not carry.",
"propertyNames": { "$ref": "#/$defs/set_name" },
"additionalProperties": { "$ref": "#/$defs/set_name" }
},
"no_bios": {
"$ref": "#/$defs/set_list",
"description": "Game sets whose romof chain reaches no BIOS set: a game that needs no BIOS archive."
},
"bios_sets": {
"$ref": "#/$defs/set_list",
"description": "Every BIOS set of the DAT, used by a game or not: an archive of that name on a card is not a game."
},
"sources": {
"type": "object",
"description": "Driver source file -> the game sets and the device sets with ROMs it declares, as the -listxml sourcefile attribute names it.",
"propertyNames": { "type": "string", "minLength": 1 },
"additionalProperties": { "$ref": "#/$defs/set_list", "minItems": 1 }
},
"counts": {
"type": "object",
"additionalProperties": false,
"required": ["sets", "games", "games_with_bios", "bios_sets", "bios_roots_used", "games_with_devices", "chd_games", "missing_parents"],
"properties": {
"sets": { "$ref": "#/$defs/count" },
"games": { "$ref": "#/$defs/count" },
"games_with_bios": { "$ref": "#/$defs/count" },
"bios_sets": { "$ref": "#/$defs/count" },
"bios_roots_used": { "$ref": "#/$defs/count" },
"games_with_devices": { "$ref": "#/$defs/count" },
"chd_games": { "$ref": "#/$defs/count" },
"missing_parents": { "$ref": "#/$defs/count" }
}
}
}
}