titles
The titles array contains objects that describe the details about each title that is
associated with a group.
While many of the properties in the titles array are optional, the more that are
included, the more that a DAT application is able to filter on.
In the following example, required properties are highlighted. The values are for example only.
"titles": [
{
"name": "Some Video Game (USA)",
"id": "123456",
"build": "Production",
"published": true,
"type": "Game",
"subtype": "Educational",
"releaseDate": "1993-10-12",
"version": "Rev 1",
"versionInternal": 1,
"serial": "SLUS-000000",
"isAlternate": false,
"isCompilation": false,
"isDemo": false,
"isLicensed": false,
"isMIA": false,
"isPirate": false,
"isSuperset": false,
"contains": [],
"regions": ["US"],
"languages": {
"audio": ["en", "ja"],
"interface": ["en"],
"subtitles": ["en"]
},
"localNames": [
"en": "Some Video Game",
"ja": "別のビデオゲーム"
],
"developer": "That Game Dev",
"publisher": "That Game Publisher",
"source": ["3.5\" Floppy Disk"],
"peripherals": ["Keyboard", "Mouse"],
"players": 4,
"playModes": ["Single Player", "Competitive (Online Free-for-all)"],
"videoStandards": ["NTSC"],
"sets": [
...
]
}
]
Required properties
-
namepattern stringrequiredThe name of the title, in UTF-8. Must be globally unique. This is used for the name of the archive or folder of the contained sets, under the following conditions:
Names can't end with a period or space, start with a path separator, or use the following invalid path characters:
Path separators are represented Linux-style, with
/instead of\. Don't use absolute paths, paths are relative to a path the user sets.Expand for developer details
Invalid path characters are found with the following regular expression:
Non-UTF-8 characters are found with the following regular expressions:
[\xC0-\xC1] [\xF5-\xFF] \xE0[\x80-\x9F] \xF0[\x80-\x8F] [\xC2-\xDF](?![\x80-\xBF]) [\xE0-\xEF](?![\x80-\xBF]{2}) [\xF0-\xF4](?![\x80-\xBF]{3}) (?<=[\x00-\x7F\xF5-\xFF])[\x80-\xBF] (?<![\xC2-\xDF]|[\xE0-\xEF]|[\xE0-\xEF][\x80-\xBF]|[\xF0-\xF4]|[\xF0-\xF4][\x80-\xBF]|[\xF0-\xF4][\x80-\xBF]{2})[\x80-\xBF] (?<=[\xE0-\xEF])[\x80-\xBF](?![\x80-\xBF]) (?<=[\xF0-\xF4])[\x80-\xBF](?![\x80-\xBF]{2}) (?<=[\xF0-\xF4][\x80-\xBF])[\x80-\xBF](?![\x80-\xBF]) -
regionsenum arrayrequiredWhich regions the title was released in. Valid individual region codes are two characters long, and are described in ISO 3166-1 alpha-2. Grouped regions are three characters long, and defined entirely by this standard.
The following general rules apply:
-
If you don't know where a title is from, use an empty array:
-
If you do know where a title is from, prefer listing individual regions over grouped regions where possible for better granularity.
-
Region codes should always be listed in alphabetical order.
For grouped regions, keep the following rules in mind:
-
Only use grouped regions by themselves when a title is clearly intended for release in that broad area. For example, titles have often been released for Europe due to the PAL video standard, some other form of region locking, or because of the level of English comprehension of the continent. Digitally-distributed titles often have only one global version.
-
When using grouped regions, be aware that each can contain several individual regions that have vastly different languages, even within those individual regions. It's not good enough to have a grouped region listed without its languages — just
ASI(Asia) by itself tells us nothing about who the target audience is. Be extra diligent in adding all the supported languages for the title, even if this means testing to find out. -
If you have more than two individual regions listed that belong to a grouped region, also add that grouped region. For example, if a title was released in France and Germany, it's also worth adding Europe:
["FR", "DE", "EUR"]. Be aware that individual regions can be part of multiple grouped regions. For example, Türkiye is a melting pot of cultures at the intersection of Asia, Europe, and the Middle East. Mexico is part of North America, but also Latin America.
The valid regions are as follows:
AF- AfghanistanAX- Åland IslandsAL- AlbaniaDZ- AlgeriaAS- American SamoaAD- AndorraAO- AngolaAI- AnguillaAQ- AntarcticaAG- Antigua and BarbudaAR- ArgentinaAM- ArmeniaAW- ArubaAU- AustraliaAT- AustriaAZ- AzerbaijanBS- BahamasBH- BahrainBD- BangladeshBB- BarbadosBY- BelarusBE- BelgiumBZ- BelizeBJ- BeninBM- BermudaBT- BhutanBO- BoliviaBQ- Bonaire, Sint Eustatius and SabaBA- Bosnia and HerzegovinaBW- BotswanaBV- Bouvet IslandBR- BrazilIO- British Indian Ocean TerritoryBN- Brunei DarussalamBG- BulgariaBF- Burkina FasoBI- BurundiCV- Cabo VerdeKH- CambodiaCM- CameroonCA- CanadaKY- Cayman IslandsCF- Central African RepublicTD- ChadCL- ChileCN- ChinaCX- Christmas IslandCC- Cocos (Keeling) IslandsCO- ColombiaKM- ComorosCG- CongoCD- Congo, Democratic Republic of theCK- Cook IslandsCR- Costa RicaCI- Côte d'IvoireHR- CroatiaCU- CubaCW- CuraçaoCY- CyprusCZ- CzechiaDK- DenmarkDJ- DjiboutiDM- DominicaDO- Dominican RepublicEC- EcuadorEG- EgyptSV- El SalvadorGQ- Equatorial GuineaER- EritreaEE- EstoniaSZ- EswatiniET- EthiopiaFK- Falkland IslandsFO- Faroe IslandsFJ- FijiFI- FinlandFR- FranceGF- French GuianaPF- French PolynesiaTF- French Southern TerritoriesGA- GabonGM- GambiaGE- GeorgiaDE- GermanyGH- GhanaGI- GibraltarGR- GreeceGL- GreenlandGD- GrenadaGP- GuadeloupeGU- GuamGT- GuatemalaGG- GuernseyGN- GuineaGW- Guinea-BissauGY- GuyanaHT- HaitiHM- Heard Island and McDonald IslandsVA- Holy-SeeHN- HondurasHK- Hong KongHU- HungaryIS- IcelandIN- IndiaID- IndonesiaIR- Iran, Islamic Republic ofIQ- IraqIE- IrelandIM- Isle of ManIL- IsraelIT- ItalyJM- JamaicaJP- JapanJE- JerseyJO- JordanKZ- KazakhstanKE- KenyaKI- KiribatiKP- Korea, Democratic People's Republic of (North Korea)KR- Korea, Republic of (South Korea)KW- KuwaitKG- KyrgyzstanLA- Lao People's Democratic Republic (Laos)LV- LatviaLB- LebanonLS- LesothoLR- LiberiaLY- LibyaLI- LiechtensteinLT- LithuaniaLU- LuxembourgMO- MacaoMG- MadagascarMW- MalawiMY- MalaysiaMV- MaldivesML- MaliMT- MaltaMH- Marshall IslandsMQ- MartiniqueMR- MauritaniaMU- MauritiusYT- MayotteMX- MexicoFM- Micronesia, Federated States ofMD- Moldova, Republic ofMC- MonacoMN- MongoliaME- MontenegroMS- MontserratMA- MoroccoMZ- MozambiqueMM- MyanmarNA- NamibiaNR- NauruNP- NepalNL- Netherlands, Kingdom of theNC- New CaledoniaNZ- New ZealandNI- NicaraguaNE- NigerNG- NigeriaNU- NiueNF- Norfolk IslandMK- North MacedoniaMP- Northern Mariana IslandsNO- NorwayOM- OmanPK- PakistanPW- PalauPS- Palestine, Sate ofPA- PanamaPG- Papua New GuineaPY- ParaguayPE- PeruPH- PhilippinesPN- PitcairnPL- PolandPT- PortugalPR- Puerto RicoQA- QatarRE- RéunionRO- RomaniaRU- Russian Federation (Russia)RW- RwandaBL- Saint BarthélemySH- Saint Helena, Ascension and Tristan da CunhaKN- Saint Kitts & NevisLC- Saint LuciaPM- Saint Pierre & MiquelonVC- Saint Vincent and the GrenadinesWS- SamoaSM- San MarinoST- Sao Tome & PrincipeSA- Saudi ArabiaSN- SenegalRS- SerbiaSC- SeychellesSL- Sierra LeoneSG- SingaporeSX- Sint Maarten (Dutch)MF- Sint Maarten (French)SK- SlovakiaSI- SloveniaSB- Solomon IslandsSO- SomaliaZA- South AfricaGS- South Georgia and the South Sandwich IslandsSS- South SudanES- SpainLK- Sri LankaSD- SudanSR- SurinameSJ- Svalbard and Jan MayenSE- SwedenCH- SwitzerlandSY- Syrian Arab Republic (Syria)TW- Taiwan, Province of ChinaTJ- TajikstanTZ- Tanzania, United Republic ofTH- ThailandTL- Timor-LesteTG- TogoTK- TokelauTO- TongaTT- Trinidad and TobagoTN- TunisiaTR- TürkiyeTM- TurkmenistanTC- Turks and Caicos IslandsTV- TuvaluUG- UgandaUA- UkraineAE- United Arab EmiratesGB- United Kingdom of Great Britain and Northern IrelandUM- United States Minor Outlying IslandsUS- United States of AmericaUY- UruguayUZ- UzbekistanVU- VanuatuVE- Venezuela, Bolivarian Republic ofVN- Viet Nam (Vietnam)VG- Virgin Islands (British)VI- Virgin Islands (U.S.)WF- Wallis and FutunaEH- Western SaharaYE- YemenZM- ZambiaZW- Zimbabwe
-
GLO- Global -
AFR- Africa -
ASI- Asia -
EUR- Europe -
LAM- Latin America -
MDE- Middle East -
NAM- North America -
NOR- Nordics -
OCE- Oceania -
SAM- South America
Regions in graphical user interfaces
These region codes are intended to keep the character count of the
regionsarray, and therefore the file size, down. When building graphical user interfaces, opt to use full region names to keep it more accessible to users. -
-
languagesobjectrequiredThe supported languages for the title's
audio,interface, andsubtitles. If there are no audio, interface, or subtitle languages, add a singularnullitem to the relevant arrays:If you don't know what languages are supported and aren't able to test to find out, leave the arrays empty. This isn't recommended. A sincere effort to catalog supported languages should be made — more data helps us all.
Constructing language codes
Valid language codes are listed in the IANA language subtag registry. You can search for and validate a language code at BCP47 language subtag lookup. Here are some example codes:
-
en- English -
en-US- English (United States of America) -
zh-Hant- Chinese (Traditional) [written] -
cmn- Chinese (Mandarin) [spoken]
There are well over 9,000 subtags that can be combined in different ways to create a language code, so for page performance they're not listed here. It's also not sensible to include that much data in the schema validation, so validation needs to be done by the code generating the DAT file.
To learn more about language codes, see the following pages:
-
Simplified vs. Traditional Chinese, and the Spoken Dialects (Chinese language codes differ for spoken vs written)
Choosing languages
In all circumstances, consider the intended audience of the medium when selecting language codes. For example, if a video is largely in English and is intended for English-speaking audiences, but has a short scene in which people speak Japanese, you set the
audioas["en"], not["en", "ja"].Order
Language codes should always be listed in alphabetical order.
Examples
Metal Gear Solid Integral (Japan)on PlayStation has English audio, selectable English or Japanese subtitles, and a mix of English and Japanese for the interface—where Japanese is used for weapon and item descriptions, and English for everything else. It's a weird mix, but it's definitely intended for Japanese audiences, so it's represented as follows:Ghost in the Shell (France)on PlayStation has cutscenes where the audio is in French, but the interface is in English, and there are no subtitles. This is represented as follows:Expand for developer details
Certain combinations of language types tell us useful things. For example, a Japanese title with the following properties is completely playable by English speakers:
Consider these scenarios when building filters for DAT files.
Languages in graphical user interfaces
These language codes are intended to keep the character count of the
languagesarrays, and therefore the file size, down. When building graphical user interfaces, opt to use full language names to keep it more accessible to users. -
-
setsobject arrayrequiredDefines the different file sets within the title. Read more about the
setsarray.
Optional properties
-
buildenumoptionalWhen in the software release life cycle the title was released. Must be one of the following values, in order of maturity and specificity:
-
Production: What reaches store shelves or internet distribution systems. This includes release to manufacturing (RTM) releases. -
Release candidate: There are often multiple release candidates, of which one is chosen to go to production. Release candidates are feature complete, and only significant bugs force another release candidate to be issued. -
Beta: A largely feature-complete version of a title, that still has bugs and performance issues to squash. -
Alpha: An in-development version of a title that isn't feature complete, and isn't thoroughly tested. Likely to be highly buggy. -
Pre-alpha: This includes early development titles and prototypes. -
Review: A version of the title sent to reviewers. This can be production code, preproduction code, or have code in it that's unique to the reviewer copy. -
Preproduction: A generic catch-all for a title that is at an unspecified development stage, but isn't the production version. Wherever possible, don't use this.
If this property isn't present, the DAT application assumes the value is
Production. -
-
containsobject arrayoptionalLists the content that this title contains. Useful for identifying the following:
- The individual titles that make up a compilation.
- The individual parts that go into game of the year or special editions.
- The multiple CDs that are superceded by a DVD rerelease of the same title.
Compilations
The
containsarray must be paired withisCompilation: truewhen describing compilations.Given the following compilation:
The
containsarray might look like this:"contains": [ { "name": "Some Video Game A (USA)", "groupId": "654321", "languages": { "audio": ["en"], "interface": ["en"], "subtitles": ["en"] }, "version": "1.1", "versionInternal": "1" }, { "name": "Some Video Game B (USA)", "groupId": "654322", "languages": { "audio": ["en"], "interface": ["en"], "subtitles": ["en"] }, "version": "1.3", "versionInternal": "1" }, { "name": "Some Video Game C (USA)", "languages": { "audio": ["en"], "interface": ["en"], "subtitles": ["en"] }, "version": "1.0", "versionInternal": "1" } ]Each
containstitle has its ownlanguagesobject, as individual titles within a compilation often have different language support.The
groupIdproperty links the constituent title in a compilation to the relevant group of standalone titles it belongs to, via its globally uniqueid. At comparison time during a 1G1R operation, a compilation is broken down into its constituent titles and compared against the equivalent standalone titles. The title that's ultimately selected is up to user preference, whether that be to always keep the most recent version of a title, only keep compilations if they have unique titles, or otherwise.Where possible, the
versionandinternalVersionproperties should be consistent with the versioning of standalone titles. In this circumstance, it is okay to reuse aversionInternalvalue that has been used by an standalone title. For example, here's theSome Video Game A (USA)part of thecontainsarray:{ "name": "Some Video Game A (USA)", "groupId": "654321", "languages": { "audio": ["en"], "interface": ["en"], "subtitles": ["en"] }, "version": "1.1", "versionInternal": "1" }And here's the relevant part of the standalone
Some Video Game A (USA)entry in the DAT file:{ "group": "Some Video Game", "id": "654321", "titles": [ { "name": "Some Video Game A (USA)", "regions": ["US"], "languages": { "audio": ["en"], "interface": ["en"], "subtitles": ["en"] }, "version": "1.1", "versionInternal": "1", ... } ] }Notice how the
versionandversionInternalfields match — this way we know the variant inside the compilation is exactly the same as the standalone title, and the DAT application will need to do more work to figure out what title to select during a 1G1R operation.The lack of
groupIdproperty forSome Video Game C (USA)indicates that this title is only found in the compilation. It's important to include these titles in thecontainsarray, as it helps DAT applications to determine whether they should keep a compilation for its unique titles during 1G1R operations.Supersets
The
containsarray must be paired withisSuperset: truewhen describing supersets.Given the following superset:
The
containsarray might look like this:"contains": [ { "name": "Some Video Game (USA)", "includesIds": ["123456", "234567"] }, { "name": "Add-ons", "includesIds": ["345678", "456789", "987654"], }, { "name": "Updates", "includesIds": ["012345", "543210"] }, { "name": "Extra content", "extraContent": ["Attack of the Bad Sequel expansion", "Horse armor"] } ]Where the original title, its DLC, and its updates are listed. Content that isn't found in a individual title is added as a
extraContent.The
includesIdsarray lists the IDs of the individual titles, add-ons, and updates that are included in the superset. The included titles must be from the same region as the superset (or include the superset's region among its regions), and the array should contain all versions of the title that are the same version or older.For example, the
includesIdsarray for the titleSome Video Game (USA)might include bothSome Video Game (USA)andSome Video Game (v1.1) (USA), asSome Video Game - Game of the Year Edition (USA)supersedes both.DVD releases
The
containsarray for a DVD that has superceded a set of CDs might look like this:"contains": [ { "name": "Some Video Game (Disc 1) (USA)", "includesIds": ["123456"] }, { "name": "Some Video Game (Disc 2) (USA)", "includesIds": ["345678", "456789"] }, { "name": "Some Video Game (Disc 3) (USA)", "includesIds": ["012345", "543210"] } ]The
includesIdsarray lists the IDs of the individual titles associated with each disc in the set. The CDs listed in thecontainsarray should come from the same region as the DVD release. All versions of the relevant CDs should be included that were released before the DVD was. -
developerstringoptionalThe developer of the title.
-
idstringoptionalA globally unique ID for the title. Usually a database ID to ease lookups for DAT file maintainers. Might be referenced by a DAT application when finding dependencies for add-ons or updates, or when present in a
containsarray. -
isAlternatebooleanoptionalWhether the title is an alternate variant of a release.
Where possible, don't use this. This is a generic property that doesn't tell the user what's different about a title compared to the original. Instead, classify the title with a property that provides more detail.
If this property isn't present, the DAT application assumes the value is
false. -
isCompilationbooleanoptionalWhether the title is a compilation. When used in combination with
contains, can be used by DAT applications to follow user preferences around keeping individual titles in preference of compilations, unless the compilation contains a unique title.Compilations live in their own groups, and shouldn't be grouped with their consituent titles.
If this property isn't present, the DAT application assumes the value is
false. -
isDemobooleanoptionalWhether the title is a demo.
If this property isn't present, the DAT application assumes the value is
false. -
isLicensedbooleanoptionalWhether the title was sanctioned for release by a platform manufacturer, assuming there was an approval process in place.
If this property isn't present, the DAT application assumes the value is
true. -
isMIAbooleanoptionalWhether the title's digests have been verified by more than one person. If not, set the value to
true.If this property isn't present, the DAT application assumes the value is
false. -
isPiratebooleanoptionalWhether the title contains stolen assets. Often a hack of an existing game that uses intellectual property from other games.
If the value is
true,islicensedis consideredfalse, regardless of its value in the DAT file.If this property isn't present, the DAT application assumes the value is
false. -
isSupersetbooleanoptionalWhether the title contains more content than the original title, or for some reason is superior to another version. For example, game of the year editions, a regional variant with uncensored content, or a DVD version of a title previously released on multiple CDs.
In 1G1R choices, supersets are selected above normal titles, so long as they fit the user's language priorities. Superset selection is cross-regional, meaning the following situation can arise:
-
The user preferences USA over Europe, and wants English only titles.
-
There are three titles available to choose from:
-
Some Video Game (USA) -
Some Video Game (Europe) -
Some Video Game - Game of the Year Edition (Europe)
-
-
Because
Some Video Game - Game of the Year Edition (Europe)is in English, and is a superset, it gets selected even though the user preferenced USA titles over Europe. This gives the user the most recent version of the title with the most content.
The following are some real world examples of where you'd want to select a title from a region that's different from user preference, due to it being a superset. For example,
Sonic the Hedgehog (Japan)on the MegaDrive is a superset ofSonic the Hedgehog (USA)on the Genesis, as it features extra parallax effects and is in English.Fahrenheit (Europe)is a superset ofIndigo Prophecy (USA)because it's uncensored. And there are quite a few special edition games that were only ever released in Europe, despite the base game being released in the USA.While most people are happy with these choices after the reasons for the selection has been explained to them, sometimes people have other use cases than just having the "best" variant of a title. DAT applications might choose to implement additional options for 1G1R selection like following strict region priority instead.
If this property isn't present, the DAT application assumes the value is
false. -
-
localNamesobjectoptionalLocal names given to the title, defined by language. Often titles are recorded in databases using their romanized form instead of their original name to aid with searching for the title. Other times a title can have multiple names, and what is displayed depends on the region of the machine on which it's running.
The
localNamesobject is where these names can be kept in their original form. DAT applications can then use this data to rename files according to a user's regional preferences.Keys should follow the language codes found in the IANA language subtag registry. See
languagesfor more details about selecting a language code.The following is an example of the
localNamesarray:Only use the title's name — don't include additional information like tags found in naming systems.
If a title can show more than one name depending on the region, and the title
nameis already in English, you should still include the English name in thelocalNamesarray. This is because client applications have no idea what language the titlenameis in, and so can't safely select it as the English name if someone sets that as a preference. -
peripheralsenum arrayoptionalContains inputs used to control the title, or devices that show output from the title.
Names are as generic as possible, with a focus on mentioning if specialist devices are required for an ideal emulation experience.
For example, trying to play Guitar Hero with a standard controller is asking for a bad time, so it would be set to the following:
But playing almost any GameCube game with almost any controller through an emulator is perfectly fine, so they would generally be set to the following:
For scenarios where titles are optimized for multiple inputs (for example, a racing game might be great with both controllers and a steering wheel), add both:
Valid values are the following:
-
Controller -
Controller with Touchpad -
Controller with Trackball -
Analog Joystick -
Dance Pad -
Digital Joystick -
Digital Twin Sticks -
Drums -
EyeToy -
Flight Stick -
Guitar -
HOTAS -
Keyboard -
Light Gun -
Magnavox Odyssey Controller -
Microphone -
Microsoft Kinect -
Microsoft Xbox Live Vision -
Mouse -
Nintendo Joy-Con -
Nintendo Wii Balance Board -
Nintendo Wii Remote -
Nintendo Wii Remote and Nunchuk -
Nintendo Power Glove -
Pedals -
Sega Dreamcast VMU -
Sony EyeToy -
Sony PlayStation Eye -
Sony PlayStation Move -
Sony Sixaxis -
Spinner -
Steering Wheel (Lock-to-lock)/Paddle -
Steering Wheel (360°) -
Touchscreen -
Trackball -
VR Headset -
VR Headset and Controls
-
-
playersintoptionalThe number of players the title supports. Might be paired with
playModes. -
playModesenum arrayoptionalThe play modes the title supports. Valid values are the following:
-
Single player -
Co-op (Split-screen) -
Co-op (Local) -
Co-op (Remote) -
Competitive (Split-screen Free-for-all) -
Competitive (Split-screen Team) -
Competitive (Local Free-for-all) -
Competitive (Local Team) -
Competitive (Remote Free-for-all) -
Competitive (Remote Team)
-
-
publishedbooloptionalWhether the title was published. Unpublished titles that didn't have an official release should be set to
false.If this property isn't present, the DAT application assumes the value is
true. -
publisherstringoptionalThe publisher of the title.
-
releaseDatepattern stringoptionalThe date the title was released. Must be an ISO 8601 extended format date, without the time zone. Valid formats include the following:
-
YYYY-MM-DD hh:mm:ss -
YYYY-MM-DD hh:mm -
YYYY-MM-DD -
YYYY-MM -
YYYY
Expand for developer details
Valid dates are found with the following regular expressions:
^[1-9][0-9]{3,3}-(?:(?:0[469]|11)-(?:0[1-9]|1[0-9]|2[0-9]|30)|02-(?:0[1-9]|1[0-9]|2[0-9])|(?:0[13578]|10|12)-(?:0[1-9]|1[0-9]|2[0-9]|3[01])) (?:0[0-9]|1[0-9]|2[0-3]):(?:[0-5][0-9]:?){1,2}(?<!:)$ ^[1-9][0-9]{3,3}-(?:(?:0[469]|11)-(?:0[1-9]|1[0-9]|2[0-9]|30)|02-(?:0[1-9]|1[0-9]|2[0-9])|(?:0[13578]|10|12)-(?:0[1-9]|1[0-9]|2[0-9]|3[01])) (?:0[0-9]|1[0-9]|2[0-3]):(?:[0-5][0-9])$ ^[1-9][0-9]{3,3}-(?:(?:0[469]|11)-(?:0[1-9]|1[0-9]|2[0-9]|30)|02-(?:0[1-9]|1[0-9]|2[0-9])|(?:0[13578]|10|12)-(?:0[1-9]|1[0-9]|2[0-9]|3[01]))$ ^[1-9][0-9]{3,3}-(?:0[1-9]|1[0-2])$ ^[1-9][0-9]{3,3}$There's a lower year bound of 1000, and an upper year bound of 9999. The regular expressions also constrain month and date pairs appropriately, although it's possible to have February 29 on a non-leap year. It's assumed that systems generating the DAT file will generate valid dates to avoid this. The schema validation just enforces the format to enable easier programmatic comparisons when determining if one title is newer than another.
-
-
serialstringoptionalA manufacturer identifier for the title. Might be a cartridge serial, disc ring code, or otherwise.
-
sourceenum arrayoptionalThe title's origin. Valid sources are:
-
3.5\" floppy disk -
5.25\" floppy disk -
BD-ROM -
BD-ROM (Ultra HD) -
Cassette tape -
CD-ROM -
Device -
Digital -
DVD-ROM -
Famicom Disk -
GameCube Game Disc -
Game Card -
GD-ROM -
Hard Drive -
HD-DVD -
HuCard -
LaserDisc -
Memory Card -
ROM Card -
ROM Cartridge -
UMD -
VHS -
Wii Optical Disc -
Wii U Optical Disc
-
-
subtypeenumoptionalThe subtype of the title. Must be paired with a valid
type.-
Add-on- Valid with theApplicationandGametypes. -
Audio- Valid with theApplicationandGametypes. -
Children- Valid with theApplication,Audio,Game,Multimedia, andVideotypes. -
Educational- Valid with theApplication,Audio,Game,Multimedia, andVideotypes. -
Manual- Valid with theApplication,Device, andGametypes. -
Update- Valid with theApplicationandGametypes. -
Video- Valid with theApplicationandGametypes.
For example:
-
-
typeenumoptionalThe type of the title. Must be one of the following:
-
Application -
Audio -
BIOS -
Chip -
Coverdisc -
Device -
Firmware -
Game -
Magazine -
Multimedia -
Video
These can be paired with a
subtype. -
-
versionstringoptionalThe version as reported by the title or media it came on. Don't include prefixes like
v, orRev, only include the version string itself.For example, don't use
Rev 1, instead use1. Don't usev1.1a, instead use1.1a. -
versionInternalintoptionalAn integer-based version assigned by the DAT maintainer, so DAT applications don't have to parse multiple different versioning systems when making 1G1R decisions. This can also help fill the gap in 1G1R selection when the title's
releaseDateis unknown.The earliest release is set to
1, with later releases increasing in value.The following rules apply:
-
The
versionInternalis regional. That is, it only applies to, and is only compared against titles in the same region. -
Don't assign the same number to multiple releases within the one region.
-
Numbering should start from the earliest available release, including preproduction.
-
If you don't know the release order, make your best guess. It's not ideal, but it means a 1G1R selection can actually happen.
For example:
... "name": "Some Video Game (USA)", "versionInternal": 1, ... "name": "Some Video Game (USA) (v1.1)", "versionInternal": 2, ... "name": "Some Video Game (USA) (v1.2)", "versionInternal": 3, ... "name": "Some Video Game (Europe) (Beta)", "versionInternal": 1, ... "name": "Some Video Game (Europe)", "versionInternal": 2, ... "name": "Some Video Game - Game of the Year (Europe)", "versionInternal": 3, ...Expand for developer details
This is an attempt to partially recreate how Retool sets up clone lists, while removing the need to write logic that figures out which titles are the oldest or newest. See 1G1R calculations.
-
-
videoStandardsenum arrayoptionalThe video standard supported by the title. This describes a title's fixed output in both color and resolution, as opposed to any monitor standard that might be receiving the output.
Use
RGBfor any title that supports higher resolutions than SVGA, and allows for flexible resolution output.Valid standards are:
-
4K Ultra HD -
8K Ultra HD -
AX-VGA -
CGA -
EGA -
EVGA -
HGC -
HDTV (720i) -
HDTV (720p) -
Full HDTV (1080i) -
Full HDTV (1080p) -
JEGA -
MCGA -
MDA -
MPAL -
NTSC -
NTSC (DV) (480i) -
NTSC (DV) (480p) -
PAL -
PAL (DV) (576i) -
PAL (DV) (576p) -
PAL 60Hz -
PGC -
Plantronics -
Quadcolor -
RGB -
SECAM -
SVGA -
Tandy -
TIGA -
VGA -
XGA
-