Sound Bank: Difference between revisions

Content added Content deleted
No edit summary
(yup, this file is *still* a PITA)
Line 1: Line 1:
An audio container format developed by Electronic Arts and used exclusively by Burnout's PlayStation Portable releases. It uses the extension <code>.SDT</code>.
An audio container format developed by Electronic Arts and used extensively by various EA-published games released in the 2000s, including Burnout's PlayStation Portable releases. This version uses the extension <code>.SDT</code>.


= Layout =
= Layout =
== SDT ==
{|class="wikitable"
{|class="wikitable"
|-
|-
Line 11: Line 10:
! Notes
! Notes
|-
|-
| 0x00 || File magic || uint || <code>0x424E4B6C</code> (<code>BNKl</code>) ||
! colspan="5" | Header
|-
|-
| 0x00 || File magic || UInt32 || <code>BNKl</code>/<code>0x424E4B6C</code> ||
| 0x04 || Version number || uint16 || <tt>0x05<tt> ||
|-
|-
| 0x04 || Version number || UInt32 || <tt>0x05<tt> ||
| 0x06 || Number of sounds in archive || uint16 || ||
|-
|-
| 0x06 || Number of sounds in archive || UInt32 || ||
| 0x08 || Header size (bytes) || uint || ||
|-
|-
| 0x08 || Header size in bytes/start offset of 1st sound in archive || UInt32 || ||
| 0x0C || Archive size (bytes) || uint || ||
|-
|-
| 0x0C || Archive size in bytes (minus header) || UInt32 || ||
| 0x10 || Padding || word || ||
|-
|-
| 0x14 || PT header offsets || PT Header*[] || || Each pointer uses an offset relative to its start position.
! colspan="5" | PT Header Array
|-
| 0x14 || Array size in bytes || UInt32 || ||
|-
| 0x18 || PT header offsets || [[Sound_Data_Table#PT_Header_(WIP)|PT Header]]*[] ||
|}
|}


== PT Header (WIP) ==
=== PT Header ===
SDT contains metadata headers, each <tt>0x20</tt> in length, for each sound in the archive. The metadata in question consists of a given sound's sample rate, compression, start offset, etc.
SDT contains metadata headers, each <tt>0x20</tt> in length, for each sound in the archive. The metadata in question consists of a given sound's sample rate, compression, start offset, etc.


Line 41: Line 36:
! Notes
! Notes
|-
|-
| 0x00 || Header ID || UInt32 || (<code>PT/0/0</code>/<code>0x50540A00</code>) ||
| 0x00 || ID || int16 || <code>0x5054</code> (<code>PT</code>) ||
|-
| 0x02 || Platform identifier || enum || 0x0A || <tt>0x00</tt> = PC, <tt>0x03</tt> = Macintosh, <tt>0x05</tt> = PlayStation 2, <tt>0x06</tt> = GameCube,<br><tt>0x07</tt> = Xbox, <tt>0x09</tt> = Xenon (Xbox 360), <tt>0x0A</tt> = PSP
|-
| 0x03 || Padding || byte || ||
|-
| 0x04 || Patch substream || Patch Substream ||
|}

=== Patch Substream (WIP) ===
This structure contains all of a given sound's actual metadata.
{|class="wikitable"
|-
! Offset
! Name
! Type
! Value
! Notes
|-
| 0x00 || Compression version || int8 || ||
|-
| 0x02 || Number of audio channels || int8 || || 1 = mono, 2 = stereo
|-
| 0x03 || Compression type || int8 || ||
|-
| 0x04 || Stream sample rate (Hz) || int8 || ||
|-
| 0x06 || Stream sample count || int8 || ||
|-
| 0x12 || Loop offset || int8 || ||
|-
| 0x13 || Loop length || int8 || ||
|-
|-
| 0x18 || Audio file start offset || PS-ADPCM audio file* || || Uses big-endian byte order.
| 0x14 || Audio stream offset || word* || || Uses big-endian byte order; points to the exact location of the stream in the archive.
|}
|}