ResourceDragon - Proprietary Archive Extractor

ResourceDragon - Proprietary Archive Extractor

5 devlogs
65h 38m
•  Ship certified
Created by wearr

ResourceDragon is a highly extensible viewer and extractor for proprietary archive formats, written in C++, SDL3 and ImGUI!

Timeline

Ship 4

1 payout of shell 159.0 shells

wearr

about 1 month ago

wearr Covers 1 devlog and 10h

Huuuge changes have been made since I last made a log for this. The notable thing being native code plugins! You can now not only script RD with squirrel-lang, but native code like C, C++, or any other language that can expose C-style ABI symbols! I'm pretty sure even C# could do it, which brings me full circle back to the project that inspired me the most, GARbro.

You'll probably also notice the several UI improvements that have been made, and I also finally have a fully working windows build! It's still a little scuffed, and i've been fighting with zlib a bit, since it's not wanting to play nice with Windows (for some reason!!)

But overall, it's been a very productive 32 hours. I'm gearing up to finish a release any day now!

Update attachment

Ship 3

1 payout of shell 46.0 shells

wearr

about 2 months ago

wearr Covers 1 devlog and 3h 19m

Little bit of a smaller update this time around, but I got stacktraces working in a cross-platform way! Should there be an issue with the app, it should be much easier for the user to report issues now.

Update attachment

Ship 2

1 payout of shell 40.0 shells

wearr

3 months ago

wearr Covers 1 devlog and 10h
wearr
wearr
11h 56m 3 months ago

Hello! I'm back with another devlog, and this time with some pretty good progress!

I've managed to get both an Emscripten and Windows build working, as well as of course the Linux build, which is now on CI/CD! Every commit will cause a new build of the Linux app to be automatically made.

As well as this, RD is available as an online demo, just click the demo button and you'll get access to it, or go to https://wearrrrr.github.io/RD/. The tests/ folder has a couple of tests to show off the capabilities of ResourceDragon.

Thank you for reading!

Update attachment

Ship 1

1 payout of shell 58.0 shells

wearr

4 months ago

wearr Covers 2 devlogs and 18h 6m

Today is a pretty big day, squirrel-lang support is practically complete! 🎉

To do this, I needed to put quite a bit of extra effort in, it required creating a good C++ template around calling squirrel functions with variadic arguments, which was certainly.. fun (thank you C++ for finally adopting decent metaprogramming!). However, it's finally done, and that means I can promptly never touch squirrel again! (/s, it's actually a pretty nice scripting language).

There weren't many other notable improvements made over the past 9 hours, mostly slowly getting things ready for a proper 1.0 release candidate, but here's a quick breakdown of anything notable from my commit history.

  • Improve the Logger class substantially, it should now not cause horrendous codegen according to a friend.
  • Add a nice abstraction around printing squirrel compiler and runtime errors. Eventually I'll make something nicer for runtime errors (so that the app doesn't randomly crash when I inevitably mess up memory management)
  • Update the pack.sh script to properly generate a working build for Linux.
  • Migrate to SDL_Mixer 3.x API, and finally vendor in SDL as a proper submodule, instead of just blindly assuming you'll have it installed (:clueless:)
  • Make SquirrelArchiveFormat::CanHandleFile() not absolutely demolish performance by forcing the end squirrel developer to only grab a small subsection of bytes at once instead of the entire buffer (this one was absolutely on me, very stupid idea to think that copying a potentially 1-2gb buffer wouldn't be horrible for performance!)

And well, that's about it. I know these devlogs are mostly screaming into the void, but this was still quite fun to write, i'll try to keep them more structured like this.

(captioned: the magical almighty power of throwing myself against a wall for 9+ hours to make a format test work)

Update attachment

Tons of improvements with this!
But most notably, squirrel-lang support for custom formats! It's the most recent addition, and I've chosen it as the language of choice over Lua. However that doesn't exactly mean Lua won't be supported, it's just not a priority right now.

Update attachment