Difference between revisions of "Interplay ACM"

From MultimediaWiki
Jump to navigation Jump to search
(+Winamp plugin, etc.)
(link to a new tool; remove dead tools)
Line 8: Line 8:
* FourCC: 0x97 0x28 0x03 0x01
* FourCC: 0x97 0x28 0x03 0x01
* Tools:
* Tools:
** [[acmlab]] from [http://www.teamx.ru/ teamx.ru]
** [http://libacm.berlios.de/ libacm]: An open source library for decoding Interplay ACM files
** [http://winamp.com/plugins/details.php?id=98751 Winamp plugin]


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.
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.

Revision as of 22:18, 3 January 2013

  • Usage: Sound format
  • Examples: all Infinity Engine games (Baldur's Gate, Icewind Dale, Planescape: Torment), Fallout series
  • 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.

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) 0x0e

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;

};