Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
294 changes: 240 additions & 54 deletions Cargo.lock

Large diffs are not rendered by default.

11 changes: 5 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -305,8 +305,8 @@ hashtable format (a `<hex-hash> <path>` text file, as in CommunityDragon's `hash
[Mimir](https://github.com/LeagueToolkit/Mimir) `.lhdb` hash table. Alias: `rip`.

"Resolvable" means every chunk whose hash we can attribute to a real path: names already known
to the shared [Mimir](https://github.com/LeagueToolkit/Mimir) cache **plus** names recovered by scanning the WAD's `.bin` files (dependency
links and string properties, the same recovery used during extraction). Chunks that would only
to the shared [Mimir](https://github.com/LeagueToolkit/Mimir) cache **plus** names recovered by scanning the WAD's `.bin` files (every
path string a bin holds, the same recovery used during extraction). Chunks that would only
render as their 16-character hex fallback are skipped, so the output is a clean, meaningful list.

The `.lhdb` output is written in the Game-table configuration (64-bit XXH64 keys, case-insensitive),
Expand All @@ -321,8 +321,7 @@ Common flags:
- `-H, --hashtable <PATH>` (also `-d`): optional supplemental hashtable file to resolve additional names
- `-x, --pattern <REGEX>`: only include chunks whose resolved path matches this regex
- `-v, --filter-invert`: invert the `-x` filter (exclude matching paths instead of including them)
- `--no-bin-paths`: disable scanning `.bin` files to recover names (enabled by default)
- `--full-bin-scan`: scan every chunk (not just known `.bin` files), recovering the most names at the cost of a full decompression pass
- `--no-bin-paths`: disable scanning `.bin` files to recover names (enabled by default). The scan reads every bin of the archive, named or not

Basic examples:

Expand All @@ -340,8 +339,8 @@ wadtools paths -i Aatrox.wad.client -F lhdb
# Combine several WADs into one hashtable
wadtools paths -i Aatrox.wad.client -i Ahri.wad.client -o champions.txt

# Only rip character asset paths, using the deepest bin scan
wadtools paths -i Aatrox.wad.client --full-bin-scan -x "^assets/characters/"
# Only rip character asset paths
wadtools paths -i Aatrox.wad.client -x "^assets/characters/"
```

### Diff
Expand Down
14 changes: 14 additions & 0 deletions crates/wadtools/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed

- Extraction and bin-name recovery run through `ltk_wad`'s `WadExtractor` and `NameRecovery`,
which took over wadtools' own pipeline. The naming rules, the skip-or-overwrite policy, the
stats and the parallel reader and writer pipeline are the same, now shared with LTK Manager.
- The bin scan tells a bin by its magic from the first compressed block alone and reads its
strings with no parse of the property tree, so it recovers the names the old `--full-bin-scan`
found in a fraction of the time.

### Removed

- `--full-bin-scan` on `extract` and `paths`. The scan reads every bin of the archive now, so the
flag had nothing left to switch on.

## [0.5.7](https://github.com/LeagueToolkit/wadtools/compare/v0.5.6...v0.5.7) - 2026-07-13

### Added
Expand Down
7 changes: 3 additions & 4 deletions crates/wadtools/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ clap = { version = "4.5.20", features = ["derive"] }
eyre = "0.6.12"
toml = "0.8.19"
fancy-regex = "0.16.2"
league-toolkit = { version = "0.2.17", features = ["serde"] }
# Pinned to a commit of the `feat/wad-extractor` branch (LeagueToolkit/league-toolkit#183)
# until `ltk_wad` 0.4 ships on crates.io. The extractor and the bin-name recovery live there now.
league-toolkit = { git = "https://github.com/LeagueToolkit/league-toolkit", rev = "22d1990421e980107cb8a436a3206a7a4b47b418", features = ["serde"] }
color-eyre = "0.6"
tracing = "0.1.41"
parking_lot = "0.12.3"
Expand All @@ -26,9 +28,6 @@ directories-next = "2.0"
dirs-next = "2.0"
camino = "1.1"
convert_case = "0.9.0"
rayon = "1.10"
dashmap = "6"
xxhash-rust = { version = "0.8", features = ["xxh64"] }
# `download-hashes` streams release assets through our own progress-bar `Fetch`
# (mimir's bundled `UreqFetch` buffers the whole body, so it can't drive a bar).
ureq = "2.12"
Expand Down
Loading
Loading