@@ -444,6 +444,179 @@ struct GenericListData {
444444};
445445}
446446
447+ namespace tdb81 {
448+ struct REMethodDefinition ;
449+ struct REMethodImpl ;
450+ struct REField ;
451+ struct REFieldImpl ;
452+ struct REProperty ;
453+ struct RETypeImpl ;
454+ struct REPropertyImpl ;
455+ struct REParameterDef ;
456+ struct REModule ;
457+
458+ struct TDB {
459+ uint32_t magic;
460+ uint32_t version;
461+ uint32_t numTypes;
462+ uint32_t typesStartOfGenericsProbably; // I think this is the index of the start of the generics list in the types array (or start of something else)
463+
464+ uint32_t unk_int_tdb74;
465+
466+ uint32_t numMethods;
467+ uint32_t numFields;
468+ uint32_t numTypeImpl;
469+ uint32_t numFieldImpl;
470+ uint32_t numMethodImpl;
471+ uint32_t numPropertyImpl;
472+ uint32_t numProperties;
473+ uint32_t numEvents;
474+
475+ uint32_t numParams;
476+ uint32_t numAttributes;
477+ int32_t numInitData;
478+ uint32_t numAttributes2;
479+ uint32_t numInternStrings;
480+ uint32_t numModules;
481+ int32_t devEntry;
482+ int32_t appEntry;
483+
484+ uint32_t numStringPool;
485+ uint32_t numBytePool;
486+
487+ uint32_t padding;
488+
489+ sdk::REModule* modules;
490+ sdk::RETypeDefinition (*types)[93788 ];
491+ sdk::RETypeImpl (*typesImpl)[256 ];
492+ sdk::REMethodDefinition (*methods)[703558 ];
493+ sdk::REMethodImpl (*methodsImpl)[56756 ];
494+ sdk::REField (*fields)[1 ];
495+ sdk::REFieldImpl (*fieldsImpl)[1 ];
496+ sdk::REProperty (*properties)[256 ];
497+ sdk::REPropertyImpl (*propertiesImpl)[1 ];
498+ void * events;
499+ sdk::REParameterDef (*params)[10000 ];
500+ class ::REAttributeDef (*attributes)[2000 ];
501+ int32_t (*initData)[19890 ];
502+ void * unk;
503+ int32_t (*attributes2)[256 ];
504+ char (*stringPool)[1 ];
505+ uint8_t (*bytePool)[256 ];
506+ int32_t (*internStrings)[14154 ];
507+ };
508+
509+ static_assert (sizeof (TDB) == 240 );
510+
511+ struct REModule {
512+ uint32_t guid[4 ];
513+ int32_t unk1;
514+ uint32_t unk2;
515+ uint16_t major;
516+ uint16_t minor;
517+ uint16_t build;
518+ uint16_t revision;
519+ uint32_t flags;
520+ int32_t assembly_name_offset; // string
521+ int32_t location_offset; // string
522+ uint32_t unk3;
523+ uint32_t module_name_offset; // string
524+ uint32_t unk4;
525+ int32_t types_count;
526+ int32_t types_start;
527+ };
528+ static_assert (sizeof (REModule) == 0x40 );
529+
530+ #pragma pack(push, 4)
531+ struct REParameterDef {
532+ uint16_t attributes_id;
533+ uint16_t init_data_index;
534+ uint32_t name_offset : 30 ;
535+ uint32_t modifier : 2 ;
536+ uint32_t type_id : TYPE_INDEX_BITS;
537+ uint32_t flags : (32 - TYPE_INDEX_BITS);
538+ };
539+
540+ struct REMethodDefinition {
541+ uint32_t declaring_typeid : TYPE_INDEX_BITS;
542+ uint32_t params_lo : 13 ;
543+ uint32_t impl_id : 19 ;
544+ uint32_t params_hi : 13 ;
545+ int32_t encoded_offset;
546+ };
547+ static_assert (sizeof (REMethodDefinition) == 0xC );
548+
549+ struct REMethodImpl {
550+ uint16_t attributes_id;
551+ int16_t vtable_index;
552+ uint16_t flags;
553+ uint16_t impl_flags;
554+ uint32_t name_offset;
555+ };
556+
557+ struct RETypeImpl {
558+ int32_t name_offset; // 0x0
559+ int32_t namespace_offset; // 0x4
560+ int32_t field_size; // 0x8
561+ int32_t static_field_size; // 0xc
562+ uint64_t unk_pad : 33 ; // 0x10
563+ uint64_t num_member_fields : 24 ; // 0x10
564+ uint64_t unk_pad_2 : 7 ; // 0x10
565+ uint16_t num_member_methods; // 0x18
566+ int16_t num_native_vtable; // 0x1a
567+ int16_t interface_id; // 0x1c
568+ char pad_1e[0x12 ];
569+ };
570+ #if TDB_VER >= 71
571+ static_assert (sizeof (RETypeImpl) == 0x30 );
572+ static_assert (offsetof(RETypeImpl, num_member_methods) == 0x18 );
573+ #endif
574+
575+ struct REProperty {
576+ uint64_t impl_id : 20 ;
577+ uint64_t getter : 22 ;
578+ uint64_t setter : 22 ;
579+ };
580+
581+ struct REPropertyImpl {
582+ uint16_t flags;
583+ uint16_t attributes_id;
584+ int32_t name_offset;
585+ };
586+ #pragma pack(pop)
587+
588+ struct ParamList {
589+ uint16_t numParams; // 0x0000
590+ uint16_t invokeID; // 0x0002
591+ uint32_t returnType; // 0x0004
592+ uint32_t params[1 ]; // 0x0008
593+ };
594+
595+ struct REField {
596+ uint64_t declaring_typeid : TYPE_INDEX_BITS;
597+ uint64_t impl_id : TYPE_INDEX_BITS;
598+ uint64_t field_typeid : TYPE_INDEX_BITS;
599+ uint64_t init_data_hi : 6 ;
600+ uint64_t rest2 : 1 ;
601+ };
602+
603+ struct REFieldImpl {
604+ uint16_t attributes_id;
605+ uint16_t unk : 1 ;
606+ uint16_t flags : 15 ;
607+ uint32_t offset : 26 ;
608+ uint32_t init_data_lo : 6 ;
609+ uint32_t name_offset : 28 ;
610+ uint32_t init_data_mid : 4 ;
611+ };
612+
613+ struct GenericListData {
614+ uint32_t definition_typeid : TYPE_INDEX_BITS;
615+ uint32_t num : (32 - TYPE_INDEX_BITS);
616+ uint32_t types[1 ];
617+ };
618+ }
619+
447620namespace tdb74 {
448621struct REMethodDefinition ;
449622struct REMethodImpl ;
@@ -505,7 +678,6 @@ struct TDB {
505678 uint8_t (*bytePool)[256 ];
506679 int32_t (*internStrings)[14154 ];
507680};
508-
509681struct REModule {
510682 uint32_t guid[4 ];
511683 int32_t unk1;
@@ -1354,8 +1526,11 @@ struct TDB {
13541526#pragma pack(pop)
13551527}
13561528
1357- // TODO?
1358- struct REModule_ : public sdk ::tdb74::REModule {};
1529+ #if TDB_VER == 81
1530+ struct REModule_ : public sdk ::tdb81::REModule {};
1531+ #else
1532+ struct REModule_ : public sdk ::tdb74::REModule {};
1533+ #endif
13591534
13601535#if TDB_VER >= 84
13611536struct RETypeDB_ : public sdk ::tdb84::TDB {};
@@ -1371,6 +1546,19 @@ struct REParameterDef : public sdk::tdb84::REParameterDef {};
13711546struct GenericListData : public sdk ::tdb84::GenericListData {};
13721547using ParamList = sdk::tdb84::ParamList;
13731548
1549+ #elif TDB_VER >= 81
1550+ struct RETypeDB_ : public sdk ::tdb81::TDB {};
1551+ struct REMethodDefinition_ : public sdk ::tdb81::REMethodDefinition {};
1552+ struct REMethodImpl : public sdk ::tdb81::REMethodImpl {};
1553+ using REField_ = sdk::tdb81::REField;
1554+ struct REFieldImpl : public sdk ::tdb81::REFieldImpl {};
1555+ struct RETypeImpl : public sdk ::tdb81::RETypeImpl {};
1556+ struct REPropertyImpl : public sdk ::tdb81::REPropertyImpl {};
1557+ struct REProperty : public sdk ::tdb81::REProperty {};
1558+ struct REParameterDef : public sdk ::tdb81::REParameterDef {};
1559+ struct GenericListData : public sdk ::tdb81::GenericListData {};
1560+ using ParamList = sdk::tdb81::ParamList;
1561+
13741562#elif TDB_VER >= 74
13751563struct RETypeDB_ : public sdk ::tdb74::TDB {};
13761564
0 commit comments