Skip to content

Instantly share code, notes, and snippets.

@marijnvdwerf
Created September 14, 2025 10:02
Show Gist options
  • Select an option

  • Save marijnvdwerf/223b2f5e8574effebf5e0848a470f78a to your computer and use it in GitHub Desktop.

Select an option

Save marijnvdwerf/223b2f5e8574effebf5e0848a470f78a to your computer and use it in GitHub Desktop.
decomp-schema
{
"$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