Skip to content

Latest commit

 

History

History
executable file
·
90 lines (65 loc) · 5.22 KB

README.md

File metadata and controls

executable file
·
90 lines (65 loc) · 5.22 KB

Gust Tools

Windows Build Linux Build Github stats Latest release

A set of commandline utilities designed to work with Gust (Koei/Tecmo) PC game assets such as the ones from Atelier series, Nights of Azure series, Blue Reflection, Fairy Tail, Fatal Frame ...

Utilities

  • gust_pak: Unpack or repack a Gust .pak archive.
  • gust_elixir: Unpack or repack a Gust .elixir[.gz] archive.
  • gust_gmpk: Unpack or repack a Gust .gmpk archive.
  • gust_g1t: Unpack or repack a Gust .g1t texture archive.
  • gust_enc: Encode or decode a Gust .e archive.
  • gust_ebm: Convert a .ebm message file to or from an editable JSON file.

Notes

gust_pak is designed to replace both A17_Decrypt and A18_Decrypt, as it automatically detects "A17" (32-bit) and "A18" (64-bit) formats. It should therefore works with all of the Atelier PC ports (including Atelier Sophie) as well as Blue Reflection archives.

gust_enc only works on the games where for which the scrambling seeds are known. See gust_enc.json for details. You can find a primer on the .e format, as well as what gust_enc does here.

In most cases, the repacking of an archive relies on a corresponding .json to have been created during unpacking. You will not be able to recreate an archive if a .json file does not exist for it, either in the directory (.elixir, .g1t) or at the root level (.pak).

Building

If you have Visual Studio 2022 installed, just open the .sln file or run build.cmd.

Otherwise (Linux, MinGW) just issue make.

Usage

On Windows, you can just drop the file or directory you want to unpack/repack or decode/encode on top of the executable.

Otherwise, you can invoke: <gust_utility> <file or directory>.

When invoking gust_enc, you may specify the game ID to use for the encryption seeds (e.g. -BR for Blue Reflection, -A17 for Atelier Sophie). If not specified, then the default ID from gust_enc.json is be used.

For recreating a .pak, you must pass the .json that was created during extraction to gust_pak rather than the directory.

Modding games

IMPORTANT: YOU SHOULD BACK UP ALL GAME ARCHIVES AND FOLDERS BEFORE RUNNING THE UNPACKER

Most Gust game executables are designed to use either packed assets, if a .pak archive is present, or the extracted assets, if a matching directory bearing the same name as the .pak is found. For that to work, you must however make sure that the .pak is not seen, as it has precedence over the directory.

For instance, if you want to alter character assets (textures, models, ...) for the game Blue Reflection:

  • Go to <GAME_DIR>\DATA\and copy gust_pak.exe there.
  • Drop PACK00_02.pak on top of gust_pak.exe. This will extract all the content into a data\ subdirectory.
  • Move the content from data\x64\ to x64\ (in this case, that should only be one folder named character). This is needed because in this case <GAME_DIR>\DATA\x64 is the location where Blue Reflection expects extracted game assets, not <GAME_DIR>\DATA\data\x64.
  • Rename PACK00_02.pak to PACK00_02.old so that the game assets you just extracted are used.

Happy modding! 😄

License

GPLv3 or later.

Thanks

  • Yuri Hime/Lily/shizukachan and everyone who helped with A17_Decrypt/A18_Decrypt.
  • Admiral Curtiss for HyoutaTools and Semory for Steven's Gas Machine (a.k.a. "xentax"), where we picked some inspiration on how to unpack the .elixir and .g1t formats.
  • Rich Geldreich and others for the miniz inflate/deflate library.
  • Krzysztof Gabis for the parson JSON parsing library.
  • Gust, for making games that are interesting enough to make one want to crack their custom compression and encryption schemes. 😁