From e467a483f94019845cbc5130cbae601da4db2d56 Mon Sep 17 00:00:00 2001 From: Emily Frost Date: Wed, 4 May 2022 18:25:47 -0500 Subject: [PATCH] Fleshed out metadata definitions. --- metadata.md | 41 ----------------------- metadata/README.md | 83 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 41 deletions(-) delete mode 100644 metadata.md create mode 100644 metadata/README.md diff --git a/metadata.md b/metadata.md deleted file mode 100644 index 8f2c714..0000000 --- a/metadata.md +++ /dev/null @@ -1,41 +0,0 @@ -# Metadata definitions -## Release -- A single release of a game. For example: Star Fox 64 (U) v1.2 - - * UUID - * sha1sum - * format (For now this is just the file extension) - * region - * version - * disambiguation - * release group - -## Release group -- A container for all versions of a release. - For example, the Star Fox 64 release group would contain: - Star Fox 64 (U) v1.2 - Star Fox 64 (U) v1.0 - Star Fox 64 (J) v1.0 - etc. - - * UUID - * name - * platform - -## Platform -- A single set of hardware and/or software that shares compatibility - Examples: - Nintendo Entertainment System - Microsoft Windows 7 - Microsoft Windows 98 - - * UUID - * name - * shortcode - -## DAT credits -- A large list of hashes imported from other sources. - * DAT name - * DAT website - * DAT version - * image UUID list diff --git a/metadata/README.md b/metadata/README.md new file mode 100644 index 0000000..5f5c199 --- /dev/null +++ b/metadata/README.md @@ -0,0 +1,83 @@ +# Metadata definitions + +# TODO +* Add a new category for romhacks (like releases but for romhacks) and their respective versions. + +* 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 region intended for release. + * 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. + +# 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.