A Rust tool for extracting and parsing game assets.
Find a file
2026-03-12 03:50:53 +02:00
.github/workflows ci: Fix invalid trigger path in release workflow 2026-03-12 03:49:58 +02:00
chacha20 feat: Init 2026-02-02 05:04:19 +02:00
fluffy-dumper chore(ver): Bump version 2026-03-12 03:50:53 +02:00
sparkbuffer feat: Init 2026-02-02 05:04:19 +02:00
usm feat: Implement video decoding 2026-02-22 00:18:20 +02:00
vfs feat: Update for game version 1.1 2026-03-12 03:46:58 +02:00
vgmstream style: Auto-format via cargo fmt 2026-02-22 17:07:00 +00:00
xxhash3 feat: Update for game version 1.1 2026-03-12 03:46:58 +02:00
xxtea feat: Init 2026-02-02 05:04:19 +02:00
.gitignore feat: Init 2026-02-02 05:04:19 +02:00
Cargo.lock chore(ver): Bump version 2026-03-12 03:50:53 +02:00
Cargo.toml feat: Implement video decoding 2026-02-22 00:18:20 +02:00
LICENSE feat: Init 2026-02-02 05:04:19 +02:00
README.md feat: Update for game version 1.1 2026-03-12 03:46:58 +02:00

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.