$ show Escartem/AnimeStudio
AnimeStudio is a Windows desktop application for extracting, previewing, and exporting assets from Unity-based games, with a strong focus on miHoYo/HoYoverse titles (Genshin Impact, Honkai: Star Rail, Zenless Zone Zero) and other encrypted Unity games. It provides both a graphical interface (WinForms) and a command-line interface for batch operations. The application parses Unity serialized files (assets, bundles, web files) using a custom binary reader with version-conditional field parsing, supports multiple compression formats (LZ4, Brotli, LZMA, Oodle), and handles game-specific encryption (XOR, AES, custom algorithms). Exported assets include textures, meshes, animations, audio, shaders, and text assets, with FBX export for 3D models and animation clips via a native C++ FBX wrapper. The codebase is a fork/continuation of AssetStudio and Studio, incorporating reverse-engineered format knowledge and vendored native libraries for animation decompression (multiple variants of the Animation Compression Library), Oodle-like decompression (Ooz), and HLSL decompilation (based on 3Dmigoto). The architecture is a .NET 9/10 desktop application with several native C++ DLLs loaded via P/Invoke, and a build script that packages both GUI and CLI into a single distribution.
The LLM identified 4 files worth highlighting for reuse:
Provides a robust, cross-platform native DLL loader that attempts to load platform-specific binaries (Windows .dll, Linux .so, macOS .dylib) with fallback logic. Uses LoadLibraryEx with LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR on Windows and dlopen on POSIX. Handles common pitfalls like library search paths and platform detection. This pattern is reusable for any .NET application that needs to load native libraries across platforms.
A C# SPIR-V disassembler that parses binary SPIR-V modules into a structured representation (Module, Function, Instruction, Operand). Supports decoding all SPIR-V opcodes, operand types (literal, enum, bitfield, ID), and optional type/name resolution. The disassembler is self-contained and can be extracted for use in shader analysis tools, debuggers, or conversion pipelines.
A C++ parser for the GGPK archive format used by Path of Exile. It reads the file structure using mmap, validates tags (FILE_TAG, PDIR_TAG, FREE_TAG, GGPK_TAG), computes Murmur2 hashes for directory entries, and builds an in-memory tree of directories and files. The parser is self-contained and demonstrates a clean pattern for parsing chunk-based binary formats with integrity checks. It can be reused for any tool that needs to extract data from GGPK archives.
A custom YAML emitter that supports block and flow styles, scalar typing (auto, int, float, bool, string, hex), mapping and sequence nodes, and tag insertion. It is designed to produce Unity-style YAML output but is generic enough to be reused in any .NET project requiring a lightweight YAML serializer without external dependencies. The emitter handles indentation, line wrapping, and proper escaping.