Changes

736 bytes added ,  17:02, 24 September 2009
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 a BLCK chunk.<br>
+
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
| 4
+
| 2
| Unknown
+
| Number of blocks per chunk
 +
|-
 +
| 0x000E
 +
| 2
 +
| Unknown (0xFFFF)
 
|-
 
|-
 
| 0x0010
 
| 0x0010
Line 51: Line 55:  
| 0x0020
 
| 0x0020
 
| 4
 
| 4
| Block size? (typically 0x2760)
+
| Block size (typically 0x2760)
 
|-
 
|-
 
| 0x0024
 
| 0x0024
Line 60: Line 64:  
=== BLCK chunk ===
 
=== BLCK chunk ===
   −
The BLCK chunk directly follows the AST header. It contains a 32-byte header, followed by the PCM16 sound data.<br>
+
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 it:
+
Here's a description of them:
    
{| class="wikitable"
 
{| class="wikitable"
Line 76: Line 80:  
| 0x0004
 
| 0x0004
 
| 4
 
| 4
| Block size? (typically 0x2760)
+
| 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)
55

edits