What you'll need

VGM Header

Depending on which emulator you used, you may need to update your VGM file's header to a newer version to enable newer features.

Playback rate adjustment

Update the Version to at least 1.01, and specify the Playback rate. The rate should reflect the console settings used when the VGM was recorded. By specifying this, player software can adjust to a user-specified rate - for example, to play at 50Hz instead of 60Hz.

Files recorded with "PAL" or "European" emulator settings should be set to 50Hz, those recorded with "NTSC", "US" or "Japan" settings should be set to 60Hz.

Alternatively, press the Detect button. This will scan through the file, looking for 1-frame wait commands; when it finds one, it will see if it corresponds to a 50Hz or 60Hz file. It will also update the VGM version, unless the value is greater than 1.01.

Finally, click on Update header to write the new header to the file.

YM2612 and YM2151 chip clocks

If you have a VGM that's using one of these chips (not used on SMS/GG), and the version is less than 1.10, the Chip clock will be in the YM2413 field instead of the correct field. You can update the version to 1.10 and move the number to the right field, then click Update header to write the new header to the file.

PSG settings

If the file is for SG-1000, SC-3000, Colecovision, BBC Model B, or other systems that used a discrete PSG chip, then you should change the Feedback and SR width fields to match the appropriate chip. If you don't, the noise channel will sound wrong on those chips. You must increase the Version to 1.10 for it to take effect.

These fields must also be filled in for systems using Sega PSG implementations, if the version is 1.10 or more.

Removing offsets

When you look at a VGM file's output WAV file you might notice that sometimes, the waveform is offset from the centre line. For example (Out Run 3D Magical Sound Shower):

In the areas I've marked in red, the waveform has deviated from the centre. The technical reason for this is, the PSG has had one or more channels set to a zero (or very low) frequency value, which stops it outputting any sound; but the volume has not been set to zero. This effect is used by some games to play samples (voices), so it cannot be automatically removed from every file, just those without samples.

If there is an offset affecting music, it is noticeable as most speakers don't operate as efficiently when there is an offset to the audio, and the music sounds muffled. So it is desirable to remove it if possible. To do this, check the Remove silent PSG/offsets box and click on Optimise. The results message box will tell you how many offsets have been removed.

Remember, removing offsets will also remove sampled sounds!

Also, VGMTool 2 optimises the YM2413 slightly wrong, so you shouldn't optimise vgms that use the YM2413 chip.

Removing unnecessary data

It is quite common for a game playing PSG music to write to the FM chip, or vice versa. The data it writes will be included in the VGM, but it does not produce any sound. So,

There is also a problem with some emulators producing VGM files containing data for unused chips.

Additionally, it is common for there to be data in a VGM file which produces no output. It is difficult to reliably detect these problems in code, which is why you are needed.

Open the Data usage/strip tab and click on Count to analyse the data to find and the number of writes to each channel of each chip. If a channel has no writes then its checkbox will be disabled, otherwise the number will be displayed next to the checkbox.

The All button will check all the checkboxes, although there's very little point stripping all data. The None will deselect all of them - again, there's no point stripping no data. The Invert button will invert the selection - checked become unchecked and vice versa. Guess will do a very basic guess as to which channels should be removed - all it does is select the channels which are used less than 2% as much as the most commonly used channel for that chip.

When you have selected the channels you want to remove, click on Strip checked to remove them. Because this is a destructive process, the data will always be output to a new filename, based on the old. You should check that no necessary data has been removed.

One way to check to see if channels can be safely removed is to remove all channels except the ones you think can be removed, then write the output VGM to a wave file. You can look very quickly in a wave editor to see if it is a flat line or not.

Note that the YM2413 uses channels 6 to 8 as dual-purpose channels, as the data in the corresponding chip registers also affects the rhythm mode instruments (percussion). So, when stripping those channels you'll ususally find that not all of the data is removed or the drums sound wrong.


< Tagging | How To Make VGMs | File Naming >



Return to top
0.227s