Atvaark / BinderTool

Dark Souls II / Dark Souls III / Bloodborne / Elden Ring bdt, bhd, bnd, dcx, tpf, fmg and param unpacking tool
MIT License
310 stars 50 forks source link

Merge Elden Ring changes nearing readiness for full release #48

Closed googleben closed 2 years ago

googleben commented 2 years ago

I'm mostly finished with the changes I want to make on my Elden Ring branch. This PR includes an updated README, extra documentation in some C# files, CLI niceties like progress indicators on some operations, and 99.99% coverage of file names in the ER dictionary (I can't seem to find any reference to the remaining 12 files, which look like near-identical duplicates of the 12 shader files in data0). I also fixed a nasty bug with my MemoryStream replacement Bdt5InnerStream (which can handle files with more bytes than a single array can hold) that would corrupt files larger than a certain threshold.

As for what's left to be done: I still plan on checking backwards compatibility with pre-ER games, which should be at least mostly working, as well as some more work on the CLI and maybe adding more file formats like gparam, but for now this should be everything needed to extract most Elden Ring files as of 1.03. In the future I'd also like to look into a bit of an API redesign to allow the BinderTool.Core package to be used as a general-purpose library for FromSoft formats, possibly even with some native code for hot loops like decryption - I feel like a GUI-based in-memory browser for these file formats is past due when they can take well over 100GB of disk space uncompressed.

Do note I didn't change the version since I'd rather leave that up to @Atvaark as the owner.

Atvaark commented 2 years ago

Thanks for the PR. Give me a ping once your work is done and I can start the pull and publish the final release. I guess I could also pull this into master and create branches for the older games.

Looks like you removed some lines from GetRegulationKey that you added for the Elden Ring key. Unpacking the regulation files isn't working due to that.