SMR.szs
This page is in progress and may contain incomplete information or editor's notes. |
---|
SMR.szs is a compressed BAA file (Binary Audio Archive) which defines the game's sound system. It contains references to streamed and sequenced music files as well as data for sound effects and instruments. It can be found in various JAudio games, however the specifications below mainly apply to Super Mario Galaxy and Super Mario Galaxy 2.
The following files are directly linked to SMR.szs:
- AudioRes/Info/BgmParam.arc (SMG2 only, overrides the BGM and STM volume parameter)
- AudioRes/Info/JaiChord.arc (SMR.szs links BGM labels to CIT file IDs within this archive)
- AudioRes/Seqs/JaiSeq.arc (SMR.szs links BGM labels to BMS file IDs within this archive)
- AudioRes/Stream/*.ast (SMR.szs links STM labels to AST files)
- AudioRes/Waves/*.aw (SMR.szs defines the contents of AW files)
The following files are indirectly linked to SMR.szs:
- AudioRes/Info/ActionSound.arc (SMG2 only, links hardcoded triggers for all objects to sound effects in SMR.szs)
- AudioRes/Info/JaiMe.arc (References instruments from SMR.szs)
- AudioRes/Info/JaiRemixSeq.arc (References instruments from SMR.szs)
- AudioRes/Info/MultiBgmInfo.arc (SMG2 only, connects MBGM labels to STM and BGM labels, allowing streamed and sequenced audio to play simultaneously)
- AudioRes/Info/SoundIdToInstList (SMG2 only, references Sound IDs and instruments from SMR.szs and allows loading AW files)
- AudioRes/Info/StageBgmInfo.arc (SMG2 only, controls the main music and music changes for all stages)
Header
The header contains offsets to all files included in SMR.szs:
Offset | Type | Description |
---|---|---|
0x00 | Magic (0x4) | AA_< (0x41415F3C)
|
0x04 | Magic (0x4) | bst (0x62737420)
|
0x08 | UInt32 (0x4) | Offset to BST section start |
0x0C | UInt32 (0x4) | Offset to BST section end |
0x10 | Magic (0x4) | bstn (0x6273746E)
|
0x14 | UInt32 (0x4) | Offset to BSTN section start |
0x18 | UInt32 (0x4) | Offset to BSTN section end |
0x1C | Magic (0x4) | bsc (0x62736320)
|
0x20 | UInt32 (0x4) | Offset to SC section start |
0x24 | UInt32 (0x4) | Offset to SC section end |
0x28 + N * 0x10 | Magic (0x4) | ws (0x77732020)
|
0x28 + N * 0x10 + 0x4 | UInt32 (0x4) | WSYS file ID (N) |
0x28 + N * 0x10 + 0x8 | UInt32 (0x4) | Offset to WSYS file |
0x28 + N * 0x10 + 0xC | UInt32 (0x4) | Unknown (mostly 0x00000000, once seen as 0xFFFFFFFF) |
0x38 + N * 0x10 + M * 0xC | Magic (0x4) | bnk (0x626E6B20)
|
0x38 + N * 0x10 + M * 0xC + 0x4 | UInt32 (0x4) | IBNK file ID (M) |
0x38 + N * 0x10 + M * 0xC + 0x8 | UInt32 (0x4) | Offset to IBNK file |
0x44 + N * 0x10 + M * 0xC | Magic (0x4) | >_AA (0x3E5F4141)
|
BST
The Binary Sound Table contains parameters for all music and sound effects
BST Header
size: 0x20
Offset | Type | Description |
---|---|---|
0x00 | Magic (0x4) | BST (0x42535420)
|
? | ? | |
0x08 | UInt8 (0x1) ? | Unknown. 0x01 in SMG and SMG2 |
? | ? | |
0x0C | UInt32 (0x4) | Offset to BST main table |
0x10 | Padding (0x10) |
BST main table
size: (N + 1) * 0x4
Offset | Type | Description |
---|---|---|
0x00 | UInt32 (0x4) | Amount N of entries (3 in SMG and SMG2) |
0x04 | UInt32 (0x4) | Offset to SE table |
0x08 | UInt32 (0x4) | Offset to BGM table |
0x0C | UInt32 (0x4) | Offset to STREAM table |
SE table
size: (N + 1) * 0x4
Offset | Type | Description |
---|---|---|
0x00 | UInt32 (0x4) | Amount N of entries (0xE in SMG and SMG2) |
0x04 | UInt32 (0x4) | Offset to SYSTEM table |
0x08 | UInt32 (0x4) | Offset to PLAYER_VOICE table |
0x0C | UInt32 (0x4) | Offset to PLAYER_MOTION table |
0x10 | UInt32 (0x4) | Offset to BOSS_VOICE table |
0x14 | UInt32 (0x4) | Offset to BOSS_MOTION table |
0x18 | UInt32 (0x4) | Offset to OBJECT table |
0x1C | UInt32 (0x4) | Offset to ATMOSPHERE table |
0x20 | UInt32 (0x4) | Offset to DEMO table |
0x24 | UInt32 (0x4) | Offset to ENEMY_VOICE table |
0x28 | UInt32 (0x4) | Offset to ENEMY_MOTION table |
0x2C | UInt32 (0x4) | Offset to SUPPORTER_VOICE table |
0x30 | UInt32 (0x4) | Offset to SUPPORTER_MOTION table |
0x34 | UInt32 (0x4) | Offset to REMIX_SEQ table |
0x38 | UInt32 (0x4) | Offset to HOME_BUTTON_MENU table |
Each of the referenced tables are defined identically, see SE parameter table.
BGM table
size: (N + 1) * 0x4
Offset | Type | Description |
---|---|---|
0x00 | UInt32 (0x4) | Amount N of entries (2 in SMG and SMG2) |
0x04 | UInt32 (0x4) | Offset to MAIN_BGM table |
0x08 | UInt32 (0x4) | Offset to MULTI_BGM table |
Each of the referenced tables are defined identically, see BGM parameter table.
STREAM table
size: (N + 1) * 0x4
Offset | Type | Description |
---|---|---|
0x00 | UInt32 (0x4) | Amount N of entries (1 in SMG and SMG2) |
0x04 | UInt32 (0x4) | Offset to STREAM parameter table |
SE parameter table
BGM parameter table
STREAM parameter table
BSTN
SC
WSYS
IBNK
Editing SMR.szs
The following section contains instructions for editing SMR.szs with the SoundModdingToolkit. They do not contain specifications for the file itself.
The tool SoundModdingToolkit can convert this file into a clear and readable file structure, so the structure of the file is shown on this page using the tool's converted structure.
Please note that only version 4.1.0 can edit the lists without any problems. Later versions can lead to problems such as muted songs.
BGM
MAIN_BGM
Found in SoundTable/BGM/libraries/MAIN_BGM.json
Defines the sequenced music. The music sequence files can be found in bms format in AudioRes/Seqs/JaiSeq.arc.
Name | Description |
---|---|
unk1 | |
unk2 | Volume (overridden by BgmParam in SMG2) |
unk3 | File ID of the bms file in JaiSeq.arc to use (the filename is ignored) |
unk4 | File ID of the cit file in JaiChord.arc to use (the filename is ignored) |
unk5 | |
type | |
mOffset | |
NameOffset | |
name | Internal mapping name for this sequence (e.g. "BGM_MISS"). This name can then be used in musiclists like ScenarioBgmInfo. |
MULTI_BGM
Found in SoundTable/BGM/libraries/MULTI_BGM.json
Defines settings about Multi BGM such as its name. Multi BGM combines Stream (STM) and sequential Music (BGM). Which Music is set for each Multi BGM is defined in MultiBgmInfo.
Name | Description |
---|---|
unk1 | ? always 112 |
unk2 | ? always 120 |
unk3 | ? always 0 |
unk4 | ? always -1 |
unk5 | ? always 0 |
type | ? always 96 |
mOffset | |
NameOffset | ? always 0 |
name | Internal mapping name for this entry (e.g. "MBGM_STAR_CHANCE") This name can then be used in musiclists like ScenarioBgmInfo. |
STREAM
Found in SoundTable/STREAM/0.json
Defines the streamed ast audio files including its internal STM name as well as its filepath.
Name | Description |
---|---|
unk1 | ? always 128 |
unk2 | Volume (overridden by BgmParam in SMG2) |
streamType | Stream Type 14: Standard Stream (2 Channels) 238: Multi Stream (4 Channels) |
streamPath | Filepath of the AST file to use (e.g. "/AudioRes/Stream/smg2_ev_starchance_strm.ast") |
type | ? always 112 |
mOffset | |
NameOffset | ? always 0 |
name | Internal mapping name for this song (e.g. "STM_STAR_CHANCE") This name can then be used in musiclists like ScenarioBgmInfo. |
SE
AW
Each aw. file is converted by the tool into a folder that has the ID of the aw file in its name, and besides the sound files converted in wav format, contains the following settings for each sound:
- manifest.json Contains the ID and name of the aw file
- wavetable.json Contains settings for each sound of the aw. file
wavetable
Each entry starts with the name of the Wav file (e.g. "31") followed by its settings:
Name | Description |
---|---|
format | ? always 0 |
key | |
sampleRate | The sample rate at which the sound should be played. (e.g. "22050.0") |
sampleCount | Length of the sound in samples |
loop | Whether it should be looped or not true: loop false: do not loop |
loop_start | Loop Start position in samples. |
loop_end | Loop End position in samples. |
last | |
penult |
Libraries
In SoundTable\SE\libraries\ there are several libraries which contain settings for sounds with their internal assigned names.
Name | Description |
---|---|
unk1 | ? always 128 |
unk2 | |
unk3 | |
unk4 | |
unk5 | |
unk6 | |
type | Always 80 |
mOffset | |
NameOffset | ? Always 0 |
name | Internal Name of the soundeffect (e.g. "SE_SV_LV_YOSHI_FLUTTER") |