This PR adds full support for ripping music from music archives into XM modules. Partial support was already implemented for pattern data only, but this adds on sample decoding and insertion, and fixes a bunch of errors in the previous audio ripping support. These are the changes that were made:
All samples are now placed into each XM file
The sample data is now properly decoded, using a length field and data header instead of guessing (this fixes a bug where PCM samples would get mixed together with ADPCM samples)
I've added a comment with a description of the contents of this header. It contains the same sort of data an XM sample header would, as well as envelope information.
Added support for PCM sample data alongside IMA ADPCM
Added built-in ADPCM decoding for conversion to XM
Swapped position of volume and effect type bytes (don't know why they did that)
This also fixes erroneous volume as well as missing effects
Fixed a few effects that had shifted parameters
Fixed the snake game music by adjusting erroneous transpose values
The name of each module is now saved in the file
Adjusted the formatting of some names
I've tested most of the sounds in both EPF and Herbert's Revenge, and they all sound good to me. However, if you find some problem, I can take a look and fix it.
This PR adds full support for ripping music from music archives into XM modules. Partial support was already implemented for pattern data only, but this adds on sample decoding and insertion, and fixes a bunch of errors in the previous audio ripping support. These are the changes that were made:
I've tested most of the sounds in both EPF and Herbert's Revenge, and they all sound good to me. However, if you find some problem, I can take a look and fix it.