Skip to content
This repository has been archived by the owner on Apr 25, 2022. It is now read-only.

0.3

Compare
Choose a tag to compare
@rr- rr- released this 26 Jun 20:41
· 1894 commits to master since this release

⚠️ Given the fact that almost all of the "glue" code was rewritten, please be careful when using this version. It passed all of the automatic tests and some cursory manual tests, but you never know.

Visible changes

  • Added initial basic support for TH13.5.
  • Improved Touhou palette detection for TH7.5, TH10.5 and TH12.3.
  • The project has just one binary now: arc_unpacker.
  • Output files appear in the current working directory instead near target files. (For drag'n'drop this doesn't make difference.)
  • Instead of archive.datarchive.dat~/*, program now produces archive~.dat/*.

Major changes to project structure

  • Merged Converter and Archive into common interface, Transformer.

  • Improved format-to-format integration:

    • Removed run_converters() - it's now called behind the scenes.
    • Removed need for manual internal unpacking thanks to Transformer::add_transformer(Archive *).
    • Generalized Transformer registration (Transformer::add_transformer(Transformer *)).
  • Changed Converter, Image and Sound so that instead of updating File&s, they create new std::unique_ptr<File>s from scratch (basing on given file name, so that they know how to change the file extension where applicable.)

  • Merged file_decoder into arc_unpacker. The project has just one binary now: arc_unpacker.

  • Merged archive and converter factories into one TransformerFactory.

  • Improved file naming management, covered with unit tests.

  • Improved method visibility (unpack_internal and decode_internal were public 👍).

  • Reorganized file structure:

    • ioio/io
    • file_ioio/file_io
    • buffered_ioio/buffered_io
    • bit_readerio/bit_reader
    • factory/*formats/transformer_factory
    • formats/imageutil/image
    • formats/soundutil/sound
    • endianutil/endian

    Thanks to this change src/ looks a lot less cluttered now.

  • Pulled the internals from bin/arc_unpacker.cc into a new main()-free class at arc_unpacker.cc so that it can be tested gracefully in unit tests.

  • Added OpenSSL dependency because of TH13.5 and its RSA usage. If any more games use things like AES or whatnot, this should prove beneficial in the future.