Hardware VGM Player

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 many others. I created a hardware VGM player using sound chips from a Sega Genesis (YM2612), Sega Mega System (PSG) and Yamaha PSS-170 Keyboard (YM2413). I presented this player at Notacon 6 and used this circuit as a starting point for my later project Duino Demo.

Desoldering the YM2612 from the Sega Genesis (Megadrive)

I took apart a Genesis Model 1 and removed its FM Chip. This sound chip needed a separate amplifier.

Here is the circuit playing the first stage of Altered Beast which features the YM2612 FM chip. The VGM files are streamed from the microSD card to the sound chips via SPI bus. The text microvga.com display module provides 80×25 16color text mode to VGA output and gives me a free PS/2 keyboard input via SPI Bus.  The microcontroller used in an Arduino nano ATmega328

Desoldering the YM2413 from a Yamaha PSS-170 Keyboard

I added a YM2413 sound chip from a Yamaha PSS-170 Keyboard.

Here is the circuit playing the “Space Harrier” theme used in the Japanese Sega Master System BIOS version 2.1 which uses both YM2413 (FM) and SN76489 (PSG) sound chips simultaneously. The second song in the video is the cave theme from the master system version of “Phantasy Star” which only features the YM2413 chip.

Notacon Presentation

Comparing Audio Output

I wanted to compare the audio accuracy of my hardware VGM player to an emulator. The top waveform was recorded from the circuit. The bottom waveform is output from emulator (IN_VGM). I used the IN_VGM winamp plugin to create the ’emulated’ recording

VGM Music File

MML Source

Circuit Output Recording WMA

IN_VGM Output M3