This repository contains a Cargo Workspace of various Rust Crates which handle BLF files used by various Blam engine games such as Halo 3, Halo 3: ODST and Halo: Reach.
This is the core crate of this workspace, it defines many types of BLF chunks for various Halo versions, and functions to interact with them.
This binary crate is a a very simple command-line-interface (CLI) for interacting with BLF files. This CLI is primarily used for managing Halo's "Title Storage", more information can be found in it's readme.
This crate contains BLF functions used by the client-side TypeScript code of blam.network. It is compiled to WebAssembly using wasm-pack.
A closed-source counterpart to blf_lib held in the blf_private workspace. This package currently is only used for handling game data relating to online services.
This crate contains BLF functions used by the server-side Typescript code of Blam Network's web-APIs. It is compiled via napi-rs and uses the Node.js Node-API (napi)
BLF is a chunk-based format, similar to Material Exchange Format (MXF). These files consist of blf chunks, which are regions of data labelled with a 12-byte header including the chunk name, version and length, allowing readers to seek through the file until they find the chunk they're looking for.
Generally, BLF files include a _blf
start-of-file chunk and a _eof
end-of-file chunk, some readers will check/assert that these chunks are present, though the format is still readable without them.
To my knowledge, Bungie have never shared the meaning of the BLF acronym, but it probably means The name "BLF" is probably short for "Blam File".
offset | length | name |
---|---|---|
0x0 | 4 | chunk signature |
0x4 | 4 | chunk length |
0x8 | 2 | major version |
0xA | 2 | minor version |