VGM (file format)

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

VGM (Video Game Music) is an audio format for multiple video game platforms, such as Sega's Master System, Game Gear, Mega Drive/Genesis, MSX, Neo Geo, PC (Adlib/SoundBlaster), and has recently expanded to a variety of arcade system boards.

The normal filename extension is .vgm, but files can also be Gzip compressed into .vgz files. Technically, .vgz files should be named .vgm.gz, but because some popular operating systems' file managers cannot handle file name suffixes that themselves contain a dot, .vgz is used in order to launch a VGM player (e.g. Winamp with the proper plugin) and not a data compression program such as WinZip or WinRAR.

On November 20, 2005, VGM 1.50 was officially announced, and a new version of the input plugin released. The new version of the format now supports PCM optimization for the Yamaha YM2612 sound chip, which makes sound files using the chip a lot smaller — sometimes with over 75% of size reduction. The first YM2612 VGM archive, Project 2612, optimized all of its packages soon after.

Version history

1.00 Initial public release
1.01 Rate value added
1.10 PSG white noise feedback and shift register width parameters added, with note on how to handle earlier version files.
1.50 VGM data offset added to header.

Data block support added, allowing for better handling of YM2612 PCM data. Both of these changes have the potential to cause problems, but are really good changes, so the version number has been increased all the way to 1.50.

1.51 Sega PCM, RF5C68, YM2203, YM2608, YM2610/B, YM3812, YM3526, Y8950, YMF262, YMF278B, YMF271, YMZ280B, RF5C164, PWM and AY8910 chips and commands added.Additional data block types RF5C68 RAM write, RF5C164 RAM write, Sega PCM ROM, YM2608 DELTA-T ROM, YM2610 ADPCM ROM, YM2610 DELTA-T ROM, YMF278B ROM, YMF271 ROM, YMF271 RAM, YMZ280B ROM and Y8950 DELTA-T ROM Data added. Data Block Types were split into four categories. (PCM Stream, compressed PCM Stream, ROM/RAM Dump, RAM write) SN76489 flags and loop modifier added.
1.60 RF5C68, RF5C164 and PWM PCM blocks and compressed data blocks added. A whole bunch of new commands (PCM RAM write and DAC Stream Control) added. A volume modifier and loop base was also added.
1.61 GameBoy DMG, NES APU, MultiPCM, uPD7759, OKIM6258, OKIM6295, K051649, K051649, HuC6280, C140, K053260, Pokey and Q-Sound chips added, including necessary data blocks. Changed number of operands from 1 to 2 for reserved commands 0x40-0x4E.
1.70 Added extra header with separate chip clocks for the second one of dual chips and chip volume adjustments.
1.71 (beta) SCSP, WonderSwan, Virtual Boy VSU, SAA1099, ES5503, ES5506, Seta X1-010, Namco C352, Irem GA20 added. (including necessary ROM data blocks) Data blocks (type 0x) for OKIM6258, HuC6280, SCSP and NES added. VGM v1.61 players support the data block of their respective chips, despite their late addition.

References

External links

  • VGM Specifications Technical specifications
  • Project 2612 - VGM archive for the Sega Genesis, Sega CD, and Sega 32X
  • SMS Power! - VGM archive for the Sega Master System, Mark III, Game Gear, SG-1000, SC-3000, SF-7000, and OMV
  • VGMRips - VGM archive of NES, Game Boy, PC, arcade systems, among others