Paramdex
Param-related resources for FromSoftware games
Install / Use
/learn @soulsmods/ParamdexREADME
Paramdex
A collection of resources for working with params via SoulsFormats and SoulsFormats-derived tools.
Three folders are included for each game:
- Defs - paramdefs required to edit param data, given in XML format. Filenames are arbitrary; apply based on the included metadata after loading.
- Names - predefined row names, primarily for newer games with names stripped. Names should not be assumed to be present for every param.
- Tdfs - paramtdfs provide friendly names for enumerated types. Only officially shipped with Demon's Souls. Additionally, for ACVI some param files are mangled and do not include the param type string; ParamTypes.txt includes the correct param types for those that need it.
Paramdefs for DeS, DS1, and BB were shipped with the games and should not be altered beyond translating display names and descriptions.
Paramdefs for SDT, ER, and ACVI are mostly official but have been extended slightly due to updates. The above applies to any original fields.
Paramdefs for other games were reverse-engineered, so improvements are welcome.
Game | Directory -----|---------- 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 Armored Core VI | AC6
Writing Paramdefs
All paramdefs should contain the following elements:
Element | Description --------|------------ ParamType | Correlates the paramdef to its params DataVersion | Indicates a revision of the param data structure BigEndian | Whether the binary format is big-endian Unicode | Whether description strings are encoded in UTF-16 FormatVersion | Determines the binary format of the paramdef Fields | Contains the Field elements that describe param data
Each Field element has a mandatory Def attribute that specifies the type, internal name, bit size or array length if needed, and (optionally) default value. Bit size and array length are written as in a C declaration.
<!-- Minimum required info -->
<Field Def="u16 iconId" />
<!-- Specifying a default value -->
<Field Def="u16 iconId = 1000" />
<!-- Defining a bitfield -->
<Field Def="u8 enableGuard:1" />
<!-- Defining an array -->
<Field Def="dummy8 padding[2]" />
Additionally, the following elements may be added to customize editor functionality:
Element | Description --------|------------ DisplayName | A more human-readable name for the field Enum | Indicates an enumerated type; corresponds to a paramtdf Description | A description of the field's purpose DisplayFormat | A printf format string for displaying the value EditFlags | Controls editor behavior; known flags are Wrap and Lock Minimum | The minimum acceptable value Maximum | The maximum acceptable value Increment | How much to increase or decrease the value per step SortID | An arbitrary number that determines display ordering of fields UnkB8 | An optional new string of unknown purpose; appears to be an identifier. UnkC0 | An optional new string of unknown purpose; appears to be a param type. UnkC8 | An optional new string of unknown purpose; appears to be a display string.
Any elements not provided will be given sensible default values based on the field's type. Default, Minimum, Maximum, and Increment are always specified as floats, so they are not meaningful for array types.
<!-- A fully-loaded declaration -->
<Field Def="u32 foobarType:7 = 15">
<DisplayName>Foobar Type</DisplayName>
<Enum>FOOBAR_TYPE</Enum>
<Description>Determines the foobarosity of the whizbang.</Description>
<DisplayFormat>%8x</DisplayFormat>
<EditFlags>Wrap</EditFlags>
<Minimum>10</Minimum>
<Maximum>100</Maximum>
<Increment>5</Increment>
<SortID>1500</SortID>
</Field>
All available types are listed below.
Type | Supports Bit Size | Supports Array Length | Description -----|-------------------|-----------------------|------------ s8 | Yes | No | One-byte signed int u8 | Yes | No | One-byte unsigned int s16 | Yes | No | Two-byte signed int u16 | Yes | No | Two-byte unsigned int s32 | Yes | No | Four-byte signed int u32 | Yes | No | Four-byte unsigned int b32 | No | No | Four-byte int representing a bool f32 | No | No | Single-precision floating point angle32 | No | No | Single-precision floating point representing an angle f64 | No | No | Double-precision floating point fixstr | No | Mandatory | Fixed-width Shift-JIS string fixstrW | No | Mandatory | Fixed-width UTF-16 string dummy8 | Yes | Yes | Byte or array of bytes, typically used for padding<br>Either bit size or array length must be specified (but not both)
Contributors
EvanDeadlySins
GiveMeThePowa
katalash
Pavuk
thefifthmatt
TKGP
Vawser
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
Security Score
Audited on Mar 6, 2026
