33A fast, cross-platform explorer for CASC (Content-Addressable Storage Container)
44archives, written entirely in Rust.
55
6- > ** Rusty Demon is the first tool of any kind, proprietary or open source,
7- > that can read the Steam-distribution CASC static container format used by
8- > Diablo IV. ** Neither CascLib nor the original TACTLib implementation handles
9- > the full Steam D4 layout (key- layout flags, zlib VFS roots, meta.dat /
10- > payload.dat distinction); rustydemon does . See
6+ > ** Rusty Demon adds first-class support for the Steam distribution of
7+ > Diablo IV's CASC archives ** alongside the existing Battle.net format. The
8+ > Steam build's key-layout flag bits, zlib-wrapped VFS roots, and split
9+ > meta.dat / payload.dat scheme are a layout the established Battle.net-era
10+ > libraries don't yet cover — rustydemon handles them natively . See
1111> [ Steam D4 Support] ( #steam-d4-support ) below.
1212
1313> ** For personal and educational use only.**
@@ -66,7 +66,7 @@ archives, written entirely in Rust.
6666 [ CLI] ( #cli ) below.
6767- ** Auto product detection** - reads ` .build.info ` so you never need to know internal product codes (` fenris ` , ` wow ` , etc.)
6868- ** Cross-platform** - Windows · macOS · Linux · Steam Deck (touch-ready via egui)
69- - ** Steam Diablo IV support** - first-ever reader for the Steam-distribution
69+ - ** Steam Diablo IV support** - native reader for the Steam-distribution
7070 static container format (no ` .build.info ` , no encoding file, location
7171 encoded directly in each EKey)
7272- ** Diablo II: Resurrected support** - reads D2R 3.1.2's TVFS-based layout,
@@ -78,10 +78,11 @@ archives, written entirely in Rust.
7878
7979## Steam D4 Support
8080
81- Rusty Demon is, to the best of our knowledge, the ** first publicly-available
82- tool** , free, paid, or otherwise, that can open the Steam distribution of
83- Diablo IV's CASC archives. The Steam build ships with a fundamentally
84- different storage layout than the Battle.net client:
81+ Rusty Demon opens the Steam distribution of Diablo IV's CASC archives out
82+ of the box. The Steam build ships with a fundamentally different storage
83+ layout than the Battle.net client, and we wrote a dedicated backend for it
84+ because the existing CASC libraries (which predate the Steam release) focus
85+ on the Battle.net format:
8586
8687| | Battle.net D4 | Steam D4 |
8788| ---| ---| ---|
@@ -97,14 +98,15 @@ Point **File → Open Game Directory…** at either
9798` C:\Program Files (x86)\Diablo IV ` (Battle.net) or
9899` …/steamapps/common/Diablo IV ` (Steam) and it just works.
99100
100- > Neither [ CascLib] ( https://github.com/ladislav-zezula/CascLib ) nor the
101- > [ TACTLib] ( https://github.com/overtools/TACTLib ) ` StaticContainerHandler `
102- > implements the full Steam D4 format: TACTLib's handler hard-codes a single
103- > ` data.{chunk}.{archive} ` path layout used only by Overwatch, ignores the 4th
104- > (flags) value in ` key-layout-* ` , and doesn't handle the zlib-compressed VFS
105- > root. Rustydemon's ` static_container ` module in ` rustydemon-lib ` is a
106- > clean-room implementation that verified all of these against a real Steam
107- > installation.
101+ > [ CascLib] ( https://github.com/ladislav-zezula/CascLib ) and
102+ > [ TACTLib] ( https://github.com/overtools/TACTLib ) were our primary references
103+ > for the CASC ecosystem, and TACTLib's static-container handler in particular
104+ > guided rustydemon's understanding of the ` key-layout-* ` bit-extraction
105+ > scheme used by Overwatch. The Steam D4 build extends that scheme with a
106+ > few additional pieces — the 4th flag value in each ` key-layout-* ` , a
107+ > zlib-wrapped VFS root, and a split ` meta.dat ` / ` payload.dat ` path layout —
108+ > which rustydemon's ` static_container ` module in ` rustydemon-lib ` adds on
109+ > top, verified against a real Steam install.
108110
109111---
110112
0 commit comments