bindings/python | ||
res | ||
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
README.md |
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.