Stone-game
Second Working Draft
Implementation Mandatory
Formats Involved
- SQL (Stone expects SQLite, however any implementation of SQL may be used)
- JSON (Javascript Object Notation is the standard serialization format in Stone. For the purposes of
Stone-game
, no other serialization format may be used)
Introduction
Stone-game
is a specification on how to store information in relation to a Game and it's ROM file. It specifies how information about the game is to be stored, how to access the information later, and what pieces of information are mandatory in order to represent a Game in a Stone-compliant frontend. Stone-game
does not mandate moving the file of the ROM to another location, however doing so is not in violation of Stone-game
.
A game must store a Platform ID A Unique Identifier The file name to the main executable or ROM file of the game The human-readable title of the Game as it was on original release Miscellaneous metadata about the game such as description or publisher The CRC32 of the file name as specified earlier
SQL Schema
This section describes the table schema in how information on a game is to be stored.
Column | Type | Description |
---|---|---|
platform_id |
TEXT | Platform ID associated with the game's platform. See Stone-platform |
uuid |
TEXT PRIMARY KEY | 22 character unique identifier of the game |
filename |
TEXT | The path to the game |
name |
TEXT | The human-readable name or title of the game |
metadata |
TEXT | JSON-serialized representation of game metadata. Any valid JSON object can be stored here. |
crc32 |
TEXT | The CRC32 value of the ROM file as specified by the filename column |
Metadata
Stone-compliant emulator frontends may store whatever string metadata they wish about the game in the metadata
column. However, some pieces of metadata have keys that are specified by Stone. Such items should be stored and accessed under these keys. These keys do not have to be present, however, if the content described is stored, it should be stored under these keys in string format. It is suggested, that if media such as cover art is stored, that it be stored as specified in the kori specification, however it is not mandatory when implementing Stone.
Key | Description |
---|---|
game_description | The description of the game, such as the text on the back of the box or optional text |
game_title | The title of the game. Redundant to name |
game_releasedate | The original release date of the game in format "YYYY-MM-DD" |
game_publisher | The publisher of the game |
game_developer | The developer of the game |
game_region | The region in which the game was released. See Regions |
game_playtime | The playtime of the game if the emulator frontend supports playtime tracking |
snowflake_mediastorekey | If using snowflake mediastore, the mediastore key |
All other metadata can be stored freely per emulator frontend. Stone does not have restrictions on how any other metadata is stored in the metadata
column.
Regions
Stone-game generally follows GoodTools conventions when specifying country.
Code | Region |
---|---|
A | Australia |
As | Asia |
B | Brazil |
C | Canada |
Ch | China |
D | Netherlands (Dutch) |
E | Europe |
F | France |
G | Germany |
Gr | Greece |
HK | Hong Kong |
I | Italy |
J | Japan |
K | Korea |
Nl | Netherlands |
No | Norway |
R | Russia |
S | Spain |
Sw | Sweden |
U | United States |
UK | United Kingdom |
W | World |
Unl | Unlicensed |
PD | Public domain, free software and freeware |
Unk | Unknown country |