| .github/workflows | ||
| chacha20 | ||
| fluffy-dumper | ||
| sparkbuffer | ||
| usm | ||
| vfs | ||
| vgmstream | ||
| xxhash3 | ||
| xxtea | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| README.md | ||
Fluffy Dumper
A Rust tool for extracting and parsing game assets.
Overview
This project provides a set of library crates and a CLI tool for working with encrypted game assets.
Installation
Install with cargo from git mirror:
cargo install --git https://git.nekolab.app/fluffield/fluffy-dumper.git fluffy-dumper
Crates
fluffy-dumper
Command-line interface for extracting game assets.
vfs
VFS block loader with streaming file I/O. Handles encrypted block files and chunk extraction.
sparkbuffer
SparkBuffer binary table parser. Converts binary table format to JSON with support for enums, beans, and nested structures.
vgmstream
Embedded vgmstream-cli for WEM to WAV audio conversion. Includes pre-compiled binaries for Linux and Windows.
xxhash3
XXHash3 64-bit hash implementation. Used for VFS block directory name hashing.
xxtea
XXTEA decryption implementation. Used for decrypting scripts.
usm
CRI USM video demuxer and MP4 converter. Demuxes USM files into video/audio streams and muxes them into MP4 using FFmpeg. Includes a standalone usm-convert CLI tool.
chacha20
ChaCha20 stream cipher implementation with configurable counter.
Building
cargo build --release
The compiled binary will be at target/release/fluffy-dumper.
Usage
Dump all supported assets:
fluffy-dumper dump -s /path/to/StreamingAssets -o ./output
Dump specific block type:
fluffy-dumper dump -s /path/to/StreamingAssets -b lua -o ./output
fluffy-dumper dump -s /path/to/StreamingAssets -b table -o ./output
Dump and convert video files (USM to MP4, requires FFmpeg):
fluffy-dumper dump -s /path/to/StreamingAssets -b video -o ./output
Extract audio files:
# Extract all audio for all languages as WAV
fluffy-dumper audio -s /path/to/StreamingAssets -o ./output
# Extract English voice files as WAV
fluffy-dumper audio -s /path/to/StreamingAssets -l english -b voice -f wav
# Extract raw WEM files without conversion
fluffy-dumper audio -s /path/to/StreamingAssets -f wem
Convert a standalone USM file to MP4:
usm-convert input.usm -o ./output
List available block types:
fluffy-dumper list
Block Types
The game has the following block types (folders under Endfield_Data/StreamingAssets/VFS):
| Block | Hash |
|---|---|
| InitialAudio | 07A1BB91 |
| InitialBundle | 0CE8FA57 |
| InitialExtendData | 3C9D9D2D |
| BundleManifest | 1CDDBF1F |
| IFixPatch | DAFE52C9 |
| AuditStreaming | 6432320A |
| AuditDynamicStreaming | B9358E30 |
| AuditIV | 06223FE2 |
| AuditAudio | 1EBAF5C6 |
| AuditVideo | 2E6CE44D |
| Bundle | 7064D8E2 |
| Audio | 24ED34CF |
| Video | 55FC21C6 |
| IV | A63D7E6A |
| Streaming | C3442D43 |
| DynamicStreaming | 23D53F5D |
| Lua | 19E3AE45 |
| Table | 42A8FCA6 |
| JsonData | 775A31D1 |
| ExtendData | D6E622F7 |
| HotfixAudio | F151B649 |
| AudioChinese | E1E7D7CE |
| AudioEnglish | A31457D0 |
| AudioJapanese | F668D4EE |
| AudioKorean | E9D31017 |
License
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.
Acknowledgements
Special thanks to the following people:
- Escartem for their insights on audio extraction;
- rfi for creating and open-sourcing BeyondTools which inspired parts of this project.