About this project

Paramdex is a resource collection for working with game parameters (params) through SoulsFormats and tools derived from it. It targets data modding and tooling for FromSoftware titles rather than gameplay itself. Structure: each supported game has three folders. Defs holds paramdefs in XML, required to edit param data; filenames are arbitrary and should be applied based on the metadata included after loading. Names holds predefined row names, mainly useful for newer games where names were stripped, and names are not guaranteed for every param. Tdfs holds paramtdfs that give friendly names to enumerated types; these were only officially shipped with Demon's Souls. For Armored Core VI, some param files are mangled and lack the param type string, so ParamTypes.txt lists the correct types for those that need it. Coverage: Dark Souls (DS1), Dark Souls: Remastered (DS1R), Dark Souls II: Scholar of the First Sin (DS2S), Dark Souls III (DS3), Demon's Souls (DES), Bloodborne (BB), Sekiro (SDT), Elden Ring (ER) and Armored Core VI (AC6). Provenance of the definitions matters for contributors: paramdefs for DeS, DS1 and BB shipped with the games and should only be altered by translating display names and descriptions. Paramdefs for SDT, ER and AC6 are mostly official but slightly extended due to updates, and the same restriction applies to original fields. Paramdefs for the remaining games were reverse-engineered, so improvements are welcome. The README also documents how to write paramdefs. Every paramdef should contain ParamType (links the paramdef to its params), DataVersion (revision of the param data structure), BigEndian, Unicode (whether description strings are UTF-16), FormatVersion (binary format of the paramdef) and Fields. Each Field has a mandatory Def attribute giving type, internal name, optional bit size or array length, and an optional default value, written in C-declaration style, e.g. u16 iconId, u16 iconId = 1000, u8 enableGuard:1 for a bitfield, or dummy8 padding[2] for an array. Optional elements customize editor behavior: DisplayName, Enum (corresponds to a paramtdf), Description, DisplayFormat (printf format string), EditFlags (known flags Wrap and Lock), Minimum, Maximum, Increment, SortID for display ordering, and the unknown-purpose strings UnkB8, UnkC0 and UnkC8. Omitted elements receive sensible defaults based on field type; Default, Minimum, Maximum and Increment are always floats and are not meaningful for array types. A fully loaded example combines Def with DisplayName, Enum, Description, DisplayFormat, EditFlags, Minimum, Maximum, Increment and SortID. Supported field types are s8, u8, s16, u16, s32, u32 (all supporting bit size but not array length), b32 (four-byte bool), f32, angle32, f64, fixstr and fixstrW (fixed-width Shift-JIS and UTF-16 strings, array length mandatory), and dummy8 (byte or byte array, typically padding, requiring either bit size or array length but not both). Contributors listed include EvanDeadlySins, GiveMeThePowa, katalash, Pavuk, thefifthmatt, TKGP and Vawser.