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
(Undo revision 359 by Parax0 (talk))
 
(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 freeze differences ([[User:Parax0|Paraxade]] do you know anything?)}}
{{todo|Notate Tropical Freeze differences.}}


__TOC__
__TOC__


== Header ==
== Format ==


This is the header structure found in Metroid Prime 3 and Donkey Kong Country Returns; Tropical Freeze's seems to be a bit different. The file can be read using a simple while loop; each chunk sets its own size.
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.


{{todo|We've had success getting audio out of Tropical Freeze, crediar mentioned ddspadpcm being used in Tropical Freeze. What is it? And can we find any information on it?}}
=== 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 (usually, subtract 4 when the chunk type is equal to 0x44415441 ["DATA"])
| colspan=2 {{unknown|End of chunk}}
|}
|}
== Chunk Types ==
The structure for each chunk are as follows:


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


Padding; just skip this chunk using its size value.
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]]
Anonymous user

Navigation menu