RAS (File Format): Difference between revisions
From Wexos's Wiki
Jump to navigationJump to search
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
'''RAS''' ('''R''' | '''RAS''' ('''R'''etroStudios '''A'''udio '''S'''tream?) is a streamable audio file format used in [[Donkey Kong Country Returns]]. | ||
= File Format = | = File Format = | ||
| Line 11: | Line 11: | ||
| 0x00 || Char[4] || '''File magic'''. Always ''RAS_'' (0x5241535F) in ASCII. | | 0x00 || Char[4] || '''File magic'''. Always ''RAS_'' (0x5241535F) in ASCII. | ||
|- | |- | ||
| 0x04 || UInt32 | | | 0x04 || UInt32 || '''Version number'''. Always 2 in Donkey Kong Country Returns. | ||
|- | |- | ||
| 0x08 || UInt32 | | | 0x08 || UInt32 || '''Number of channels'''. | ||
|- | |- | ||
| 0x0C || UInt32 || {{Unknown-left|'''Unknown'''.}} | | 0x0C || UInt32 || {{Unknown-left|'''Unknown'''. Seems to be some size related to the last block.}} | ||
|- | |- | ||
| 0x10 || UInt32 | | | 0x10 || UInt32 || '''Number of [[#Unknown|unknowns]]'''. | ||
|- | |- | ||
| 0x14 || UInt32 || '''Sample rate''' in Hz. | | 0x14 || UInt32 || '''Sample rate''' in Hz. | ||
| Line 29: | Line 29: | ||
| 0x24 || UInt32 || '''Number of blocks''' per channel. | | 0x24 || UInt32 || '''Number of blocks''' per channel. | ||
|- | |- | ||
| 0x28 || UInt32 || {{Unknown-left|'''Unknown'''.}} | | 0x28 || UInt32 || {{Unknown-left|'''Unknown''', seems to be some sort of size in bytes or samples.}} | ||
|- | |- | ||
| 0x2C || UInt32 || | | 0x2C || UInt32 || '''Number of samples''' in the last block per channel. | ||
|- | |- | ||
| 0x30 || UInt32 || '''Loop start block''' index. | | 0x30 || UInt32 || '''Loop start block''' index. | ||
| Line 41: | Line 41: | ||
| 0x3C || UInt32 || '''Loop end sample''' into the loop end block specified above. | | 0x3C || UInt32 || '''Loop end sample''' into the loop end block specified above. | ||
|} | |} | ||
The file has looping defined if ''loop end block index'' or ''loop end smaple'' is not zero. | |||
== DSP ADPCM Channel Info == | == DSP ADPCM Channel Info == | ||
| Line 52: | Line 54: | ||
| 0x20 || UInt16 || Gain. | | 0x20 || UInt16 || Gain. | ||
|- | |- | ||
| 0x22 || | | 0x22 || Int16 || Pred scale. | ||
|- | |- | ||
| 0x24 || Int16 || Yn 1. | | 0x24 || Int16 || Yn 1. | ||
| Line 65: | Line 67: | ||
|- | |- | ||
| 0x2E || byte[2] || '''Padding'''. | | 0x2E || byte[2] || '''Padding'''. | ||
|} | |||
== Unknown == | |||
After channel infos, there is an unknown structure with the following layout: | |||
{| class="wikitable" | |||
! Offset !! Type !! Description | |||
|- | |||
| 0x00 || Float || {{Unknown-left|'''Unknown'''.}} | |||
|- | |||
| 0x04 || UInt32 || {{Unknown-left|'''Unknown'''.}} | |||
|- | |||
| 0x08 || UInt16 || {{Unknown-left|'''Unknown'''.}} | |||
|- | |||
| 0x0A || Byte[2] || {{Unknown-left|'''Unknown'''.}} | |||
|- | |||
| 0x0C || UInt32 || {{Unknown-left|'''Unknown'''.}} | |||
|} | |} | ||
Latest revision as of 15:59, 11 July 2025
RAS (RetroStudios Audio Stream?) is a streamable audio file format used in Donkey Kong Country Returns.
File Format
Header
The file starts with the following header:
| Offset | Type | Description |
|---|---|---|
| 0x00 | Char[4] | File magic. Always RAS_ (0x5241535F) in ASCII. |
| 0x04 | UInt32 | Version number. Always 2 in Donkey Kong Country Returns. |
| 0x08 | UInt32 | Number of channels. |
| 0x0C | UInt32 | Unknown. Seems to be some size related to the last block. |
| 0x10 | UInt32 | Number of unknowns. |
| 0x14 | UInt32 | Sample rate in Hz. |
| 0x18 | UInt32 | Sound data offset. |
| 0x1C | UInt32 | Sound data size in bytes. |
| 0x20 | UInt32 | Block size in bytes. |
| 0x24 | UInt32 | Number of blocks per channel. |
| 0x28 | UInt32 | Unknown, seems to be some sort of size in bytes or samples. |
| 0x2C | UInt32 | Number of samples in the last block per channel. |
| 0x30 | UInt32 | Loop start block index. |
| 0x34 | UInt32 | Loop start sample into the loop start block specified above. |
| 0x38 | UInt32 | Loop end block index. |
| 0x3C | UInt32 | Loop end sample into the loop end block specified above. |
The file has looping defined if loop end block index or loop end smaple is not zero.
DSP ADPCM Channel Info
After the header there is a DSP ADPCM channel info data structure, one per channel. It has the following structure:
| Offset | Type | Description |
|---|---|---|
| 0x00 | Int16[8][2] | 16-bit Coefficients. |
| 0x20 | UInt16 | Gain. |
| 0x22 | Int16 | Pred scale. |
| 0x24 | Int16 | Yn 1. |
| 0x26 | Int16 | Yn 2. |
| 0x28 | UInt16 | Loop pred scale. |
| 0x2A | Int16 | Loop Yn 1. |
| 0x2C | Int16 | Loop Yn 2. |
| 0x2E | byte[2] | Padding. |
Unknown
After channel infos, there is an unknown structure with the following layout:
| Offset | Type | Description |
|---|---|---|
| 0x00 | Float | Unknown. |
| 0x04 | UInt32 | Unknown. |
| 0x08 | UInt16 | Unknown. |
| 0x0A | Byte[2] | Unknown. |
| 0x0C | UInt32 | Unknown. |
Sound Data
The sound data is stored in DSP ADPCM format. The header may allow specifying other formats, but it is currently unknown if that is the case.
Tools
The following tools can handle RAS files: