Tune

A VGM file is a log, not audio: a timestamped list of register writes captured off a real machine. So we do not need anyone's emulator to play one. We already have the chip. We just read the log and poke the same bytes, at the same moments, into the same 256 bytes every other page here is built on.

So everything below is live. The waveform editors will redraw mid-tune, because that is a real driver swapping instruments between sections. The volume sliders move because there is no envelope generator and something has to write them fifty times a second. The memory inspector flickers exactly where the music is being made.

Drop a .vgm or .vgz here

or — nothing is uploaded; the file is read in your browser and never leaves it.

An original SCC+PSG piece, generated by tools/make-demo-vgm.mjs rather than ripped — it swaps waveforms, bends periods for vibrato, doubles ch4/ch5 an octave apart on their shared table, and puts the drums on the PSG's noise channel.

What this page does and does not play

It plays the SCC and the MSX PSG — the second chip is where these tunes keep their drums, since the SCC has no noise. A VGM that also drives an OPLL or an arcade chip plays its SCC and PSG parts and stays silent on the rest. The chips a file declares are listed above, so you can see what is missing.

No emulator is involved. The SCC audio comes from js/scc-core.js, the same synth as every other page here; the PSG from js/psg-core.js, borrowed from the sister PSG project. Both are written from documented behaviour, and the VGM reader (js/vgm.js) from the format specification. Nothing is uploaded and nothing is bundled.

Why not .kss? A KSS file is not a log — it is an MSX program: Z80 machine code plus its own replayer, which has to be executed to produce any register writes at all. Playing one means shipping a Z80 CPU and a model of the machine around it, and that emulator would then generate its own audio, bypassing the chip model this entire site exists to expose. A VGM already contains the interesting part: the writes.