STRM Specification

Finally I got 'em all!

Offset Size Description
00h 4 Group ID "STRM"
04h 2 Unknown (always FFh FEh)
06h 2 Unknown (always 00h 01h in STRM)
08h 4 Size
0Ch 2 Header Size (always 10h)
0Eh 2 Number of Chunks (always 2)
10h 4 Chunk ID "HEAD"
14h 4 Chunk Size
18h 1 Wave Type (0:PCM8/1:PCM16/2:(IMA-)ADPCM)
19h 1 Loop Flag (bool)
1Ah 1 Channels
1Bh 1 Reserved (always 0)
1Ch 2 Sampling Rate (perhaps resampled from the original)
1Eh 2 Time? (1.0 / rate * 1.6756991e7*1 / 32)
20h 4 Loop Offset (samples)
24h 4 Number of Samples
28h 4 Data Offset (always 68h)
2Ch 4 Number of Blocks
30h 4 Block Length (Per Channel)
34h 4 Samples Per Block (Per Channel)
38h 4 Last Block Length (Per Channel)
3Ch 4 Samples Per Last Block (Per Channel)
40h 4 Reserved (always 0)
44h 4 Reserved (always 0)
48h 4 Reserved (always 0)
4Ch 4 Reserved (always 0)
50h 16 Padding (always 0)
60h 4 Chunk ID "DATA"
64h 4 Chunk Size
68h 4 Wave Data (see the following for details)

Wave Data

A Block is the same as SWAV Wave Data.

Mono
  1. Block 1
  2. Block 2
  3. ...
  4. Block N (Last Block)
Stereo
  1. Block 1 L
  2. Block 1 R
  3. Block 2 L
  4. Block 2 R
  5. ...
  6. Block N L (Last Block)
  7. Block N R (Last Block)

*1:ARM7_CLOCK:33.513982MHz / 2