Reformatting.
This commit is contained in:
@@ -26,7 +26,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "msh.h"
|
#include "msh.h"
|
||||||
|
|
||||||
// Guards for C++ usage
|
// Guards for C++ usage
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
@@ -52,9 +52,9 @@ extern "C" {
|
|||||||
#define GTS_SIZE 10
|
#define GTS_SIZE 10
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// === FORWARD DEFS ===
|
// === FORWARD DEFS ===
|
||||||
//
|
//
|
||||||
|
|
||||||
typedef union type4 Type4;
|
typedef union type4 Type4;
|
||||||
typedef struct timestamp Timestamp;
|
typedef struct timestamp Timestamp;
|
||||||
@@ -62,11 +62,10 @@ extern "C" {
|
|||||||
typedef struct record Record;
|
typedef struct record Record;
|
||||||
typedef struct field Field;
|
typedef struct field Field;
|
||||||
|
|
||||||
//
|
//
|
||||||
// === SIMPLE TYPES ===
|
// === SIMPLE TYPES ===
|
||||||
//
|
//
|
||||||
|
|
||||||
// Basic types
|
|
||||||
typedef uint32_t formid;
|
typedef uint32_t formid;
|
||||||
|
|
||||||
// char[4] with uint32_t access
|
// char[4] with uint32_t access
|
||||||
@@ -78,9 +77,9 @@ extern "C" {
|
|||||||
// indexed by flag bit
|
// indexed by flag bit
|
||||||
typedef const char *const rfs_inner[RFS_INNER_SIZE];
|
typedef const char *const rfs_inner[RFS_INNER_SIZE];
|
||||||
|
|
||||||
//
|
//
|
||||||
// === ENUMS ===
|
// === ENUMS ===
|
||||||
//
|
//
|
||||||
|
|
||||||
// Tag for generic node tagged union
|
// Tag for generic node tagged union
|
||||||
enum node_type { // NT_ prefix
|
enum node_type { // NT_ prefix
|
||||||
@@ -90,7 +89,6 @@ extern "C" {
|
|||||||
|
|
||||||
// Record type enum
|
// Record type enum
|
||||||
enum record_type {
|
enum record_type {
|
||||||
_NONE,
|
|
||||||
AACT, ACHR, ACTI, ADDN, ALCH, AMMO,
|
AACT, ACHR, ACTI, ADDN, ALCH, AMMO,
|
||||||
ANIO, APPA, ARMA, ARMO, ARTO, ASPC,
|
ANIO, APPA, ARMA, ARMO, ARTO, ASPC,
|
||||||
ASTP, AVIF, BOOK, BPTD, CAMS, CELL,
|
ASTP, AVIF, BOOK, BPTD, CAMS, CELL,
|
||||||
@@ -129,9 +127,9 @@ extern "C" {
|
|||||||
GT_CELL_TEMPORARY_CHILDREN = 9,
|
GT_CELL_TEMPORARY_CHILDREN = 9,
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// === COMPOSITE TYPES ===
|
// === COMPOSITE TYPES ===
|
||||||
//
|
//
|
||||||
|
|
||||||
// Generic node
|
// Generic node
|
||||||
typedef struct node Node;
|
typedef struct node Node;
|
||||||
@@ -158,9 +156,9 @@ extern "C" {
|
|||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// === BINARY DATA OVERLAYS ===
|
// === BINARY DATA OVERLAYS ===
|
||||||
//
|
//
|
||||||
|
|
||||||
#pragma pack(push, 1)
|
#pragma pack(push, 1)
|
||||||
|
|
||||||
@@ -200,9 +198,9 @@ extern "C" {
|
|||||||
|
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
|
|
||||||
//
|
//
|
||||||
// === LUTs ===
|
// === LUTs ===
|
||||||
//
|
//
|
||||||
|
|
||||||
// record type enum to fourcc value
|
// record type enum to fourcc value
|
||||||
extern const uint32_t rt[RT_SIZE];
|
extern const uint32_t rt[RT_SIZE];
|
||||||
@@ -224,10 +222,9 @@ extern "C" {
|
|||||||
// Printable strings for group types
|
// Printable strings for group types
|
||||||
extern const char *const group_type_strings[GTS_SIZE];
|
extern const char *const group_type_strings[GTS_SIZE];
|
||||||
|
|
||||||
|
//
|
||||||
//
|
// === FUNCTIONS ===
|
||||||
// === FUNCTIONS ===
|
//
|
||||||
//
|
|
||||||
|
|
||||||
// hashes type value into RT_ hash value
|
// hashes type value into RT_ hash value
|
||||||
inline uint32_t rt_hash(uint32_t type) {
|
inline uint32_t rt_hash(uint32_t type) {
|
||||||
|
|||||||
254
espReader/LUT.c
254
espReader/LUT.c
@@ -36,48 +36,48 @@ const enum record_type group_order[GO_SIZE] = {
|
|||||||
|
|
||||||
// record type to record type value
|
// record type to record type value
|
||||||
const uint32_t rt[RT_SIZE] = {
|
const uint32_t rt[RT_SIZE] = {
|
||||||
[AACT] = LE('AACT'), [ACHR] = LE('ACHR'), [ACTI] = LE('ACTI'),
|
[AACT] = LE('AACT'),[ACHR] = LE('ACHR'),[ACTI] = LE('ACTI'),
|
||||||
[ADDN] = LE('ADDN'), [ALCH] = LE('ALCH'), [AMMO] = LE('AMMO'),
|
[ADDN] = LE('ADDN'),[ALCH] = LE('ALCH'),[AMMO] = LE('AMMO'),
|
||||||
[ANIO] = LE('ANIO'), [APPA] = LE('APPA'), [ARMA] = LE('ARMA'),
|
[ANIO] = LE('ANIO'),[APPA] = LE('APPA'),[ARMA] = LE('ARMA'),
|
||||||
[ARMO] = LE('ARMO'), [ARTO] = LE('ARTO'), [ASPC] = LE('ASPC'),
|
[ARMO] = LE('ARMO'),[ARTO] = LE('ARTO'),[ASPC] = LE('ASPC'),
|
||||||
[ASTP] = LE('ASTP'), [AVIF] = LE('AVIF'), [BOOK] = LE('BOOK'),
|
[ASTP] = LE('ASTP'),[AVIF] = LE('AVIF'),[BOOK] = LE('BOOK'),
|
||||||
[BPTD] = LE('BPTD'), [CAMS] = LE('CAMS'), [CELL] = LE('CELL'),
|
[BPTD] = LE('BPTD'),[CAMS] = LE('CAMS'),[CELL] = LE('CELL'),
|
||||||
[CLAS] = LE('CLAS'), [CLDC] = LE('CLDC'), [CLFM] = LE('CLFM'),
|
[CLAS] = LE('CLAS'),[CLDC] = LE('CLDC'),[CLFM] = LE('CLFM'),
|
||||||
[CLMT] = LE('CLMT'), [COBJ] = LE('COBJ'), [COLL] = LE('COLL'),
|
[CLMT] = LE('CLMT'),[COBJ] = LE('COBJ'),[COLL] = LE('COLL'),
|
||||||
[CONT] = LE('CONT'), [CPTH] = LE('CPTH'), [CSTY] = LE('CSTY'),
|
[CONT] = LE('CONT'),[CPTH] = LE('CPTH'),[CSTY] = LE('CSTY'),
|
||||||
[DEBR] = LE('DEBR'), [DIAL] = LE('DIAL'), [DLBR] = LE('DLBR'),
|
[DEBR] = LE('DEBR'),[DIAL] = LE('DIAL'),[DLBR] = LE('DLBR'),
|
||||||
[DLVW] = LE('DLVW'), [DOBJ] = LE('DOBJ'), [DOOR] = LE('DOOR'),
|
[DLVW] = LE('DLVW'),[DOBJ] = LE('DOBJ'),[DOOR] = LE('DOOR'),
|
||||||
[DUAL] = LE('DUAL'), [ECZN] = LE('ECZN'), [EFSH] = LE('EFSH'),
|
[DUAL] = LE('DUAL'),[ECZN] = LE('ECZN'),[EFSH] = LE('EFSH'),
|
||||||
[ENCH] = LE('ENCH'), [EQUP] = LE('EQUP'), [EXPL] = LE('EXPL'),
|
[ENCH] = LE('ENCH'),[EQUP] = LE('EQUP'),[EXPL] = LE('EXPL'),
|
||||||
[EYES] = LE('EYES'), [FACT] = LE('FACT'), [FLOR] = LE('FLOR'),
|
[EYES] = LE('EYES'),[FACT] = LE('FACT'),[FLOR] = LE('FLOR'),
|
||||||
[FLST] = LE('FLST'), [FSTP] = LE('FSTP'), [FSTS] = LE('FSTS'),
|
[FLST] = LE('FLST'),[FSTP] = LE('FSTP'),[FSTS] = LE('FSTS'),
|
||||||
[FURN] = LE('FURN'), [GLOB] = LE('GLOB'), [GMST] = LE('GMST'),
|
[FURN] = LE('FURN'),[GLOB] = LE('GLOB'),[GMST] = LE('GMST'),
|
||||||
[GRAS] = LE('GRAS'), [GRUP] = LE('GRUP'), [HAIR] = LE('HAIR'),
|
[GRAS] = LE('GRAS'),[GRUP] = LE('GRUP'),[HAIR] = LE('HAIR'),
|
||||||
[HAZD] = LE('HAZD'), [HDPT] = LE('HDPT'), [IDLE] = LE('IDLE'),
|
[HAZD] = LE('HAZD'),[HDPT] = LE('HDPT'),[IDLE] = LE('IDLE'),
|
||||||
[IDLM] = LE('IDLM'), [IMAD] = LE('IMAD'), [IMGS] = LE('IMGS'),
|
[IDLM] = LE('IDLM'),[IMAD] = LE('IMAD'),[IMGS] = LE('IMGS'),
|
||||||
[INFO] = LE('INFO'), [INGR] = LE('INGR'), [IPCT] = LE('IPCT'),
|
[INFO] = LE('INFO'),[INGR] = LE('INGR'),[IPCT] = LE('IPCT'),
|
||||||
[IPDS] = LE('IPDS'), [KEYM] = LE('KEYM'), [KYWD] = LE('KYWD'),
|
[IPDS] = LE('IPDS'),[KEYM] = LE('KEYM'),[KYWD] = LE('KYWD'),
|
||||||
[LAND] = LE('LAND'), [LCRT] = LE('LCRT'), [LCTN] = LE('LCTN'),
|
[LAND] = LE('LAND'),[LCRT] = LE('LCRT'),[LCTN] = LE('LCTN'),
|
||||||
[LGTM] = LE('LGTM'), [LIGH] = LE('LIGH'), [LSCR] = LE('LSCR'),
|
[LGTM] = LE('LGTM'),[LIGH] = LE('LIGH'),[LSCR] = LE('LSCR'),
|
||||||
[LTEX] = LE('LTEX'), [LVLI] = LE('LVLI'), [LVLN] = LE('LVLN'),
|
[LTEX] = LE('LTEX'),[LVLI] = LE('LVLI'),[LVLN] = LE('LVLN'),
|
||||||
[LVSP] = LE('LVSP'), [MATO] = LE('MATO'), [MATT] = LE('MATT'),
|
[LVSP] = LE('LVSP'),[MATO] = LE('MATO'),[MATT] = LE('MATT'),
|
||||||
[MESG] = LE('MESG'), [MGEF] = LE('MGEF'), [MISC] = LE('MISC'),
|
[MESG] = LE('MESG'),[MGEF] = LE('MGEF'),[MISC] = LE('MISC'),
|
||||||
[MOVT] = LE('MOVT'), [MSTT] = LE('MSTT'), [MUSC] = LE('MUSC'),
|
[MOVT] = LE('MOVT'),[MSTT] = LE('MSTT'),[MUSC] = LE('MUSC'),
|
||||||
[MUST] = LE('MUST'), [NAVI] = LE('NAVI'), [NAVM] = LE('NAVM'),
|
[MUST] = LE('MUST'),[NAVI] = LE('NAVI'),[NAVM] = LE('NAVM'),
|
||||||
[NOTE] = LE('NOTE'), [NPC_] = LE('NPC_'), [OTFT] = LE('OTFT'),
|
[NOTE] = LE('NOTE'),[NPC_] = LE('NPC_'),[OTFT] = LE('OTFT'),
|
||||||
[PACK] = LE('PACK'), [PERK] = LE('PERK'), [PGRE] = LE('PGRE'),
|
[PACK] = LE('PACK'),[PERK] = LE('PERK'),[PGRE] = LE('PGRE'),
|
||||||
[PHZD] = LE('PHZD'), [PROJ] = LE('PROJ'), [PWAT] = LE('PWAT'),
|
[PHZD] = LE('PHZD'),[PROJ] = LE('PROJ'),[PWAT] = LE('PWAT'),
|
||||||
[QUST] = LE('QUST'), [RACE] = LE('RACE'), [REFR] = LE('REFR'),
|
[QUST] = LE('QUST'),[RACE] = LE('RACE'),[REFR] = LE('REFR'),
|
||||||
[REGN] = LE('REGN'), [RELA] = LE('RELA'), [REVB] = LE('REVB'),
|
[REGN] = LE('REGN'),[RELA] = LE('RELA'),[REVB] = LE('REVB'),
|
||||||
[RFCT] = LE('RFCT'), [RGDL] = LE('RGDL'), [SCEN] = LE('SCEN'),
|
[RFCT] = LE('RFCT'),[RGDL] = LE('RGDL'),[SCEN] = LE('SCEN'),
|
||||||
[SCOL] = LE('SCOL'), [SCPT] = LE('SCPT'), [SCRL] = LE('SCRL'),
|
[SCOL] = LE('SCOL'),[SCPT] = LE('SCPT'),[SCRL] = LE('SCRL'),
|
||||||
[SHOU] = LE('SHOU'), [SLGM] = LE('SLGM'), [SMBN] = LE('SMBN'),
|
[SHOU] = LE('SHOU'),[SLGM] = LE('SLGM'),[SMBN] = LE('SMBN'),
|
||||||
[SMEN] = LE('SMEN'), [SMQN] = LE('SMQN'), [SNCT] = LE('SNCT'),
|
[SMEN] = LE('SMEN'),[SMQN] = LE('SMQN'),[SNCT] = LE('SNCT'),
|
||||||
[SNDR] = LE('SNDR'), [SOPM] = LE('SOPM'), [SOUN] = LE('SOUN'),
|
[SNDR] = LE('SNDR'),[SOPM] = LE('SOPM'),[SOUN] = LE('SOUN'),
|
||||||
[SPEL] = LE('SPEL'), [SPGD] = LE('SPGD'), [STAT] = LE('STAT'),
|
[SPEL] = LE('SPEL'),[SPGD] = LE('SPGD'),[STAT] = LE('STAT'),
|
||||||
[TACT] = LE('TACT'), [TES4] = LE('TES4'), [TREE] = LE('TREE'),
|
[TACT] = LE('TACT'),[TES4] = LE('TES4'),[TREE] = LE('TREE'),
|
||||||
[TXST] = LE('TXST'), [VTYP] = LE('VTYP'), [WATR] = LE('WATR'),
|
[TXST] = LE('TXST'),[VTYP] = LE('VTYP'),[WATR] = LE('WATR'),
|
||||||
[WEAP] = LE('WEAP'), [WOOP] = LE('WOOP'), [WRLD] = LE('WRLD'),
|
[WEAP] = LE('WEAP'),[WOOP] = LE('WOOP'),[WRLD] = LE('WRLD'),
|
||||||
[WTHR] = LE('WTHR'),
|
[WTHR] = LE('WTHR'),
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -477,49 +477,49 @@ rfs_inner _wrld = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
rfs_inner *const rfs[RT_HASH_SIZE] = {
|
rfs_inner *const rfs[RT_HASH_SIZE] = {
|
||||||
[RT_AACT] = CP( NULL), [RT_ACHR] = CP(_achr), [RT_ACTI] = CP(_acti),
|
[RT_AACT] = CP(NULL ),[RT_ACHR] = CP(_achr),[RT_ACTI] = CP(_acti),
|
||||||
[RT_ADDN] = CP( NULL), [RT_ALCH] = CP(_alch), [RT_AMMO] = CP(_ammo),
|
[RT_ADDN] = CP(NULL ),[RT_ALCH] = CP(_alch),[RT_AMMO] = CP(_ammo),
|
||||||
[RT_ANIO] = CP(_anio), [RT_APPA] = CP( NULL), [RT_ARMA] = CP( NULL),
|
[RT_ANIO] = CP(_anio),[RT_APPA] = CP(NULL ),[RT_ARMA] = CP(NULL ),
|
||||||
[RT_ARMO] = CP(_armo), [RT_ARTO] = CP( NULL), [RT_ASPC] = CP( NULL),
|
[RT_ARMO] = CP(_armo),[RT_ARTO] = CP(NULL ),[RT_ASPC] = CP(NULL ),
|
||||||
[RT_ASTP] = CP( NULL), [RT_AVIF] = CP( NULL), [RT_BOOK] = CP( NULL),
|
[RT_ASTP] = CP(NULL ),[RT_AVIF] = CP(NULL ),[RT_BOOK] = CP(NULL ),
|
||||||
[RT_BPTD] = CP( NULL), [RT_CAMS] = CP( NULL), [RT_CELL] = CP(_cell),
|
[RT_BPTD] = CP(NULL ),[RT_CAMS] = CP(NULL ),[RT_CELL] = CP(_cell),
|
||||||
[RT_CLAS] = CP( NULL), [RT_CLDC] = CP( NULL), [RT_CLFM] = CP(_clfm),
|
[RT_CLAS] = CP(NULL ),[RT_CLDC] = CP(NULL ),[RT_CLFM] = CP(_clfm),
|
||||||
[RT_CLMT] = CP( NULL), [RT_COBJ] = CP( NULL), [RT_COLL] = CP( NULL),
|
[RT_CLMT] = CP(NULL ),[RT_COBJ] = CP(NULL ),[RT_COLL] = CP(NULL ),
|
||||||
[RT_CONT] = CP(_cont), [RT_CPTH] = CP( NULL), [RT_CSTY] = CP(_csty),
|
[RT_CONT] = CP(_cont),[RT_CPTH] = CP(NULL ),[RT_CSTY] = CP(_csty),
|
||||||
[RT_DEBR] = CP( NULL), [RT_DIAL] = CP( NULL), [RT_DLBR] = CP( NULL),
|
[RT_DEBR] = CP(NULL ),[RT_DIAL] = CP(NULL ),[RT_DLBR] = CP(NULL ),
|
||||||
[RT_DLVW] = CP( NULL), [RT_DOBJ] = CP( NULL), [RT_DOOR] = CP(_door),
|
[RT_DLVW] = CP(NULL ),[RT_DOBJ] = CP(NULL ),[RT_DOOR] = CP(_door),
|
||||||
[RT_DUAL] = CP( NULL), [RT_ECZN] = CP( NULL), [RT_EFSH] = CP( NULL),
|
[RT_DUAL] = CP(NULL ),[RT_ECZN] = CP(NULL ),[RT_EFSH] = CP(NULL ),
|
||||||
[RT_ENCH] = CP( NULL), [RT_EQUP] = CP( NULL), [RT_EXPL] = CP( NULL),
|
[RT_ENCH] = CP(NULL ),[RT_EQUP] = CP(NULL ),[RT_EXPL] = CP(NULL ),
|
||||||
[RT_EYES] = CP(_eyes), [RT_FACT] = CP( NULL), [RT_FLOR] = CP( NULL),
|
[RT_EYES] = CP(_eyes),[RT_FACT] = CP(NULL ),[RT_FLOR] = CP(NULL ),
|
||||||
[RT_FLST] = CP( NULL), [RT_FSTP] = CP( NULL), [RT_FSTS] = CP( NULL),
|
[RT_FLST] = CP(NULL ),[RT_FSTP] = CP(NULL ),[RT_FSTS] = CP(NULL ),
|
||||||
[RT_FURN] = CP(_furn), [RT_GLOB] = CP(_glob), [RT_GMST] = CP( NULL),
|
[RT_FURN] = CP(_furn),[RT_GLOB] = CP(_glob),[RT_GMST] = CP(NULL ),
|
||||||
[RT_GRAS] = CP( NULL), [RT_GRUP] = CP( NULL), [RT_HAIR] = CP( NULL),
|
[RT_GRAS] = CP(NULL ),[RT_GRUP] = CP(NULL ),[RT_HAIR] = CP(NULL ),
|
||||||
[RT_HAZD] = CP( NULL), [RT_HDPT] = CP(_hdpt), [RT_IDLE] = CP( NULL),
|
[RT_HAZD] = CP(NULL ),[RT_HDPT] = CP(_hdpt),[RT_IDLE] = CP(NULL ),
|
||||||
[RT_IDLM] = CP(_idlm), [RT_IMAD] = CP( NULL), [RT_IMGS] = CP( NULL),
|
[RT_IDLM] = CP(_idlm),[RT_IMAD] = CP(NULL ),[RT_IMGS] = CP(NULL ),
|
||||||
[RT_INFO] = CP(_info), [RT_INGR] = CP( NULL), [RT_IPCT] = CP( NULL),
|
[RT_INFO] = CP(_info),[RT_INGR] = CP(NULL ),[RT_IPCT] = CP(NULL ),
|
||||||
[RT_IPDS] = CP( NULL), [RT_KEYM] = CP(_keym), [RT_KYWD] = CP( NULL),
|
[RT_IPDS] = CP(NULL ),[RT_KEYM] = CP(_keym),[RT_KYWD] = CP(NULL ),
|
||||||
[RT_LAND] = CP(_land), [RT_LCRT] = CP( NULL), [RT_LCTN] = CP( NULL),
|
[RT_LAND] = CP(_land),[RT_LCRT] = CP(NULL ),[RT_LCTN] = CP(NULL ),
|
||||||
[RT_LGTM] = CP( NULL), [RT_LIGH] = CP(_ligh), [RT_LSCR] = CP(_lscr),
|
[RT_LGTM] = CP(NULL ),[RT_LIGH] = CP(_ligh),[RT_LSCR] = CP(_lscr),
|
||||||
[RT_LTEX] = CP( NULL), [RT_LVLI] = CP( NULL), [RT_LVLN] = CP( NULL),
|
[RT_LTEX] = CP(NULL ),[RT_LVLI] = CP(NULL ),[RT_LVLN] = CP(NULL ),
|
||||||
[RT_LVSP] = CP( NULL), [RT_MATO] = CP( NULL), [RT_MATT] = CP( NULL),
|
[RT_LVSP] = CP(NULL ),[RT_MATO] = CP(NULL ),[RT_MATT] = CP(NULL ),
|
||||||
[RT_MESG] = CP( NULL), [RT_MGEF] = CP( NULL), [RT_MISC] = CP(_misc),
|
[RT_MESG] = CP(NULL ),[RT_MGEF] = CP(NULL ),[RT_MISC] = CP(_misc),
|
||||||
[RT_MOVT] = CP( NULL), [RT_MSTT] = CP(_mstt), [RT_MUSC] = CP( NULL),
|
[RT_MOVT] = CP(NULL ),[RT_MSTT] = CP(_mstt),[RT_MUSC] = CP(NULL ),
|
||||||
[RT_MUST] = CP( NULL), [RT_NAVI] = CP( NULL), [RT_NAVM] = CP(_navm),
|
[RT_MUST] = CP(NULL ),[RT_NAVI] = CP(NULL ),[RT_NAVM] = CP(_navm),
|
||||||
[RT_NOTE] = CP( NULL), [RT_NPC_] = CP(_npc_), [RT_OTFT] = CP( NULL),
|
[RT_NOTE] = CP(NULL ),[RT_NPC_] = CP(_npc_),[RT_OTFT] = CP(NULL ),
|
||||||
[RT_PACK] = CP( NULL), [RT_PERK] = CP(_perk), [RT_PGRE] = CP(_pgre),
|
[RT_PACK] = CP(NULL ),[RT_PERK] = CP(_perk),[RT_PGRE] = CP(_pgre),
|
||||||
[RT_PHZD] = CP(_phzd), [RT_PROJ] = CP( NULL), [RT_PWAT] = CP( NULL),
|
[RT_PHZD] = CP(_phzd),[RT_PROJ] = CP(NULL ),[RT_PWAT] = CP(NULL ),
|
||||||
[RT_QUST] = CP( NULL), [RT_RACE] = CP(_race), [RT_REFR] = CP(_refr),
|
[RT_QUST] = CP(NULL ),[RT_RACE] = CP(_race),[RT_REFR] = CP(_refr),
|
||||||
[RT_REGN] = CP(_regn), [RT_RELA] = CP(_rela), [RT_REVB] = CP( NULL),
|
[RT_REGN] = CP(_regn),[RT_RELA] = CP(_rela),[RT_REVB] = CP(NULL ),
|
||||||
[RT_RFCT] = CP( NULL), [RT_RGDL] = CP( NULL), [RT_SCEN] = CP( NULL),
|
[RT_RFCT] = CP(NULL ),[RT_RGDL] = CP(NULL ),[RT_SCEN] = CP(NULL ),
|
||||||
[RT_SCOL] = CP( NULL), [RT_SCPT] = CP( NULL), [RT_SCRL] = CP( NULL),
|
[RT_SCOL] = CP(NULL ),[RT_SCPT] = CP(NULL ),[RT_SCRL] = CP(NULL ),
|
||||||
[RT_SHOU] = CP(_shou), [RT_SLGM] = CP(_slgm), [RT_SMBN] = CP( NULL),
|
[RT_SHOU] = CP(_shou),[RT_SLGM] = CP(_slgm),[RT_SMBN] = CP(NULL ),
|
||||||
[RT_SMEN] = CP( NULL), [RT_SMQN] = CP( NULL), [RT_SNCT] = CP( NULL),
|
[RT_SMEN] = CP(NULL ),[RT_SMQN] = CP(NULL ),[RT_SNCT] = CP(NULL ),
|
||||||
[RT_SNDR] = CP( NULL), [RT_SOPM] = CP( NULL), [RT_SOUN] = CP( NULL),
|
[RT_SNDR] = CP(NULL ),[RT_SOPM] = CP(NULL ),[RT_SOUN] = CP(NULL ),
|
||||||
[RT_SPEL] = CP( NULL), [RT_SPGD] = CP( NULL), [RT_STAT] = CP(_stat),
|
[RT_SPEL] = CP(NULL ),[RT_SPGD] = CP(NULL ),[RT_STAT] = CP(_stat),
|
||||||
[RT_TACT] = CP(_tact), [RT_TES4] = CP(_tes4), [RT_TREE] = CP(_tree),
|
[RT_TACT] = CP(_tact),[RT_TES4] = CP(_tes4),[RT_TREE] = CP(_tree),
|
||||||
[RT_TXST] = CP( NULL), [RT_VTYP] = CP( NULL), [RT_WATR] = CP( NULL),
|
[RT_TXST] = CP(NULL ),[RT_VTYP] = CP(NULL ),[RT_WATR] = CP(NULL ),
|
||||||
[RT_WEAP] = CP(_weap), [RT_WOOP] = CP( NULL), [RT_WRLD] = CP(_wrld),
|
[RT_WEAP] = CP(_weap),[RT_WOOP] = CP(NULL ),[RT_WRLD] = CP(_wrld),
|
||||||
[RT_WTHR] = CP( NULL),
|
[RT_WTHR] = CP(NULL ),
|
||||||
};
|
};
|
||||||
|
|
||||||
// REFR flags depend on what its NAME field references
|
// REFR flags depend on what its NAME field references
|
||||||
@@ -631,48 +631,48 @@ rfs_inner _refr_slgm = REFR_GROUP2;
|
|||||||
rfs_inner _refr_weap = REFR_GROUP2;
|
rfs_inner _refr_weap = REFR_GROUP2;
|
||||||
|
|
||||||
rfs_inner *const rfs_refr[RT_HASH_SIZE] = {
|
rfs_inner *const rfs_refr[RT_HASH_SIZE] = {
|
||||||
[RT_AACT] = CP(NULL ), [RT_ACHR] = CP(NULL ), [RT_ACTI] = CP(_refr_acti),
|
[RT_AACT] = CP(NULL ),[RT_ACHR] = CP(NULL ),[RT_ACTI] = CP(_refr_acti),
|
||||||
[RT_ADDN] = CP(_refr_addn), [RT_ALCH] = CP(_refr_alch), [RT_AMMO] = CP(_refr_ammo),
|
[RT_ADDN] = CP(_refr_addn),[RT_ALCH] = CP(_refr_alch),[RT_AMMO] = CP(_refr_ammo),
|
||||||
[RT_ANIO] = CP(NULL ), [RT_APPA] = CP(NULL ), [RT_ARMA] = CP(NULL ),
|
[RT_ANIO] = CP(NULL ),[RT_APPA] = CP(NULL ),[RT_ARMA] = CP(NULL ),
|
||||||
[RT_ARMO] = CP(_refr_armo), [RT_ARTO] = CP(NULL ), [RT_ASPC] = CP(NULL ),
|
[RT_ARMO] = CP(_refr_armo),[RT_ARTO] = CP(NULL ),[RT_ASPC] = CP(NULL ),
|
||||||
[RT_ASTP] = CP(NULL ), [RT_AVIF] = CP(NULL ), [RT_BOOK] = CP(NULL ),
|
[RT_ASTP] = CP(NULL ),[RT_AVIF] = CP(NULL ),[RT_BOOK] = CP(NULL ),
|
||||||
[RT_BPTD] = CP(NULL ), [RT_CAMS] = CP(NULL ), [RT_CELL] = CP(NULL ),
|
[RT_BPTD] = CP(NULL ),[RT_CAMS] = CP(NULL ),[RT_CELL] = CP(NULL ),
|
||||||
[RT_CLAS] = CP(NULL ), [RT_CLDC] = CP(NULL ), [RT_CLFM] = CP(NULL ),
|
[RT_CLAS] = CP(NULL ),[RT_CLDC] = CP(NULL ),[RT_CLFM] = CP(NULL ),
|
||||||
[RT_CLMT] = CP(NULL ), [RT_COBJ] = CP(NULL ), [RT_COLL] = CP(NULL ),
|
[RT_CLMT] = CP(NULL ),[RT_COBJ] = CP(NULL ),[RT_COLL] = CP(NULL ),
|
||||||
[RT_CONT] = CP(_refr_cont), [RT_CPTH] = CP(NULL ), [RT_CSTY] = CP(NULL ),
|
[RT_CONT] = CP(_refr_cont),[RT_CPTH] = CP(NULL ),[RT_CSTY] = CP(NULL ),
|
||||||
[RT_DEBR] = CP(NULL ), [RT_DIAL] = CP(NULL ), [RT_DLBR] = CP(NULL ),
|
[RT_DEBR] = CP(NULL ),[RT_DIAL] = CP(NULL ),[RT_DLBR] = CP(NULL ),
|
||||||
[RT_DLVW] = CP(NULL ), [RT_DOBJ] = CP(NULL ), [RT_DOOR] = CP(_refr_door),
|
[RT_DLVW] = CP(NULL ),[RT_DOBJ] = CP(NULL ),[RT_DOOR] = CP(_refr_door),
|
||||||
[RT_DUAL] = CP(NULL ), [RT_ECZN] = CP(NULL ), [RT_EFSH] = CP(NULL ),
|
[RT_DUAL] = CP(NULL ),[RT_ECZN] = CP(NULL ),[RT_EFSH] = CP(NULL ),
|
||||||
[RT_ENCH] = CP(NULL ), [RT_EQUP] = CP(NULL ), [RT_EXPL] = CP(NULL ),
|
[RT_ENCH] = CP(NULL ),[RT_EQUP] = CP(NULL ),[RT_EXPL] = CP(NULL ),
|
||||||
[RT_EYES] = CP(NULL ), [RT_FACT] = CP(NULL ), [RT_FLOR] = CP(_refr_flor),
|
[RT_EYES] = CP(NULL ),[RT_FACT] = CP(NULL ),[RT_FLOR] = CP(_refr_flor),
|
||||||
[RT_FLST] = CP(NULL ), [RT_FSTP] = CP(NULL ), [RT_FSTS] = CP(NULL ),
|
[RT_FLST] = CP(NULL ),[RT_FSTP] = CP(NULL ),[RT_FSTS] = CP(NULL ),
|
||||||
[RT_FURN] = CP(NULL ), [RT_GLOB] = CP(NULL ), [RT_GMST] = CP(NULL ),
|
[RT_FURN] = CP(NULL ),[RT_GLOB] = CP(NULL ),[RT_GMST] = CP(NULL ),
|
||||||
[RT_GRAS] = CP(NULL ), [RT_GRUP] = CP(NULL ), [RT_HAIR] = CP(NULL ),
|
[RT_GRAS] = CP(NULL ),[RT_GRUP] = CP(NULL ),[RT_HAIR] = CP(NULL ),
|
||||||
[RT_HAZD] = CP(NULL ), [RT_HDPT] = CP(NULL ), [RT_IDLE] = CP(NULL ),
|
[RT_HAZD] = CP(NULL ),[RT_HDPT] = CP(NULL ),[RT_IDLE] = CP(NULL ),
|
||||||
[RT_IDLM] = CP(NULL ), [RT_IMAD] = CP(NULL ), [RT_IMGS] = CP(NULL ),
|
[RT_IDLM] = CP(NULL ),[RT_IMAD] = CP(NULL ),[RT_IMGS] = CP(NULL ),
|
||||||
[RT_INFO] = CP(NULL ), [RT_INGR] = CP(_refr_ingr), [RT_IPCT] = CP(NULL ),
|
[RT_INFO] = CP(NULL ),[RT_INGR] = CP(_refr_ingr),[RT_IPCT] = CP(NULL ),
|
||||||
[RT_IPDS] = CP(NULL ), [RT_KEYM] = CP(_refr_keym), [RT_KYWD] = CP(NULL ),
|
[RT_IPDS] = CP(NULL ),[RT_KEYM] = CP(_refr_keym),[RT_KYWD] = CP(NULL ),
|
||||||
[RT_LAND] = CP(NULL ), [RT_LCRT] = CP(NULL ), [RT_LCTN] = CP(NULL ),
|
[RT_LAND] = CP(NULL ),[RT_LCRT] = CP(NULL ),[RT_LCTN] = CP(NULL ),
|
||||||
[RT_LGTM] = CP(NULL ), [RT_LIGH] = CP(_refr_ligh), [RT_LSCR] = CP(NULL ),
|
[RT_LGTM] = CP(NULL ),[RT_LIGH] = CP(_refr_ligh),[RT_LSCR] = CP(NULL ),
|
||||||
[RT_LTEX] = CP(NULL ), [RT_LVLI] = CP(NULL ), [RT_LVLN] = CP(NULL ),
|
[RT_LTEX] = CP(NULL ),[RT_LVLI] = CP(NULL ),[RT_LVLN] = CP(NULL ),
|
||||||
[RT_LVSP] = CP(NULL ), [RT_MATO] = CP(NULL ), [RT_MATT] = CP(NULL ),
|
[RT_LVSP] = CP(NULL ),[RT_MATO] = CP(NULL ),[RT_MATT] = CP(NULL ),
|
||||||
[RT_MESG] = CP(NULL ), [RT_MGEF] = CP(NULL ), [RT_MISC] = CP(_refr_misc),
|
[RT_MESG] = CP(NULL ),[RT_MGEF] = CP(NULL ),[RT_MISC] = CP(_refr_misc),
|
||||||
[RT_MOVT] = CP(NULL ), [RT_MSTT] = CP(_refr_mstt), [RT_MUSC] = CP(NULL ),
|
[RT_MOVT] = CP(NULL ),[RT_MSTT] = CP(_refr_mstt),[RT_MUSC] = CP(NULL ),
|
||||||
[RT_MUST] = CP(NULL ), [RT_NAVI] = CP(NULL ), [RT_NAVM] = CP(NULL ),
|
[RT_MUST] = CP(NULL ),[RT_NAVI] = CP(NULL ),[RT_NAVM] = CP(NULL ),
|
||||||
[RT_NOTE] = CP(NULL ), [RT_NPC_] = CP(NULL ), [RT_OTFT] = CP(NULL ),
|
[RT_NOTE] = CP(NULL ),[RT_NPC_] = CP(NULL ),[RT_OTFT] = CP(NULL ),
|
||||||
[RT_PACK] = CP(NULL ), [RT_PERK] = CP(NULL ), [RT_PGRE] = CP(NULL ),
|
[RT_PACK] = CP(NULL ),[RT_PERK] = CP(NULL ),[RT_PGRE] = CP(NULL ),
|
||||||
[RT_PHZD] = CP(NULL ), [RT_PROJ] = CP(NULL ), [RT_PWAT] = CP(NULL ),
|
[RT_PHZD] = CP(NULL ),[RT_PROJ] = CP(NULL ),[RT_PWAT] = CP(NULL ),
|
||||||
[RT_QUST] = CP(NULL ), [RT_RACE] = CP(NULL ), [RT_REFR] = CP(NULL ),
|
[RT_QUST] = CP(NULL ),[RT_RACE] = CP(NULL ),[RT_REFR] = CP(NULL ),
|
||||||
[RT_REGN] = CP(NULL ), [RT_RELA] = CP(NULL ), [RT_REVB] = CP(NULL ),
|
[RT_REGN] = CP(NULL ),[RT_RELA] = CP(NULL ),[RT_REVB] = CP(NULL ),
|
||||||
[RT_RFCT] = CP(NULL ), [RT_RGDL] = CP(NULL ), [RT_SCEN] = CP(NULL ),
|
[RT_RFCT] = CP(NULL ),[RT_RGDL] = CP(NULL ),[RT_SCEN] = CP(NULL ),
|
||||||
[RT_SCOL] = CP(NULL ), [RT_SCPT] = CP(NULL ), [RT_SCRL] = CP(_refr_scrl),
|
[RT_SCOL] = CP(NULL ),[RT_SCPT] = CP(NULL ),[RT_SCRL] = CP(_refr_scrl),
|
||||||
[RT_SHOU] = CP(NULL ), [RT_SLGM] = CP(_refr_slgm), [RT_SMBN] = CP(NULL ),
|
[RT_SHOU] = CP(NULL ),[RT_SLGM] = CP(_refr_slgm),[RT_SMBN] = CP(NULL ),
|
||||||
[RT_SMEN] = CP(NULL ), [RT_SMQN] = CP(NULL ), [RT_SNCT] = CP(NULL ),
|
[RT_SMEN] = CP(NULL ),[RT_SMQN] = CP(NULL ),[RT_SNCT] = CP(NULL ),
|
||||||
[RT_SNDR] = CP(NULL ), [RT_SOPM] = CP(NULL ), [RT_SOUN] = CP(NULL ),
|
[RT_SNDR] = CP(NULL ),[RT_SOPM] = CP(NULL ),[RT_SOUN] = CP(NULL ),
|
||||||
[RT_SPEL] = CP(NULL ), [RT_SPGD] = CP(NULL ), [RT_STAT] = CP(_refr_stat),
|
[RT_SPEL] = CP(NULL ),[RT_SPGD] = CP(NULL ),[RT_STAT] = CP(_refr_stat),
|
||||||
[RT_TACT] = CP(NULL ), [RT_TES4] = CP(NULL ), [RT_TREE] = CP(_refr_tree),
|
[RT_TACT] = CP(NULL ),[RT_TES4] = CP(NULL ),[RT_TREE] = CP(_refr_tree),
|
||||||
[RT_TXST] = CP(NULL ), [RT_VTYP] = CP(NULL ), [RT_WATR] = CP(NULL ),
|
[RT_TXST] = CP(NULL ),[RT_VTYP] = CP(NULL ),[RT_WATR] = CP(NULL ),
|
||||||
[RT_WEAP] = CP(_refr_weap), [RT_WOOP] = CP(NULL ), [RT_WRLD] = CP(NULL ),
|
[RT_WEAP] = CP(_refr_weap),[RT_WOOP] = CP(NULL ),[RT_WRLD] = CP(NULL ),
|
||||||
[RT_WTHR] = CP(NULL ),
|
[RT_WTHR] = CP(NULL ),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,10 @@ void asserts(void) {
|
|||||||
assert(sizeof(Group) == 24); // Group struct incorrect size
|
assert(sizeof(Group) == 24); // Group struct incorrect size
|
||||||
assert(sizeof((Group) { 0 }.label) == 4); // Label union in group struct incorrect size
|
assert(sizeof((Group) { 0 }.label) == 4); // Label union in group struct incorrect size
|
||||||
assert(sizeof(Field) == 6); // Field struct incorrect size
|
assert(sizeof(Field) == 6); // Field struct incorrect size
|
||||||
assert(sizeof(uLongf) == sizeof(uint32_t)); // zlib compatability
|
|
||||||
|
// zlib compatability
|
||||||
|
assert(sizeof(uLongf) == sizeof(uint32_t));
|
||||||
|
assert(sizeof(Bytef) == sizeof(char));
|
||||||
}
|
}
|
||||||
|
|
||||||
void espr_walk(char *data, size_t size, struct walker_callbacks cb) {
|
void espr_walk(char *data, size_t size, struct walker_callbacks cb) {
|
||||||
@@ -124,7 +127,8 @@ void dc_size_cb(Node n, void *data, void **carry_out) {
|
|||||||
if (n.header.record->flags & COMPRESSED_FLAG) {
|
if (n.header.record->flags & COMPRESSED_FLAG) {
|
||||||
// Read decompressed size
|
// Read decompressed size
|
||||||
*dc_size += *((uint32_t *)n.data);
|
*dc_size += *((uint32_t *)n.data);
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
*dc_size += n.header.record->size;
|
*dc_size += n.header.record->size;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -379,7 +383,8 @@ void print_record_flags(Record *header) {
|
|||||||
// TODO
|
// TODO
|
||||||
// REFR requires FormID lookup
|
// REFR requires FormID lookup
|
||||||
flags = 0;
|
flags = 0;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
rfs_inner *const flag_lut = rfs[rt_hash(type)];
|
rfs_inner *const flag_lut = rfs[rt_hash(type)];
|
||||||
if (flag_lut) {
|
if (flag_lut) {
|
||||||
while (flags != 0) {
|
while (flags != 0) {
|
||||||
@@ -390,7 +395,8 @@ void print_record_flags(Record *header) {
|
|||||||
if (str) {
|
if (str) {
|
||||||
printf(" - %s\n", str);
|
printf(" - %s\n", str);
|
||||||
flags -= ((uint32_t)1) << highest;
|
flags -= ((uint32_t)1) << highest;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -433,6 +439,6 @@ Timestamp convert_ts(uint16_t ts) {
|
|||||||
const uint8_t month = ((hb - 1) % 12) + 1;
|
const uint8_t month = ((hb - 1) % 12) + 1;
|
||||||
const uint8_t year = ((hb - 1) / 12 + 3) % 10;
|
const uint8_t year = ((hb - 1) / 12 + 3) % 10;
|
||||||
|
|
||||||
return (Timestamp){ year, month, day };
|
return (Timestamp) { year, month, day };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,8 @@ int main() {
|
|||||||
}
|
}
|
||||||
clash = true;
|
clash = true;
|
||||||
break;
|
break;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
buf[index] = true;
|
buf[index] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -73,7 +74,8 @@ int main() {
|
|||||||
printf(" ");
|
printf(" ");
|
||||||
printf("RT_%s = %3u,", name, index);
|
printf("RT_%s = %3u,", name, index);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
printf("Seed not found. Max: %llu\n", max);
|
printf("Seed not found. Max: %llu\n", max);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user