Low-level library for exploring From Software games files.
Go to file
dece 5166f6de04 param: comment out unused UTF16 row names flag
Unsure if used in PTDE, but at least there are no more warnings.
2020-05-30 17:38:33 +02:00
bindings/python Revert "python: faulty unpackers::bnd bindings" 2020-05-15 19:21:37 +02:00
res names: add 4 missing hashes 2020-04-16 13:36:58 +02:00
scripts scripts: add dir 2020-05-26 01:04:57 +02:00
src param: comment out unused UTF16 row names flag 2020-05-30 17:38:33 +02:00
.gitignore Init 2020-04-11 04:21:21 +02:00
Cargo.lock param: good enough parsing of bitfields 2020-05-22 22:52:56 +02:00
Cargo.toml param: good enough parsing of bitfields 2020-05-22 22:52:56 +02:00
README.md dcx: repack from existing instance 2020-05-30 17:34:02 +02:00

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.