Skip to content

Rust implementation of the hash function used in BSA files for The Elder Scrolls III: Morrowind.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

FaultyRAM/bsa3-hash

Repository files navigation

bsa3-hash

GitHub Actions Crates.io Docs.rs

bsa3-hash provides a Rust implementation of the hash function used in BSA files for The Elder Scrolls III: Morrowind.

Usage

Add bsa3-hash to your Cargo.toml:

[dependencies]
bsa3-hash = "^3.0.0"

Then call bsa3_hash::calculate as needed:

fn main() {
    assert_eq!(
        bsa3_hash::calculate(r"meshes\m\probe_journeyman_01.nif".as_bytes()),
        0x0002_0336, 0xBB50_0695
    );
}

Benchmarking

bsa3-hash supports benchmarking via criterion. Currently we test and benchmark against three data sets: the filename/hash lists from Morrowind.bsa, Tribunal.bsa and Bloodmoon.bsa. To run the benchmarks, simply do the following:

  • Install cargo-criterion, if you haven't already done so:
    cargo install cargo-criterion
    
  • Run cargo-criterion in the crate directory:
    cargo criterion
    

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Rust implementation of the hash function used in BSA files for The Elder Scrolls III: Morrowind.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages