Interplay ACM

From MultimediaWiki
Revision as of 12:45, 16 October 2016 by Multimedia Mike (talk | contribs) (note about endian-ness)
Jump to navigation Jump to search
  • Usage: Sound format
  • FourCC: 0x97 0x28 0x03 0x01
  • Tools:
    • libacm: An open source library for decoding Interplay ACM files

This is a lossy compressed audio format with a rather weak compression ratio. (converted to WAV then recompressed to OGG makes it roughly half size). ACM files can be in varying sample rates, but the common one is 22050 Hz, 16 bits and stereo.

File Format

Multi-byte numbers are little-endian.

The ACM header:

0x00   FOURCC
0x04   sample count
0x08   channel count (some ACM files lie about the channel count)
0x0a   sample rate
0x0c   levels (4 bits) and subblocks (12 bits)
struct ACM_Header {
       long fourcc;
       long samples;
       unsigned short channels;
       unsigned short rate;
       unsigned short levels : 4;
       unsigned short subblocks : 12;

The infinity games also contain a WAVC header which contains mostly redundant information. These files are used for all sound except music (ambients, voice over, sound effects).

The WAVC header:

struct WAVC_HEADER {
       char wavc_sig[4];  //WAVC
       char wavc_ver[4];  //V1.0
 long uncompressed;       //the uncompressed length (i guess it is raw pcm)
 long compressed;         //the compressed length
 long headersize;         //28 (the size of this header, also the offset to the ACM header)
 short channels;          //1 or 2
 short bits;              //8 or 16
 short samplespersec;     //usually 22050
 short unknown;

Games Using Interplay ACM