MoonSound sparse PCM loading

Several arcade OPL4 VGMs use ROM banks whose size exceeds the memory of most MoonSound cartridges. However tracks generally do not use all of those samples at the same time, and VGMs are generally optimised to exclude the unused sample data with the vgm_sro tool.

ROM banks can also specify up to 512 instruments, whereas in the standard MoonSound configuration with the YRW801 ROM and RAM in the second half of the memory space, we can only define 128 instruments.

To make those tracks fit in the MoonSound memory, VGMPlay could load the sample data blocks compactly, leaving no empty space in-between (where the unused samples originally used to be), and adjust the addresses in the wave header table accordingly. To fit the limited number of instrument definitions, if an instrument is referencing an unused address, it should be removed from the table and the instruments should be renumbered.

bitbucket:Laurens Holst
Assigned to
1 year, 8 months ago
5 months ago
No labels applied.

bitbucket:Laurens Holst 1 year, 6 months ago

Does not apply to the DalSoRi R2, for which support just got implemented (#15).

Register here or Log in to comment, or comment via email.