===== Sound Byte Documentation =====
//(credit goes to skawo and mibts , original documentation is [[http://kuribo64.net/board/thread.php?id=1232|here]] and [[http://kuribo64.net/board/thread.php?id=3172|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\\