This repository has been archived on 2024-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
RustedIronRing/README.md

2.4 KiB

Rusted Iron Ring

Low-level library for exploring From Software games files. Currently only supports Dark Souls 1 (PTDE).

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.

Usage

The project contains 2 artefacts:

  • ironring, a library with all the parsing/unpacking features implemented.
  • rir, an executable to use main lib features from the CLI.

The goal is to make the lib compatible with FFI tools such as Python's ctypes, to ship a dynamic lib accessible for any language to easily script tasks and ideas, but we're not there yet.

Ironring usage:

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
    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

Containers

  • BHD5 / BDT: extraction from disk to disk.
  • DCX: decompression from disk to disk/memory.
  • BND (v3): extraction from disk/memory to disk/memory, optionally decompress from DCX.
  • BHF (v3): extraction from disk/memory to disk/memory.

Repacking is 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.

Files

  • PARAMDEF: parsing
  • PARAM: parsing, optionally with a PARAMDEF

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

All the fat cats involved in the scene and the wiki.