[SOLVED] Harry Potter games (console) sound banks ("BNK" ident)
-
- Posts: 909
- Joined: Sat Aug 09, 2014 11:21 am
[SOLVED] Harry Potter games (console) sound banks ("BNK" ident)
Hello everybody,
I'm again sitting at some HP games and once more stumbled upon those sound banks with header info in the archive TOC. The big problem with these is that every platform is a bit different in the size and information type for each stream.
Here are samples from GC, PS2 and Xbox: https://www.mediafire.com/file/t4ondfbg ... nk.7z/file
I'm fine with a script that just joins the header with the data so I can convert it afterwards. Any help is appreciated!
Thanks.
I'm again sitting at some HP games and once more stumbled upon those sound banks with header info in the archive TOC. The big problem with these is that every platform is a bit different in the size and information type for each stream.
Here are samples from GC, PS2 and Xbox: https://www.mediafire.com/file/t4ondfbg ... nk.7z/file
I'm fine with a script that just joins the header with the data so I can convert it afterwards. Any help is appreciated!
Thanks.
Last edited by AlphaTwentyThree on Sat Feb 12, 2022 6:52 am, edited 1 time in total.
-
- Posts: 909
- Joined: Sat Aug 09, 2014 11:21 am
Re: Harry Potter games (console) sound banks ("BNK" ident)
Nobody up for the task?
-
- Site Admin
- Posts: 12984
- Joined: Wed Jul 30, 2014 9:32 pm
Re: Harry Potter games (console) sound banks ("BNK" ident)
So this is the format that I covered in some way in harry_potter_sdt.bms but it's a total mess.
I pass
I pass
-
- Posts: 909
- Joined: Sat Aug 09, 2014 11:21 am
Re: Harry Potter games (console) sound banks ("BNK" ident)
Hehe, alright, I thought I'd give it a shot.
I'll try to get somewhere with these tomorrow.
I'll try to get somewhere with these tomorrow.
-
- Posts: 909
- Joined: Sat Aug 09, 2014 11:21 am
Re: Harry Potter games (console) sound banks ("BNK" ident)
Status update
Luigi didn't lie in giving me the warning about the format being a mess. It's unbelievable to me how they implemented such a broken format into their engine... It's just inconsistent throughout with different header lengths, different offset markers that need a work-around, frequency sometimes missing to just name some of the problems.
I've been looking at the X-Box version for now as that platform gives me at least some clue as to what the variables mean. I've managed to extract archives with one and two files so far. Not getting them to play that is, only the raw data. There are two types of codecs: Xbox ADPCM (mono, 0x24 bit interleave) and some other form ADPCM (mono, 0x0f bit interleave). All streams seem to be channel-split, so the number of extracted files is double the number listed in the header. Additionally, the offset markers seem to point to the starting offset of the right channel, the left channel isn't mentioned anywhere. It's possible to calculate those offsets for the first and third stream. Once there are three streams present, I run into a problem as I haven't been able to figure out how to calculate the size of a single channel. Doesn't help that the streams don't start at padded offsets, so rounding isn't any option it seems.
For now, I'm asking for support for the second type of ADPCM I've encountered. Looking at the character distribution it could be IMA ADPCM but I'm not sure since I haven't encountered this structure before:
I've attached a sample of streams extracted from one of the archives plus the origin archive. Has anybody seen this codec before and knows how to add a working header? txth would even be ok for now until I figure out how to construct a working header from the information in the archive's TOC.
Luigi didn't lie in giving me the warning about the format being a mess. It's unbelievable to me how they implemented such a broken format into their engine... It's just inconsistent throughout with different header lengths, different offset markers that need a work-around, frequency sometimes missing to just name some of the problems.
I've been looking at the X-Box version for now as that platform gives me at least some clue as to what the variables mean. I've managed to extract archives with one and two files so far. Not getting them to play that is, only the raw data. There are two types of codecs: Xbox ADPCM (mono, 0x24 bit interleave) and some other form ADPCM (mono, 0x0f bit interleave). All streams seem to be channel-split, so the number of extracted files is double the number listed in the header. Additionally, the offset markers seem to point to the starting offset of the right channel, the left channel isn't mentioned anywhere. It's possible to calculate those offsets for the first and third stream. Once there are three streams present, I run into a problem as I haven't been able to figure out how to calculate the size of a single channel. Doesn't help that the streams don't start at padded offsets, so rounding isn't any option it seems.
For now, I'm asking for support for the second type of ADPCM I've encountered. Looking at the character distribution it could be IMA ADPCM but I'm not sure since I haven't encountered this structure before:
I've attached a sample of streams extracted from one of the archives plus the origin archive. Has anybody seen this codec before and knows how to add a working header? txth would even be ok for now until I figure out how to construct a working header from the information in the archive's TOC.
-
- Posts: 136
- Joined: Mon Nov 23, 2020 6:01 pm
Re: Harry Potter games (console) sound banks ("BNK" ident)
Yeah, it's a pain. They play in Foobar/vgmstream - it says it's EAXA ADPCM v2.
-
- Posts: 909
- Joined: Sat Aug 09, 2014 11:21 am
Re: Harry Potter games (console) sound banks ("BNK" ident)
Wait, how did you get these to play?
-
- Posts: 136
- Joined: Mon Nov 23, 2020 6:01 pm
Re: Harry Potter games (console) sound banks ("BNK" ident)
I just dropped them in and they play fine for me
-
- Posts: 909
- Joined: Sat Aug 09, 2014 11:21 am
Re: Harry Potter games (console) sound banks ("BNK" ident)
Oh damn, didn't imagine they already added support for these in vgmstream. Welp, there goes my effort - won't invest in this anymore. So: solved.