Introduction

On August 5, 2001 Dave posted a message on the S8-dev forum asking "Is there currently a format similar to GYM which logs YM2413 signals and PSG signals so they can be played in WinAMP?". It turns out there was not a format that met his requirements (Charles MacDonald's SSL was not able to store samples (voices)), so Dave invented a new format, retaining the similarity to GYM (a Mega Drive music logging format), which was able to store music from a wide range of systems, including the Master System and Mega Drive.

The format was tweaked and modified over the next two months, on the S8-dev forum - Maxim wrote a Winamp input plugin to play the test files Dave was producing using Dega; Bock added the feature to Meka; the file format went through several name changes, eventually being called VGM as a nice general name, not specific to any one person, system or emulator. VGM stands for Video Game Music.

Capabilities

VGM logs the data written to the sound chips by games. As of version 1.61 it can store data written to these chips:

CompanyChipSome of the systems which use it
Texas InstrumentsSN76489 / SN76496Master System, Mark III, SG-1000, SC-3000, Game Gear (with stereo extensions), Mega Drive/Genesis, BBC Micro
Texas InstrumentsT6W28NeoGeo Pocket (variant of the SN76489)
YamahaYM2413Japanese Master System & Mark III, MSX-1 with FM-PAC
YamahaYM2612Mega Drive/Genesis
YamahaYM2151various arcade games
SegaSega PCMvarious arcade games
RicohRF5C68System 18, System 32 arcade games
YamahaYM2203various arcade games
YamahaYM2608a few arcade games
YamahaYM2610/Bvarious arcade games, NeoGeo Consoles
YamahaYM3812PC with AdLib or Sound Blaster, various arcade games
YamahaYM3526various arcade games
YamahaY8950MSX with MSX-Audio, a few arcade games
YamahaYMF262PC with Sound Blaster 16, a few arcade games
YamahaYMF278BMSX with Moonsound, a few arcade games
YamahaYMF271a few arcade games
YamahaYMZ280Bvarious arcade games
RicohRF5C164Sega Mega CD
SegaPWMSega 32x
General InstrumentAY-3-8910 / YM2149FMSX, various arcade games
NintendoGameBoy DMGNintendo GameBoy
NintendoNES APUNintendo Entertainment System
YamahaMultiPCMSega System 32/Multi32, Sega Model 1/2 arcade games
NECUPD7759various arcade games
OKIMSM6258Sharp X68000
OKIMSM6295various arcade games
KonamiK051649MSX with SCC1, a few arcade games
KonamiK054539various arcade games
Hudson SoftC6280PC-Engine/Turbo Grafx 16, a few arcade games
NamcoC140a few arcade games
KonamiK053260a few arcade games
AtariPokeyAtari computer, Atari arcade games
CapcomQSoundCapcom CPS-1/CPS-2 arcade games

It is a simple task to add most new hardware to the format, if necessary.

VGM is a 44100Hz sample-accurate logging format; it can record a practically unlimited number of sound hardware changes per sample. It can also be used as a frame-accurate format, to create even smaller files at the expense of some accuracy (samples will not work, but music will generally not be affected noticeably).

GD3 was invented to allow text information to be stored in VGM files; it is a similar concept to ID3 tags in MP3 files, this being the reason for the similarity in name. GD3 tags are also extensible; they store various information in Unicode format, allowing the use of any characters, including non-Roman alphabets. Information stored by GD3 v1.00 includes the track, game and system names; author, date of game release, name of the file creator, and any miscellaneous notes. Several of these are stored twice, in the Roman alphabet and in Japanese if possible.

VGM7z was invented to help solve the problem that there is often redundancy in the information in VGM files within a game, which cannot be easily exploited when the files themselves are compressed as this obfuscates the redundant data. The solution is a format that packages multiple uncompressed files using a compression scheme that can make use of this redundancy to increase the overall package compression.

Official Specifications

Note: Older specifications may have mistakes that were fixed in newer versions.



Return to top
0.131s