Created
September 14, 2025 10:02
-
-
Save marijnvdwerf/223b2f5e8574effebf5e0848a470f78a to your computer and use it in GitHub Desktop.
decomp-schema
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
| { | |
| "$schema": "http://json-schema.org/draft-07/schema#", | |
| "title": "Decomp Settings Configuration", | |
| "description": "Configuration schema for decomp.yaml format", | |
| "type": "object", | |
| "properties": { | |
| "name": { | |
| "type": "string", | |
| "description": "Human-readable name of the project. Example: Paper Mario" | |
| }, | |
| "repo": { | |
| "type": "string", | |
| "description": "The repository URL of the project" | |
| }, | |
| "website": { | |
| "type": "string", | |
| "description": "The website for the project" | |
| }, | |
| "discord": { | |
| "type": "string", | |
| "description": "An invite link to the project's Discord server" | |
| }, | |
| "platform": { | |
| "type": "string", | |
| "description": "The platform the project is for. Example: n64" | |
| }, | |
| "build_system": { | |
| "type": "string", | |
| "description": "The build system used by the project. Example: ninja, make" | |
| }, | |
| "versions": { | |
| "type": "array", | |
| "description": "A list of all Versions inside the project", | |
| "items": { | |
| "$ref": "#/definitions/Version" | |
| } | |
| }, | |
| "tools": { | |
| "type": "object", | |
| "description": "Settings for various tools", | |
| "additionalProperties": { | |
| "$ref": "#/definitions/ToolOpts" | |
| } | |
| } | |
| }, | |
| "required": ["name", "platform", "versions"], | |
| "additionalProperties": false, | |
| "definitions": { | |
| "Version": { | |
| "type": "object", | |
| "description": "Represents a single version of a project", | |
| "properties": { | |
| "name": { | |
| "type": "string", | |
| "description": "The shorthand identifier for the version, meant to be easily memorable and typable. Example: us10" | |
| }, | |
| "fullname": { | |
| "type": "string", | |
| "description": "The human-readable name of the version. Example: US 1.0" | |
| }, | |
| "sha1": { | |
| "type": "string", | |
| "description": "The sha1 hash of the target executable" | |
| }, | |
| "paths": { | |
| "$ref": "#/definitions/VersionPaths" | |
| } | |
| }, | |
| "required": ["name", "fullname", "paths"], | |
| "additionalProperties": false | |
| }, | |
| "VersionPaths": { | |
| "type": "object", | |
| "description": "Represents the set of important file and directory paths associated with a project version", | |
| "properties": { | |
| "target": { | |
| "type": "string", | |
| "description": "Path to the original target binary (e.g., the ROM or executable to decompile)" | |
| }, | |
| "build_dir": { | |
| "type": "string", | |
| "description": "Directory where build artifacts are generated" | |
| }, | |
| "map": { | |
| "type": "string", | |
| "description": "Path to the map file generated during the build" | |
| }, | |
| "compiled_target": { | |
| "type": "string", | |
| "description": "Path to the binary produced by the project's build system" | |
| }, | |
| "elf": { | |
| "type": "string", | |
| "description": "Path to the intermediary ELF file generated during the build, if any" | |
| }, | |
| "expected_dir": { | |
| "type": "string", | |
| "description": "Directory containing the expected files used for comparison" | |
| }, | |
| "asm": { | |
| "type": "string", | |
| "description": "Directory containing disassembled assembly files" | |
| }, | |
| "nonmatchings": { | |
| "type": "string", | |
| "description": "Directory containing functions or files that have not yet been matched to the original binary" | |
| }, | |
| "compressed_target": { | |
| "type": "string", | |
| "description": "Path to the original target binary before decompression, if any" | |
| }, | |
| "compressed_compiled_target": { | |
| "type": "string", | |
| "description": "Path to the compressed binary produced by the build system, if any" | |
| } | |
| }, | |
| "required": ["target", "build_dir", "map", "compiled_target"], | |
| "additionalProperties": false | |
| }, | |
| "ToolOpts": { | |
| "oneOf": [ | |
| { | |
| "$ref": "#/definitions/DecompmeOpts" | |
| }, | |
| { | |
| "$ref": "#/definitions/PermuterOpts" | |
| }, | |
| { | |
| "$ref": "#/definitions/FrogressOpts" | |
| }, | |
| { | |
| "type": "object", | |
| "description": "Other tool options (AnyOpts)", | |
| "additionalProperties": true | |
| } | |
| ] | |
| }, | |
| "DecompmeOpts": { | |
| "type": "object", | |
| "description": "Settings for the decomp.me platform", | |
| "properties": { | |
| "preset": { | |
| "type": "integer", | |
| "minimum": 0 | |
| } | |
| }, | |
| "required": ["preset"], | |
| "additionalProperties": false | |
| }, | |
| "PermuterOpts": { | |
| "type": "object", | |
| "description": "Settings for decomp-permuter", | |
| "properties": { | |
| "decompme_compilers": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "required": ["decompme_compilers"], | |
| "additionalProperties": false | |
| }, | |
| "FrogressOpts": { | |
| "type": "object", | |
| "description": "Settings for frogress", | |
| "properties": { | |
| "project": { | |
| "type": "string", | |
| "description": "The project slug as defined in the frogress database" | |
| }, | |
| "versions": { | |
| "type": "object", | |
| "description": "The frogress settings for each version of the project", | |
| "additionalProperties": { | |
| "$ref": "#/definitions/FrogressVersionOpts" | |
| } | |
| } | |
| }, | |
| "required": ["project", "versions"], | |
| "additionalProperties": false | |
| }, | |
| "FrogressVersionOpts": { | |
| "type": "object", | |
| "description": "Settings for a version in frogress's schema", | |
| "properties": { | |
| "version": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": ["version"], | |
| "additionalProperties": false | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment