Files
libretro/schemas/game-extras.schema.json
T

60 lines
2.8 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://abdess.github.io/retrobios/api/v1/schemas/game-extras.schema.json",
"title": "RetroBIOS per-game extra files",
"description": "games/extras.yml: files a game needs beyond its system's region BIOS, decided by the game's extension, header bytes or presence, with the core that reads them. A header trigger names a reader of games/headers.yml and the labels or values it returns.",
"type": "object",
"additionalProperties": false,
"required": ["extras"],
"properties": {
"extras": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["system", "profile", "trigger", "required", "source_ref"],
"properties": {
"system": { "type": "string", "minLength": 1 },
"profile": { "type": "string", "minLength": 1 },
"trigger": {
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"maxProperties": 1,
"properties": {
"extensions": {
"type": "array",
"minItems": 1,
"items": { "type": "string", "pattern": "^\\.[a-z0-9]+$" },
"uniqueItems": true
},
"header": {
"type": "object",
"additionalProperties": false,
"required": ["reader", "values"],
"properties": {
"reader": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
"field": { "type": "string", "pattern": "^[a-z0-9_]+$", "description": "A field of the reader, when the value is read there rather than from the reader's own location." },
"values": { "type": "array", "minItems": 1, "items": { "type": ["string", "integer"] } }
}
},
"every_game": { "const": true }
}
},
"files": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
"region_files": { "const": true, "description": "The files are the system's region files for the game's region (games/regions.yml)." },
"one_of": { "type": "boolean", "description": "Any single file of the list serves." },
"filename_override": { "type": "boolean", "description": "Tags in the file name can change the choice: the installer keeps every file listed for this system and core." },
"required": { "type": "boolean" },
"note": { "type": "string", "minLength": 1 },
"source_ref": {
"type": "string",
"pattern": "^[\\w.-]+/[\\w.-]+@[0-9a-f]{8,40} \\S.*$"
}
},
"oneOf": [{ "required": ["files"] }, { "required": ["region_files"] }]
}
}
}
}