Closed Kadigan closed 6 years ago
Thanks for the update. I definitely agree with you. There is a lot of code in there that doesn't do anything. I designed the code with the thought of expanding it and make it able to read more data from the structure. I wrote it specifically for Planet Coaster. I will try to have a look at your UI, but I am not sure yet whether I am continuing this project due to the low amount of time I have available.
Thank you for your contribution.
Well, you're welcome to use whatever I put in there (I don't rightly recall exactly what I did, this was back in June :D) as you see fit. I didn't want to suggest a merge since I rewrote big portions of it, it I recall.
Or you can just put this second version up w/ a note that it'll work for Alien: Isolation and possibly a few other games as well.
Obviously the above goes for both versions of the code.
The script doesn't differentiate between DIDX and other types, like say HIRC, and it will happily extract 0-size files from the incompatible ones (the identifier is at HeaderLength + 8 and it is 4 characters long).
As an aside, the script could use some slimming down (there's a lot of data it reads but doesn't do anything with), and some more error detection too.
I'm attaching a slimmed-down version that relies on offsets more and includes basic detection w/ correction. Unfortunately I don't see an easy drop-in replacement for fcntl on Windows, so...
Also, rewrote it to extract w/o a UI, to make it more toolchain-friendly.
BnkExtract.zip
Also, attaching my PHP one-stop-shop rewrite (I basically don't know Python, and I wanted a bit more control). Worked on both sides in tandem. The PHP script loads the entire file into RAM once it determines that it's viable - feel free to change that if you wish.
BnkExtractPHP.zip
I wrote this to extract sound bytes from Alien: Isolation, by the way.