Giter Club home page Giter Club logo

paramdex's Introduction

Paramdex

A collection of resources for working with params via SoulsFormats, Yapped, etc.
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 ParamType 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 present for Demon's Souls until further notice.

Paramdefs for DeS, DS1, and BB were shipped with the games and should not be altered beyond translating display names and descriptions.
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

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

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 No No One-byte signed int
u8 Yes No One-byte unsigned int
s16 No No Two-byte signed int
u16 Yes No Two-byte unsigned int
s32 No No Four-byte signed int
u32 Yes No Four-byte unsigned int
f32 No No Single-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 used for padding

Contributors

EvanDeadlySins
GiveMeThePowa
katalash
Pavuk
thefifthmatt
TKGP
Vawser

paramdex's People

Contributors

jkanderson avatar gracenotes avatar baaridunnasr avatar garyttierney avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.