GD3 Specification

From vgmrips

The GD3 tag is a bit like an ID3 tag only used for games. For further information on what goes into the fields, see Filling Out the Tags and Text File.

GD3 v1.00 tag spec

All values are written in Intel byte order. The GD3 tag begins with a "Gd3 " string. Next four bytes are the version number (current is 0x00,0x01,0x00,0x00) Next four bytes are a 32-bit length of the following data in bytes. The following data is a series of null-terminated strings of this form:

"Track name (in English characters)\0"
"Track name (in original (non-English) game language characters)\0"
"Game name (in English characters)\0"
"Game name (in original (non-English) game characters)\0"
"System name (in English characters)\0"
"System name (in original (non-English) game characters)\0"
"Name of Original Track Author (in English characters)\0"
"Name of Original Track Author (in original (non-English) game characters)\0"
"Date of game's release written in the form yyyy/mm/dd, or just yyyy/mm or yyyy if month and day is not known\0"
"Name of person who converted it to a VGM file.\0"
"Notes\0"
Note: "Japanese" was/is used in older programs to refer to the "original (non-English) game language".
Note: Two bytes are used to store every character, even English characters.

The null terminators are two zeros. e.g. 0x54 0x00 0x72 0x00 0x61 0x00 0x63 0x00 ... 0x00 0x00 New-line characters should only be in the notes field, where they are represented by 0x00 0x0a only. You can write 16-bit strings in Visual C++ like this:

unsigned short *MyString=L"Track name";

If a field in not used or unknown, it should be a empty string (i.e. two zero bytes for the null terminator).

Notes on Field Contents

Be careful to include the system name in a standard form. Here are some standard system names:

Keep spelling, spacing and capitalization the same.

Note that the "Original Track Author" might be the composer, arranger, programmer or any combination of these.