Difference between revisions of "VGM"

From Video Game Music Preservation Foundation Wiki
Jump to: navigation, search
(Links)
(Players)
Line 27: Line 27:
  
 
* [[Audio Overload]] - Linux, Macintosh, Windows
 
* [[Audio Overload]] - Linux, Macintosh, Windows
* [[VGMPlay]]<ref>https://github.com/vgmrips/vgmplay</ref> - Linux, Macintosh, Windows
+
* [[VGMPlay]]<ref>https://github.com/vgmrips/vgmplay github.com/vgmrips/vgmplay</ref> - Linux, Macintosh, Windows
 
* [[Game Emu Player]] - foobar2000
 
* [[Game Emu Player]] - foobar2000
 
* [[VGM Input]] - Winamp, foobar2000
 
* [[VGM Input]] - Winamp, foobar2000

Revision as of 08:49, 22 November 2018

Video Game Music
VGM.png
Developer: Dave, Maxim, Valley Bell
Header: Custom
Content: Log
Instruments: Combined
Target Output
Output - Digital Audio.png Output - MIDI - No.png Output - FM Synthesis.png Output - PSG.png
Released: 2001
First Game: N/A
Extensions
  • *.vgm
  • *.vgm7z
  • *.vgz

The Video Game Music format logs the audio instructions sent to a wide variety of audio chips used in 8 and 16-bit video game consoles, arcade consoles, pinball machines, and home computers and has become the de facto standard format for retro video game music. Since VGM logs the instructions send to an audio chip, playback can be made simply by sending the log to chip or properly emulated chip, which will yield identical sound as the game. To use a piano metaphor, VGM doesn't copy the sheet music, and it doesn't record the played music with a microphone, rather it records the motions made by the hands of the pianist.

While this method bypasses having to decipher the countless custom methods for storing and playing video game music that developers have thought up over the years, it is not without its share of problems. Only the processed data is recorded, not the original files and code. This means that it is not possible to easily edit the music once it is recorded. It also means that each song must be timed by hand since the audio chip never sees the actual start and stop of looping music. For this reason, many VGMs can have trimming errors, particularly ones on SMS Power. However, ValleyBell developed a program named vgmlpfnd which finds loops, though it cannot be used with games that have strange sound drivers.

There are two common ways to compress VGM files and keep them playable in updated VGM players. The most common way is to compress each VGM song using ZIP compression, and replace the *.zip extension with *.vgz. The second method is to compress a collection of VGM songs into a 7Z archive and replace the *.7z extension with *.vgm7Z. The second method compresses much better than the first, but isn't as widely supported. Any of the three formats are acceptable on this site, though vgm7z is preferred.

Players

(Category)

Editors

(Category)

Converters

(Category)

VGM to ?

? to VGM

Games

(Category)

The vast majority of 8 and 16-bit video game consoles, home computers, and arcade cabinets can have their music logged into VGM format.

How to Obtain

VGM music is usually logged using an emulator that can capture instructions sent to an audio chip. This requires actually being able to get to a point in the game where music is played, and often teasing out sound effects that may be played at the same time. Finally, the VGM log must be timed by listening to when the music loops. While the process isn't too difficult, it is quite time consuming. Thankfully, a large variety of games have already been logged to VGM format and can be downloaded from these following sites:

You can learn how to rip VGMs here.

Technical

Chips

Chip Manufacturer Devices
051649 Konami MSX with SCC1, and some Konami arcade games.
053260 Konami Some Konami arcade games.
054539 Konami Some Konami arcade games.
AY-3-8910 General Instrument Hundreds of arcade games, Mockingboards Sound I and Sound II, MSX, Oric 1, Colour Genie, Elektor TV Games Computer (Expanded Version)
AY-3-8912 General Instrument Vectrex, Amstrad CPC, ZX Spectrum 128, some arcade games.
AY-3-8913 General Instrument Mockingboards A, C, D, M, and v1, some arcade games.
AY-3-8914 General Instrument Intellivision, Intellivision II
C012294 (POKEY) Atari Atari 8-bit home computers.
ES5503 Ensoniq Apple IIgs
C140 Namco Several Namco arcade games.
DMG-CPU B Nintendo Game Boy
HuC6280 Hudson Turbo Grafx 16, a some arcade games.
MSM6258 OKI X68000
MSM6295 OKI Some arcade games.
PWM Sega Sega 32x
Q-Sound Capcom Capcom CPS-1 and CPS-2 arcade platforms.
RF5C164 Ricoh Sega Mega CD
RF5C68 Ricoh System 18 and System 32 arcade platforms.
RP2A03 (APU) Ricoh Nintendo Entertainment System.
Sega PCM Sega Various arcade games.
SN76489 / SN76496 Texas Instruments BBC Micro, Game Gear (with stereo extensions), Mark III, SC-3000, Master System, Tandy 3 Voice, SG-1000, and Genesis.
T6W28 Texas Instruments NeoGeo Pocket (variant of the SN76489).
UPD7759 NEC Various arcade games.
VSU Nintendo Virtual Boy
Y8950 Yamaha MSX with MSX-Audio, a few arcade games.
YM2149 (SSG) Yamaha MSX2, Atari ST.
YM2151 (OPM) Yamaha Capcom CPS-1, and Sega arcade platforms and the Sharp X68000.
YM2203 (OPN) Yamaha NEC PC-8801, PC-9801-23K, various arcade games.
YM2413 (OPLL) Yamaha Japanese Master System, Mark III, and the MSX-1 with FM-PAC, VRC7.
YM2608 (OPNA) Yamaha NEC PC-8801, NEC PC-9801, PC-8801-23, PC-9801-86, some arcade games.
YM2610 (OPNB) Yamaha NeoGeo, various arcade games.
YM2612 (OPN2) Yamaha Genesis, FM Towns.
YM3526 (OPL) Yamaha Various arcade games.
YM3812 (OPL2) Yamaha PC with AdLib or Sound Blaster, and various arcade games.
YMF262 (OPL3) Yamaha PC with Sound Blaster 16, and some arcade games.
YMF271 Yamaha Some arcade games.
YMF278B (OPL4) Yamaha MSX with Moonsound and some arcade games.
YMZ280B Yamaha Various arcade games.

There are some chips such as the Namco WSG, DCS and 6581 which are not intended to be implemented into the format. The former chip is not currently implemented due to being part of a family of chips, but it is possible it may be supported in the future.

Game Gear VGM Glitch

Sometimes, VGM files logged through Game Gear games will not play. This can be fixed by changing the 4F byte (usually located from 0040 to 004F) to FF.

Links

  1. https://github.com/vgmrips/vgmplay github.com/vgmrips/vgmplay