CSMP (File Format): Difference between revisions
Jump to navigation
Jump to search
Undo revision 359 by Parax0 (talk)
>Aruki m (Minor edits for grammar/consistency) |
imported>Antidote |
||
(9 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
The '''.CSMP file format''' is an audio format seen in Retro Studios games starting in Metroid Prime 3. It's very similar in use to [[AGSC (File Format)|AGSC]] and usually contains sound affects. Where CSMP differs is the fact that it only contains one sound and is broken up into obvious data chunks with easily identifiable sizes. | The '''.CSMP file format''' is an audio format seen in Retro Studios games starting in Metroid Prime 3. It's very similar in use to [[AGSC (File Format)|AGSC]] and usually contains sound affects. Where CSMP differs is the fact that it only contains one sound and is broken up into obvious data chunks with easily identifiable sizes. | ||
{{todo|Notate Tropical | {{todo|Notate Tropical Freeze differences.}} | ||
__TOC__ | __TOC__ | ||
== | == Format == | ||
CSMP files are made up of a number of data chunks. Since not every file always has every chunk, the best way to read a CSMP file is to use a while loop to check the chunk headers and parse their contents until you reach the end of the file. | |||
=== Header === | |||
This is the header structure found in Metroid Prime 3 and Donkey Kong Country Returns; Tropical Freeze's is a bit different. | |||
{|class="wikitable" | {|class="wikitable" | ||
!Offset | ! Offset | ||
!Size | ! Size | ||
!Description | ! Description | ||
|- | |- | ||
|0x0 | | 0x0 | ||
|4 | | 4 | ||
|'''"CSMP" magic''' fourCC | | '''"CSMP" magic''' fourCC | ||
|- | |- | ||
|0x4 | | 0x4 | ||
|4 | | 4 | ||
|'''Version'''; always 1 | | '''Version'''; always 1 | ||
|} | |} | ||
== Chunk == | === Chunk Header === | ||
Every chunk begins with this header; it contains a brief data type identifier and a size. | |||
{|class="wikitable" | {|class="wikitable" | ||
!Offset | ! Offset | ||
!Size | ! Size | ||
!Description | ! Description | ||
|- | |- | ||
|0x0 | | 0x0 | ||
|4 | | 4 | ||
|'''Chunk type''' | | '''Chunk type''' fourCC | ||
|- | |- | ||
|0x4 | | 0x4 | ||
|4 | | 4 | ||
|'''Chunk size (N)''' | | '''Chunk size (N)''' | ||
|- | |- | ||
|0x8+N | | 0x8+N | ||
|colspan=2|End of chunk | | colspan=2 {{unknown|End of chunk}} | ||
|} | |} | ||
=== NAME === | === NAME === | ||
Line 59: | Line 59: | ||
!Description | !Description | ||
|- | |- | ||
|0x0 | | 0x0 | ||
|1 | | 1 | ||
|'''Unknown''' | | {{unknown|'''Unknown''' | ||
|- | |- | ||
|0x1 | | 0x1 | ||
|1 | | 1 | ||
|'''Loop Flag''' | | '''Loop Flag''' | ||
|- | |- | ||
|0x2 | | 0x2 | ||
| 4 | | 4 | ||
|'''Unknown''' | | {{unknown|'''Unknown'''}} | ||
|- | |- | ||
|0x6 | | 0x6 | ||
|2 | | 2 | ||
|'''Unknown''' | | {{unknown|'''Unknown'''}} | ||
|- | |- | ||
|0x8 | | 0x8 | ||
|4 | | 4 | ||
|'''Volume''' | | '''Volume''' | ||
|} | |} | ||
=== PAD === | === PAD === | ||
This chunk is just padded with 0xFF; usually contains 0x14 bytes. | |||
=== DATA === | === DATA === | ||
Refer to the [[DSP (File Format)|DSP]] page for details. | The DATA section essentially just embeds a standard DSP, including the full header and ADPCM audio data. Refer to the [[DSP (File Format)|DSP]] page for details. Note that for some reason, the DATA chunk is always 4 bytes smaller than its size indicates. | ||
[[Category:File Formats]] | [[Category:File Formats]] |