Low-level library for exploring From Software games files.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
dece eff19f5551
scripts: add dir
4 years ago
bindings/python Revert "python: faulty unpackers::bnd bindings" 4 years ago
res names: add 4 missing hashes 4 years ago
scripts scripts: add dir 4 years ago
src dat: repacking, untested 4 years ago
.gitignore Init 4 years ago
Cargo.lock param: good enough parsing of bitfields 4 years ago
Cargo.toml param: good enough parsing of bitfields 4 years ago
README.md readme: clean 4 years ago

README.md

Rusted Iron Ring

Low-level library for exploring From Software games files.

This project is mainly to play with the Rust language, Nom parser, FFI, etc; if you need an actually used and tested library, see SoulsFormats. The main target has been Dark Souls 1 PTDE, but checkout the features section below.

Usage

The project contains 2 artefacts:

  • ironring, a library with all the projects features implemented.
  • rir, an executable to use main lib features from the CLI.
Rusted Iron Ring

USAGE:
    rir [SUBCOMMAND]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    bhd         Extracts BHD/BDT contents
    bhds        Extracts all BHD/BDT content (alphabetically) in a folder
    bhf         Extracts BHF/BDT contents
    bnd         Extracts BND contents
    dat         Extracts King's Field IV DAT contents
    dat-pack    Packs files in a King's Field IV DAT
    dcx         Extracts and decompress DCX data
    hash        Calculates hash for a string
    help        Prints this message or the help of the given subcommand(s)
    param       Parses PARAM contents
    paramdef    Prints PARAMDEF contents

Features

Format support

Type Games Features
BHD5/BDT DS1 Load, extract
DCX DS1 Load, extract
BND3 DS1 Load, extract
BHF3 DS1 Load, extract
DAT KF4 Load, extract, repack (untested)
PARAMDEF DS1 Pretty-print
PARAM DS1 Pretty-print, optionally with a PARAMDEF

Formats typically found within DCX files can usually be decompressed on the fly.

Repacking is mostly not supported, maybe one day. It is not that useful when using UDSFM and Yabber, but if you really need it you can check out SiegLib.

Misc

  • Encrypted archive name hasher.
  • There is a demo Python binding for some name_hashes features in the bindings/python dir, that uses PyO3 and thus requires nightly rustc to build.

Credits

TKGP and all the fat cats involved in the scene and the wiki.