Crate smash_arc

Source
Expand description

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 search ArcFiles

  • ZSTD backends

    • libzstd - Recommended for use on platforms it builds for
    • rust-zstd - Increased portability (Recommended for use on switch)
    • nozstd - Provide no zstd backend, panic on ZSTD decompression

Re-exports§

pub use hash_labels::GLOBAL_LABELS;

Structs§

ArcFile
A struct representing the data.arc file
CompTableHeader
DirInfo
Also known as MassLoadingGroup
DirInfoFlags
DirectoryOffset
Also known as MassLoadingData
FileData
FileDataFlags
FileDataIdx
FileInfo
FileInfoBucket
FileInfoFlags
FileInfoIdx
FileInfoIndex
FileInfoIndiceIdx
FileInfoToFileData
FileInfoToFileDataBitfield
FilePath
FilePathIdx
FileSystem
The filesystem itself. Includes all the linking between paths, file data, directories, and mass-loading groups.
FileSystemHeader
FolderPathListEntry
GLOBAL_LABELS
Hash40
HashLabels
HashToIndex
InfoToDataIdx
PathListEntry
QuickDir
SearchFileSystem
SearchFileSystemHeader
SearchListEntry
StreamData
StreamEntry
StreamEntryFlags
StreamHeader

Enums§

FileNode
A node in the file tree, the hash of which can be used to handle lookups.
LookupError
RedirectionType
Region
An enum representing a Region (country and associated language) supported by Smash Ultimate.

Traits§

ArcLookup
The trait that allows different implementations of the arc to share the same code for making lookups into the filesystem use the same logic.
SearchLookup
SeekRead

Functions§

hash40