User Tools

Site Tools


super_mario_64_ds:sound_byte_documentation

Sound Byte Documentation

(credit goes to skawo and mibts , original documentation is here and here)

There are 3 bytes editable in a sound table. These values are loaded into the ARM9 memory at 0x02143C1C (US ROM v1) if you need to find some specific configuration or something.

Byte 01: Group ID

Each level has a list of wave archives and banks to load, and each list is in a group. This is the ID of the group to load. (Note: For some reason, the instrument bank of the music to play is not included in the group. The sound effect bank is included, even though byte 02 states its ID explicitly.)

Byte 02: Sound Effect Instrument Bank ID

Each sequence in NCS_SEQARC_SCENE claims to use bank 4, which is null. So how can those sounds play? This byte replaces that 4 when a level is loaded, and therefore each level has its list of sound effects.

Byte 03: Sequence ID

This is still the ID of the sequence to play.

Byte 1 is multiplied by 4, then 4 is added to it, and that is added to 11A4. Out comes the address in info.bin, which is in the SDAT. Look there, you get a reversed address (i.e if “441A” is there, the address is “0x1A44”) of the SWAR entries table, also in info.bin

So, the SWAR entries table consists of values like this:

0a 00 00 00
02 04 00 00
31 00 00 00
02 04 00 00
29 00 00 00
02 04 00 00
2a 00 00 00
02 04 00 00
2b 00 00 00

0a The beginning of a new entry table. Seems like this can be 0d and others too, not sure what this does.
02 04 This is most likely the SSAR IDs or something, but honestly, no clue.
31 This is the SWAR ID (where, eg. 31 (So decimal ID 49) = CS_WAVE_BGM_RESIDENT).

Then, it repeats.


To have music playing in a level, you need to make Byte 1 point to a table in the info.bin which contains ALL of the “dependencies” a particular music piece has. For instance, for the Peach's Castle (NCS_BGM_SHIRO), that would be NCS_WAVE_BGM_SHIRO and NCS_WAVE_BGM_RESIDENT (You can find this out with VGMTrans or something).

If both of those are not in the SWAR table pointed at by Byte 1, you get silence. And indeed, if we look at the SWAR table in the info.bin (Byte 1 = 3, 3*4+4=16, info.bin at 11B4 has “6c 13”, so the SWAR table is at 0x136c), it contains (as the two first entries, no less), well, this:

0d 00 00 00
02 04 00 00
31 00 00 00
02 04 00 00
3d 00 00 00
02 04 00 00

31 SWAR ID: NCS_WAVE_BGM_RESIDENT [Decimal ID 49]
3d SWAR ID: NCS_WAVE_BGM_SHIRO [Decimal ID 61]

Ect.

Bowser's Voice Location

Bowser's laugh is located in NCS_WAVE_SE_OBJECT at sound 1.
All three of the groups listed below use this swar file.

1st Boss
Group ID: 27

The other files for Bowser's voice for the first boss are located in the
NCS_WAVE_SE_T_YAMIKUPPA.
Sound 0: Unknown
Sound 1: Unknown
Sound 2: Bowser's inhale (increased pitch)
Sound 3: Bowser's defeat (unused)
Sound 4: Grab Bowser by the tail (lowered pitch)

2nd Boss
Group ID: 31

The other files for Bowser's voice for the second boss are located in the
NCS_WAVE_SE_T_HONOOKUPPA
Sound 0: Unknown
Sound 1: Unknown
Sound 2: Bowser's inhale (increased pitch)
Sound 3: Bowser's defeat (unused)
Sound 4: Grab Bowser by the tail (lowered pitch)
Sound 5: Unknown
Sound 6: Unknown
Sound 7: Unknown

3rd Boss
Group ID: 34

The other files for Bowser's voice for the final boss are located in the
NCS_WAVE_SE_T_TENKU.
Sound 0: Mario's pain?
Sound 1: Unknown
Sound 2: Bowser's inhale (increased pitch)
Sound 3: Unknown
Sound 4: Unknown
Sound 5: Grab Bowser by the tail (lowered pitch)
Sound 6: Unknown
Sound 7: Unknown

super_mario_64_ds/sound_byte_documentation.txt · Last modified: 2018/07/14 13:54 by miles