How to find coefficients of DSP ADPCM by Mygoshi at 3:35 PM EDT on June 1, 2016
All is in the title. I have a lot of problems to decode audio files from Wii/GC versions of games, because they use Nintendo GameCube DSP 4-bit ADPCM codec. I have all the infos about the file (Header skip, interleave, channel, frequency, etc) but I don't know how to find coefficients. How to find them?? Thanks
They are typically 16*2 bytes (depending on DSPADPCM variant). If there's only coefficients for one channel, it may be harder, but one thing you can do otherwise is to look for similarities between two 16-byte blocks.
I don't see any similarities in your photo (I'm probably blind...) Here's the link of the file if you can help me? What I know is it's a stereo file, with 0x8800 for interleave and it's Nintendo GC 4-bit ADPCM. Download
I agree it looks like DSP, but I agree with Nisto that the headers aren't in this file. It's not impossible that it could be another similar ADPCM fix a fixed filter coef table, but seems unlikely.
Usually what you see with coefs is a positive, negative pattern, like 0x2D4-0x2F4 in Nisto's example: 0B 6C FB 47 0F 5F F8 2F 0E 33 F9 60 0F 4D F8 9B 0D CD F9 5F 0F A9 F8 28 0D E5 F9 E7 0F 1D F8 DC
0x0B6C is positive, 0xFB47 is negative 0x0F5F is positive, 0xF82F is negative
And they're similar in magnitude, usually the positive is around twice the negative: 0x0B6C is 2924, 0xFB47 is -1209 ; 0x0F5F is 3935, 0xF82F is -2001.
The first channel in Nisto's example (0x2AC-0x2CC) is odd in that there isn't a negative, but you can see that it mostly fits:
03 55 00 5F 0E CB F8 C9 05 39 02 76 0F CB F8 1A 04 13 02 6A 0E 9E F9 3D 08 FA FE D9 0F 80 F8 79
Oh yes I see now. It's a little bit difficult to understand you, but I understood in general. I have to find an another file for the coeffs? because I have a lot of other files but I don't think they can help to get the coeffs.
Can you dump a list of the game files? (on Windows, you can do that by Windows-key+R -> cmd -> dir /B /S "path to game directory" > "path to a file to write list to" (e.g. dir /B /S "C:\game" > "C:\list.txt").