Vgm sro

From vgmrips

VGM Sample-ROM Optimizer. Used when the game preloads data. When the game streams RF5C68/164 data in realtime, use optvgmrf.

It strips all unused data by itself (inaudibly-lossy compression). It only shows what it has done.

Commandline syntax is:

vgm_sro [-strip-empty] [input.vgm] [output.vgm]

The optional -strip-empty can be used to strip datablocks completely when they are empty. (Default is to keep the ROM allocation intact.)

Like vgm_cmp, this tool can greatly reduce the size of a VGM. It strips unused data from sample ROMs. The file size of optimized files usually decreases to 5-10%.

Before any data is stripped, vgm_sro will display all ROM regions, so you can see what data is stripped.

The following chips are supported:

  • C140
  • C219
  • C352
  • ES5503
  • ES5506
  • Irem GA20
  • K053260
  • K054539
  • NES APU (DPCM data)
  • OKIM6295
  • Q-Sound
  • RF5C68/RF5C164 (if not streamed)
  • SegaPCM
  • UPD7759 (if not streamed)
  • X1-010
  • Y8950 (DELTA-T)
  • YM2608 (DELTA-T)
  • YM2610 (ADPCM and DELTA-T)
  • YMF278B (ROM and RAM)
  • YMF271
  • YMZ280B
  • YRW258/MultiPCM

It will still incorrectly strip K053260 PCM roms.

Notes:

  • When there is nothing to be optimized, vgm_sro won't write an output file
  • SegaPCM support isn't 100% safe. That means, that there may be samples stripped off, although they're used. That can happen between 2 memory writes that relocate the playing address and shouldn't be audible.