# Metadata definitions # TODO * Decide on a file structure. This shouldn't be one giant json file, but it needs to be split in useful ways. ## Image A stored copy of a game's disk image. For example: - Star Fox 64 (U) v1.2.z64 - Star Fox 64 (U) v1.2.v64 * UUID - A unique identifier for this specific data object. * format - The format this image is stored in. For example: bin, iso, chd, z64, v64 * sha1sum - The sha1sum hash of this specific image. * release - The release that this image was taken from. * dump credit - Where the hash came from, who dumped it, etc ## Release A single release of a game. For example: Star Fox 64 (U) v1.2 * UUID * name - The release's name in the language and script it was released in. * region - The official release code for the game. * version - The release version of the game. Some are verison numbers, some are just sequential release numbers. * disambiguation (can be empty) - If this release is different in a way that isn't region or version, that information goes here. * release group - The UUID of release group that this release belongs to. * platform - The UUID of the platform that this release is built for. ## Release group A container for all languages and versions of a release. For example, the Star Fox 64 release group would contain all of the following releases: - Star Fox 64 (U) v1.2 - Star Fox 64 (U) v1.0 - Star Fox 64 (J) v1.0 - Lylat Wars (E) v1.0 * UUID * name - The English name for the release group. This is largely for contributors to quickly understand the raw data, as frontends should ideally pull the name from a configured region or something. ## Platform A single set of hardware and/or software that shares compatibility. For example: - Nintendo Entertainment System - Microsoft Windows 7 - Microsoft Windows 98 * UUID * name - The English name of the platform. As with release group names, this is mostly for hand-editing data. * regional_names - A hash map with the keys being language identifers (en-US, jp, fr, etc) and the values being the platform's name in the language and script it was released in. * shortcode - A small, three-letter code for the platform. This is essentially for directory names. ## Patches Unofficial patches or mods for a game, usually called romhacks. * UUID * name - The patch's name in it's original language. * file sha1sum - The patch file's sha1sum. * target image - The UUID of the image that the patch is intended to be applied to. # Design notes * This spec is designed with the intent to be imported into databases while also being reasonably hand-editable for contributors. * Everything has a UUID because formats and hashing algorithms change, and this should be made as long-term and language-agnostic as is reasonable. * Releases have multiple images to account for different formats. The z64 and v64 images of the same N64 game are different files with different hashes.