How deamon87/tactcpp works
TACTCpp is a C++ library and CLI for loading WoW CASC data and extracting game files by name, ID, content key, or encoding key. The CLI parses requests and delegates file resolution to a loaded BuildInstance; the library resolves manifests and indexes to content, obtains bytes from local or online sources, and decodes them for extraction. The graph preserves the documented online/local and name/ID/key capabilities. Several relationships are based on README or import references; unsampled implementation details are omitted rather than assumed.
Main entry points: BuildInstance.cpp Build instance · CDN.cpp CDN and local access · RootInstance.cpp Root manifest · main.cpp TACTTool CLI
Components 20
CLI extraction
- TACTTool CLI
src/main.cpp - Dump tool
src/dumptool.cpp
Build resolution
- Build instance
TactCppLib/BuildInstance.cpp - Settings
TactCppLib/Settings.cpp - Build and CDN configs
TactCppLib/BuildInfo.h - Encoding lookup
TactCppLib/EncodingInstance.cpp - Root manifest
TactCppLib/RootInstance.cpp - Install manifest
TactCppLib/InstallInstance.cpp - Listfile lookup
TactCppLib/ListFile.cpp - CASC indexes
TactCppLib/GroupIndex.cpp
Content access
- CDN and local access
TactCppLib/CDN.cpp - File cache
TactCppLib/FileCache.cpp - Memory-mapped files
TactCppLib/MemoryMappedFile.cpp - BLTE decoding
TactCppLib/BLTE.cpp
Parsing and crypto
- Binary reader
TactCppLib/utils/DataReader.h - Key and Salsa crypto
TactCppLib/utils/KeyService.cpp - TACT config parser
TactCppLib/utils/TactConfigParser.cpp
Other components
- CLI user
- Extracted files
- Blizzard CDN
Connections 27
- CLI user → TACTTool CLI: selects mode
- TACTTool CLI → Build instance: loads build
- TACTTool CLI → Extracted files: writes extraction
- TACTTool CLI → Dump tool
- Build instance → Settings: uses settings
- Build instance → Build and CDN configs: loads configs
TactCppLib/BuildInstance.cpp - Build instance → CASC indexes: loads indexes
TactCppLib/BuildInstance.cpp - Build instance → Encoding lookup: loads encoding
- Build instance → Root manifest: loads root
TactCppLib/BuildInstance.cpp - Build instance → Install manifest: loads install
- Build instance → Listfile lookup: loads optionally
- Build instance → CDN and local access: requests content
- Build instance → Root manifest: resolves names and IDs
TactCppLib/BuildInstance.cpp - Build instance → Encoding lookup: looks up content keys
TactCppLib/BuildInstance.cpp - Install manifest → Root manifest: name fallback
- CASC indexes → CDN and local access: uses CDN index
- CDN and local access → Blizzard CDN: downloads files
- CDN and local access → File cache: uses cache
- Encoding lookup → Memory-mapped files: reads mapped data
- Root manifest → Listfile lookup: uses names
TactCppLib/RootInstance.cpp - Root manifest → Binary reader: parses records
TactCppLib/RootInstance.cpp - Encoding lookup → Binary reader: parses records
TactCppLib/EncodingInstance.cpp - CASC indexes → Binary reader: parses records
- CDN and local access → BLTE decoding: decodes content
- BLTE decoding → Key and Salsa crypto: uses decryption keys
TactCppLib/BLTE.cpp - BLTE decoding → Binary reader: reads blocks
TactCppLib/BLTE.cpp - Build instance → TACT config parser: parses configs
TactCppLib/BuildInstance.cpp