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 5166f6de04 param: comment out unused UTF16 row names flag 1 year ago
bindings/python python: show example names colored when possible 1 year ago
res names: add 4 missing hashes 1 year ago
scripts scripts: add dir 1 year ago
src param: comment out unused UTF16 row names flag 1 year ago
.gitignore Init 1 year ago
Cargo.lock param: good enough parsing of bitfields 1 year ago
Cargo.toml param: good enough parsing of bitfields 1 year ago
README.md dcx: repack from existing instance 1 year 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 (C#) or soulstruct (Python). 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, repack (untested)
BND3 DS1 Load, extract
BHF3 DS1 Load, extract
DAT KF4 Load, extract, repack
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.
  • There are a few scripts useful for some testing/modding tasks.

Credits

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