Skip to content

Commit 2b1a2f4

Browse files
committed
docs: soften README's framing of CascLib and TACTLib
Both projects are the references that taught us the CASC ecosystem in the first place — TACTLib's static-container handler in particular guided rustydemon's understanding of the key-layout bit-extraction scheme. The Steam D4 backend extends that work with a few additional pieces rather than fixing anything broken. Drop the "first tool of any kind, free, paid, or otherwise" bragging and reframe the comparisons as additive.
1 parent aa09d88 commit 2b1a2f4

1 file changed

Lines changed: 20 additions & 18 deletions

File tree

README.md

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
A fast, cross-platform explorer for CASC (Content-Addressable Storage Container)
44
archives, 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

Comments
 (0)