Sobre el proyecto

Paramdex es una colección de recursos para trabajar con parámetros de juego (params) mediante SoulsFormats y herramientas derivadas de él. Se enfoca en el modding de datos y herramientas para títulos de FromSoftware, no en la jugabilidad en sí. Estructura: cada juego compatible tiene tres carpetas. Defs contiene paramdefs en XML, necesarios para editar datos de params; los nombres de archivo son arbitrarios y deben aplicarse según los metadatos incluidos tras la carga. Names contiene nombres de filas predefinidos, útiles principalmente para juegos más recientes donde se eliminaron los nombres, y no se garantizan nombres para cada param. Tdfs contiene paramtdfs que asignan nombres amigables a tipos enumerados; solo se distribuyeron oficialmente con Demon's Souls. Para Armored Core VI, algunos archivos de params están dañados y carecen de la cadena de tipo de param, por lo que ParamTypes.txt enumera los tipos correctos para los que lo necesitan. Cobertura: 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) y Armored Core VI (AC6). La procedencia de las definiciones es importante para los colaboradores: los paramdefs de DeS, DS1 y BB se distribuyeron con los juegos y solo deben modificarse traduciendo nombres visibles y descripciones. Los paramdefs de SDT, ER y AC6 son mayormente oficiales pero ligeramente ampliados debido a actualizaciones, y se aplica la misma restricción a los campos originales. Los paramdefs de los juegos restantes fueron obtenidos por ingeniería inversa, por lo que se agradecen mejoras. El README también documenta cómo escribir paramdefs. Cada paramdef debe contener ParamType (vincula el paramdef con sus params), DataVersion (revisión de la estructura de datos del param), BigEndian, Unicode (si las cadenas de descripción son UTF-16), FormatVersion (formato binario del paramdef) y Fields. Cada Field tiene un atributo Def obligatorio que indica el tipo, nombre interno, tamaño de bits opcional o longitud de array, y un valor predeterminado opcional, escrito en estilo de declaración C, p. ej., u16 iconId, u16 iconId = 1000, u8 enableGuard:1 para un campo de bits, o dummy8 padding[2] para un array. Los elementos opcionales personalizan el comportamiento del editor: DisplayName, Enum (corresponde a un paramtdf), Description, DisplayFormat (cadena de formato printf), EditFlags (banderas conocidas Wrap y Lock), Minimum, Maximum, Increment, SortID para orden de visualización, y las cadenas de propósito desconocido UnkB8, UnkC0 y UnkC8. Los elementos omitidos reciben valores predeterminados sensatos según el tipo de campo; Default, Minimum, Maximum e Increment son siempre flotantes y no son significativos para tipos de array. Un ejemplo completamente cargado combina Def con DisplayName, Enum, Description, DisplayFormat, EditFlags, Minimum, Maximum, Increment y SortID. Los tipos de campo compatibles son s8, u8, s16, u16, s32, u32 (todos admiten tamaño de bits pero no longitud de array), b32 (bool de cuatro bytes), f32, angle32, f64, fixstr y fixstrW (cadenas de ancho fijo Shift-JIS y UTF-16, con longitud de array obligatoria), y dummy8 (byte o array de bytes, típicamente relleno, que requiere tamaño de bits o longitud de array, pero no ambos). Los colaboradores listados incluyen a EvanDeadlySins, GiveMeThePowa, katalash, Pavuk, thefifthmatt, TKGP y Vawser.