AST file: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
AST files contain PCM16 (16-bit signed) sound data. They're used in Super Mario Galaxy for musics, and possibly in other games. | AST files contain PCM16 (16-bit signed) sound data. They're used in Super Mario Galaxy for musics, and possibly in other games. | ||
They contain an header followed by | They contain an header followed by BLCK chunks.<br> | ||
All the data in those files are big-endian, except where mentioned.<br> | All the data in those files are big-endian, except where mentioned.<br> | ||
All the offsets are absolute (from begining of file), except where mentioned.<br> | All the offsets are absolute (from begining of file), except where mentioned.<br> | ||
Line 30: | Line 30: | ||
|- | |- | ||
| 0x000C | | 0x000C | ||
| | | 2 | ||
| Unknown | | Number of blocks per chunk | ||
|- | |||
| 0x000E | |||
| 2 | |||
| Unknown (0xFFFF) | |||
|- | |- | ||
| 0x0010 | | 0x0010 | ||
Line 51: | Line 55: | ||
| 0x0020 | | 0x0020 | ||
| 4 | | 4 | ||
| Block size | | Block size (typically 0x2760) | ||
|- | |- | ||
| 0x0024 | | 0x0024 | ||
Line 60: | Line 64: | ||
=== BLCK chunk === | === BLCK chunk === | ||
The BLCK | The BLCK chunks directly follow the AST header. They contain a 32-byte header, followed by PCM16 sound data.<br> | ||
Here's a description of | Here's a description of them: | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 76: | Line 80: | ||
| 0x0004 | | 0x0004 | ||
| 4 | | 4 | ||
| Block size | | Block size (typically 0x2760) | ||
|- | |- | ||
| 0x0008 | | 0x0008 | ||
Line 84: | Line 88: | ||
| 0x0020 | | 0x0020 | ||
| variable | | variable | ||
| PCM16 data | | PCM16 data blocks | ||
|} | |} | ||
The data is divided into blocks. The number of blocks is defined by entry 0x000C in AST header.<br> | |||
The length of the blocks is defined by entry 0x0020 in AST header.<br> | |||
WARNING: The PCM16 data is stored in BIG-ENDIAN! Don't forget to byteswap each sample you read or your sound will be pure junk!<br> | WARNING: The PCM16 data is stored in BIG-ENDIAN! Don't forget to byteswap each sample you read or your sound will be pure junk!<br> | ||
Note: there's sound data for one channel only. Stereo mixing is performed by the Wii's DSP. | Note: there's sound data for one channel only. Stereo mixing is performed by the Wii's DSP. | ||
=== AST file structure === | |||
{| class="wikitable" | |||
|- | |||
! Element | |||
! Size | |||
|- | |||
| AST header | |||
| 64 bytes | |||
|- | |||
| BLCK chunk header | |||
| 32 bytes | |||
|- | |||
| PCM16 block 1 | |||
| N | |||
|- | |||
| PCM16 block 2 | |||
| N | |||
|- | |||
| ... | |||
| | |||
|- | |||
| PCM16 block N' | |||
| N | |||
|- | |||
| BLCK chunk header | |||
| 32 bytes | |||
|- | |||
| PCM16 block 1 | |||
| N | |||
|- | |||
| PCM16 block 2 | |||
| N | |||
|- | |||
| ... | |||
| | |||
|- | |||
| PCM16 block N' | |||
| N | |||
|- | |||
| BLCK chunk header | |||
| 32 bytes | |||
|- | |||
| ... | |||
| | |||
|} | |||
Where: | |||
- N is the number of blocks per BLCK chunk (entry 0x000C in AST header) | |||
- N' is the block size (entry 0x0020 in AST header) |
Revision as of 17:02, 24 September 2009
AST files contain PCM16 (16-bit signed) sound data. They're used in Super Mario Galaxy for musics, and possibly in other games.
They contain an header followed by BLCK chunks.
All the data in those files are big-endian, except where mentioned.
All the offsets are absolute (from begining of file), except where mentioned.
All the sizes are in bytes, except where mentioned.
AST header
The header is 64 bytes long. Here's a description of it:
Offset | Size | Description |
---|---|---|
0x0000 | 4 | "STRM" (0x5354524D) |
0x0004 | 4 | Size of the BLCK chunk |
0x0008 | 4 | Unknown (0x00010010) |
0x000C | 2 | Number of blocks per chunk |
0x000E | 2 | Unknown (0xFFFF) |
0x0010 | 4 | Sampling rate in Hz (typically 0x7D00 = 32000 Hz) |
0x0014 | 4 | Unknown |
0x0018 | 4 | Loopstart position in samples, from beginning of BLCK chunk |
0x001C | 4 | Unknown (typically same as entry 0x0014) |
0x0020 | 4 | Block size (typically 0x2760) |
0x0024 | 28 | Unknown |
BLCK chunk
The BLCK chunks directly follow the AST header. They contain a 32-byte header, followed by PCM16 sound data.
Here's a description of them:
Offset
(from beginning of BLCK chunk) |
Size | Description |
---|---|---|
0x0000 | 4 | "BLCK" (0x424C434B) |
0x0004 | 4 | Block size (typically 0x2760) |
0x0008 | 24 | Padding (zero) |
0x0020 | variable | PCM16 data blocks |
The data is divided into blocks. The number of blocks is defined by entry 0x000C in AST header.
The length of the blocks is defined by entry 0x0020 in AST header.
WARNING: The PCM16 data is stored in BIG-ENDIAN! Don't forget to byteswap each sample you read or your sound will be pure junk!
Note: there's sound data for one channel only. Stereo mixing is performed by the Wii's DSP.
AST file structure
Element | Size |
---|---|
AST header | 64 bytes |
BLCK chunk header | 32 bytes |
PCM16 block 1 | N |
PCM16 block 2 | N |
... | |
PCM16 block N' | N |
BLCK chunk header | 32 bytes |
PCM16 block 1 | N |
PCM16 block 2 | N |
... | |
PCM16 block N' | N |
BLCK chunk header | 32 bytes |
... |
Where: - N is the number of blocks per BLCK chunk (entry 0x000C in AST header) - N' is the block size (entry 0x0020 in AST header)