Help Reading/Understanding Wwise WiiH Header in Punch-Out!! Wii by HiddenRulz at 3:38 PM EST on January 6, 2022
I've been trying to look into Punch-Out!! Wii's audio files in order to mod them. However, there is a section in the header that affects the whole audio file in ways that I can't understand (but clearly vgmstream can). This is the WiiH header, which determines the speaker configuration and something else which I'm unsure of.
The length of this header varies depending on whether the speaker is configured only to the Front-Center speaker or Front-Left and Front-Right. From what I understand this is determined by the fourth byte after "WiiH" and I can see this represented in the code of vgmstream. Whether that fourth byte is equal to "5C" or "2E" determines FC or both FL and FR respectively.
However, the rest of the header eludes me. I can see that in two-speaker configurations there are two sections of the same length that would likely correspond to each speaker. If there is anyone out there who can explain to me what the content of the header does and how to read it, I would be very grateful.
The area of interest I look at for determining how vgmstream would read this header is within the wwise.c file and lines 319 to 363 are likely what read this header.
And an extra snippet that might help, vgmstream through Foobar200 requires that the audio files have the .wem extension, but they were originally .wav files when extracted. Don't know why this is required, but it is what it is.
Data in WiiH is just standard DSP coefs/hist values, once per channel (size 0x2E * channels). Those correspond to a standard DSP header from 0x1c to 0x4a (size 0x2E).
If you don't know what those are, I'd recommend you try to understand how DSP files work first (see ngc_dsp_std.c)
This has helped me quite a bit. My goal of modifying the audio for Punch-Out!! Wii without the strange layer of static has had a small jump in progress now. Thank you very much!