5 releases (3 breaking)
0.6.0 | Dec 9, 2023 |
---|---|
0.5.0 | Jun 12, 2022 |
0.4.0 | Apr 15, 2022 |
0.2.1 | Jan 25, 2021 |
0.2.0 | Jan 23, 2021 |
#1906 in Parser implementations
110KB
2.5K
SLoC
smash-arc
A Rust library for working with Smash Ultimate's data.arc files. For building on desktop, add --features=libzstd
. See the cargo.toml for additional options.
Example: cargo build --release --features=libzstd
lib.rs
:
A library for working with the data.arc file from Smash Ultimate.
use smash_arc::{ArcFile, ArcLookup, FileNode, Hash40, Region};
// Load the hashes needed to list directories (file format restriction)
Hash40::set_global_labels_file("hash_labels.txt").unwrap();
// Parse the arc from a file
let arc = ArcFile::open("data.arc").unwrap();
// loop over every file in the root
for node in arc.get_dir_listing("/").unwrap() {
match node {
FileNode::Dir(dir) => {
// print out name of directory
println!("directory: {}", dir.global_label().unwrap());
}
FileNode::File(file) => {
// extract file
let path = file.global_label().unwrap();
std::fs::write(path, arc.get_file_contents(file, Region::UsEnglish).unwrap()).unwrap();
}
}
}
Cargo Features
-
network
(enabled by default) = Ability to parse the file over the network -
dir-listing
(enabled by default) = List directories -
global-hashes
(enabled by default) = Enable a global table for cracking hashes -
smash-runtime
= Enables features for running under the context of Smash Ultimate itself (enable Aarch64 crc32 hardware acceleration, enable parsing the Arc from the game's memory layout) -
search
= Enable functionality to fuzzy searchArcFile
s -
ZSTD backends
libzstd
- Recommended for use on platforms it builds forrust-zstd
- Increased portability (Recommended for use on switch)nozstd
- Provide no zstd backend, panic on ZSTD decompression
Dependencies
~1.8–3.5MB
~67K SLoC