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