From e3fd543178dca9da32cc892e72cecacaf6ab406b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Fri, 16 Oct 2020 13:38:35 +0200 Subject: [PATCH] ksys/gdt: Add Flag --- data/uking_functions.csv | 463 +++++++++++++------------ lib/sead | 2 +- src/KingSystem/CMakeLists.txt | 1 + src/KingSystem/GameData/CMakeLists.txt | 4 + src/KingSystem/GameData/gdtFlag.cpp | 151 ++++++++ src/KingSystem/GameData/gdtFlag.h | 384 ++++++++++++++++++++ 6 files changed, 775 insertions(+), 230 deletions(-) create mode 100644 src/KingSystem/GameData/CMakeLists.txt create mode 100644 src/KingSystem/GameData/gdtFlag.cpp create mode 100644 src/KingSystem/GameData/gdtFlag.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 510a5228..d372b65c 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -74562,7 +74562,7 @@ 0x0000007100df2c44,sub_7100DF2C44,64, 0x0000007100df2c84,sub_7100DF2C84,16, 0x0000007100df2c94,sub_7100DF2C94,16, -0x0000007100df2ca4,GameDataFlagBool::getRandomResetData,36, +0x0000007100df2ca4,GameDataFlagBool::getRandomResetData,36,_ZNK4ksys3gdt4FlagIbE18getRandomResetDataEv 0x0000007100df2cc8,sub_7100DF2CC8,16, 0x0000007100df2cd8,sub_7100DF2CD8,16, 0x0000007100df2ce8,sub_7100DF2CE8,12, @@ -74584,7 +74584,7 @@ 0x0000007100df2ecc,sub_7100DF2ECC,64, 0x0000007100df2f0c,sub_7100DF2F0C,16, 0x0000007100df2f1c,sub_7100DF2F1C,16, -0x0000007100df2f2c,sub_7100DF2F2C,32, +0x0000007100df2f2c,sub_7100DF2F2C,32,_ZNK4ksys3gdt4FlagIiE18getRandomResetDataEv 0x0000007100df2f4c,sub_7100DF2F4C,16, 0x0000007100df2f5c,sub_7100DF2F5C,16, 0x0000007100df2f6c,sub_7100DF2F6C,8, @@ -74606,7 +74606,7 @@ 0x0000007100df3180,sub_7100DF3180,64, 0x0000007100df31c0,sub_7100DF31C0,16, 0x0000007100df31d0,sub_7100DF31D0,16, -0x0000007100df31e0,sub_7100DF31E0,32, +0x0000007100df31e0,sub_7100DF31E0,32,_ZNK4ksys3gdt4FlagIfE18getRandomResetDataEv 0x0000007100df3200,sub_7100DF3200,16, 0x0000007100df3210,sub_7100DF3210,16, 0x0000007100df3220,sub_7100DF3220,8, @@ -74629,7 +74629,7 @@ 0x0000007100df369c,sub_7100DF369C,64, 0x0000007100df36dc,sub_7100DF36DC,16, 0x0000007100df36ec,sub_7100DF36EC,16, -0x0000007100df36fc,sub_7100DF36FC,32, +0x0000007100df36fc,sub_7100DF36FC,32,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE18getRandomResetDataEv 0x0000007100df371c,sub_7100DF371C,16, 0x0000007100df372c,sub_7100DF372C,16, 0x0000007100df373c,_ZN4sead15FixedSafeStringILi57EEaSERKNS_14SafeStringBaseIcEE,308, @@ -74652,7 +74652,7 @@ 0x0000007100df41a8,sub_7100DF41A8,64, 0x0000007100df41e8,sub_7100DF41E8,16, 0x0000007100df41f8,sub_7100DF41F8,16, -0x0000007100df4208,sub_7100DF4208,32, +0x0000007100df4208,sub_7100DF4208,32,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE18getRandomResetDataEv 0x0000007100df4228,sub_7100DF4228,16, 0x0000007100df4238,sub_7100DF4238,16, 0x0000007100df4248,_ZN4sead15FixedSafeStringILi41EEaSERKNS_14SafeStringBaseIcEE,308, @@ -74675,7 +74675,7 @@ 0x0000007100df4cb8,sub_7100DF4CB8,64, 0x0000007100df4cf8,sub_7100DF4CF8,16, 0x0000007100df4d08,sub_7100DF4D08,16, -0x0000007100df4d18,sub_7100DF4D18,32, +0x0000007100df4d18,sub_7100DF4D18,32,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE18getRandomResetDataEv 0x0000007100df4d38,sub_7100DF4D38,16, 0x0000007100df4d48,sub_7100DF4D48,16, 0x0000007100df4d58,_ZN4sead15FixedSafeStringILi384EEaSERKNS_14SafeStringBaseIcEE,308, @@ -74697,7 +74697,7 @@ 0x0000007100df5578,sub_7100DF5578,64, 0x0000007100df55b8,sub_7100DF55B8,16, 0x0000007100df55c8,sub_7100DF55C8,16, -0x0000007100df55d8,sub_7100DF55D8,32, +0x0000007100df55d8,sub_7100DF55D8,32,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE18getRandomResetDataEv 0x0000007100df55f8,sub_7100DF55F8,16, 0x0000007100df5608,sub_7100DF5608,16, 0x0000007100df5618,sub_7100DF5618,8, @@ -74719,7 +74719,7 @@ 0x0000007100df58a4,sub_7100DF58A4,64, 0x0000007100df58e4,sub_7100DF58E4,16, 0x0000007100df58f4,sub_7100DF58F4,16, -0x0000007100df5904,sub_7100DF5904,32, +0x0000007100df5904,sub_7100DF5904,32,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE18getRandomResetDataEv 0x0000007100df5924,sub_7100DF5924,16, 0x0000007100df5934,sub_7100DF5934,16, 0x0000007100df5944,sub_7100DF5944,12, @@ -74741,7 +74741,7 @@ 0x0000007100df5c1c,sub_7100DF5C1C,64, 0x0000007100df5c5c,sub_7100DF5C5C,16, 0x0000007100df5c6c,sub_7100DF5C6C,16, -0x0000007100df5c7c,sub_7100DF5C7C,32, +0x0000007100df5c7c,sub_7100DF5C7C,32,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE18getRandomResetDataEv 0x0000007100df5c9c,sub_7100DF5C9C,16, 0x0000007100df5cac,sub_7100DF5CAC,16, 0x0000007100df5cbc,sub_7100DF5CBC,12, @@ -74766,226 +74766,231 @@ 0x0000007100df6bac,ResourceBgdata::doCreate,32556, 0x0000007100dfead8,GameDataFlag::DebugData::load,308, 0x0000007100dfec0c,GameDataFlag::Properties::ctor,256, -0x0000007100dfed0c,GameDataFlagBool::m0,20, -0x0000007100dfed20,GameDataFlagBool::m1,52, -0x0000007100dfed54,GameDataFlagBool::getHash,8, -0x0000007100dfed5c,GameDataFlagBool::setHash,8, -0x0000007100dfed64,GameDataFlagBool::m4,8, -0x0000007100dfed6c,GameDataFlagBool::m5,24, -0x0000007100dfed84,GameDataFlagBool::getFlags,8, -0x0000007100dfed8c,GameDataFlagBool::m7,8, -0x0000007100dfed94,GameDataFlagBool::resetToInitial,88, -0x0000007100dfedec,GameDataFlagBool::valueEqualsInitial,76, -0x0000007100dfee38,GameDataFlagBool::m10,60, -0x0000007100dfee74,GameDataFlagBool::m11,64, -0x0000007100dfeeb4,GameDataFlagBool::m12,24, -0x0000007100dfeecc,GameDataFlagBool::m13,24, -0x0000007100dfeee4,GameDataFlagBool::m15,8, -0x0000007100dfeeec,GameDataFlagBool::m16,12, -0x0000007100dfeef8,GameDataFlagBool::getValue,12, -0x0000007100dfef04,GameDataFlagBool::m18,8, -0x0000007100dfef0c,GameDataFlagBool::m19,8, -0x0000007100dfef14,GameDataFlagBool::m20,52, -0x0000007100dfef48,GameDataFlagBool::m21,88, -0x0000007100dfefa0,GameDataFlagBool::m22,8, -0x0000007100dfefa8,sub_7100DFEFA8,20, -0x0000007100dfefbc,sub_7100DFEFBC,52, -0x0000007100dfeff0,sub_7100DFEFF0,8, -0x0000007100dfeff8,sub_7100DFEFF8,8, -0x0000007100dff000,sub_7100DFF000,8, -0x0000007100dff008,sub_7100DFF008,24, -0x0000007100dff020,sub_7100DFF020,8, -0x0000007100dff028,sub_7100DFF028,8, -0x0000007100dff030,sub_7100DFF030,48, -0x0000007100dff060,sub_7100DFF060,68, -0x0000007100dff0a4,sub_7100DFF0A4,60, -0x0000007100dff0e0,sub_7100DFF0E0,64, -0x0000007100dff120,sub_7100DFF120,24, -0x0000007100dff138,sub_7100DFF138,24, -0x0000007100dff150,sub_7100DFF150,8, -0x0000007100dff158,sub_7100DFF158,28, -0x0000007100dff174,sub_7100DFF174,8, -0x0000007100dff17c,sub_7100DFF17C,8, -0x0000007100dff184,sub_7100DFF184,8, -0x0000007100dff18c,sub_7100DFF18C,48, -0x0000007100dff1bc,sub_7100DFF1BC,136, -0x0000007100dff244,sub_7100DFF244,8, -0x0000007100dff24c,sub_7100DFF24C,20, -0x0000007100dff260,sub_7100DFF260,52, -0x0000007100dff294,sub_7100DFF294,8, -0x0000007100dff29c,sub_7100DFF29C,8, -0x0000007100dff2a4,sub_7100DFF2A4,8, -0x0000007100dff2ac,sub_7100DFF2AC,24, -0x0000007100dff2c4,sub_7100DFF2C4,8, -0x0000007100dff2cc,sub_7100DFF2CC,8, -0x0000007100dff2d4,sub_7100DFF2D4,48, -0x0000007100dff304,sub_7100DFF304,76, -0x0000007100dff350,sub_7100DFF350,60, -0x0000007100dff38c,sub_7100DFF38C,64, -0x0000007100dff3cc,sub_7100DFF3CC,24, -0x0000007100dff3e4,sub_7100DFF3E4,24, -0x0000007100dff3fc,sub_7100DFF3FC,8, -0x0000007100dff404,sub_7100DFF404,28, -0x0000007100dff420,sub_7100DFF420,8, -0x0000007100dff428,sub_7100DFF428,8, -0x0000007100dff430,sub_7100DFF430,8, -0x0000007100dff438,sub_7100DFF438,48, -0x0000007100dff468,sub_7100DFF468,136, -0x0000007100dff4f0,sub_7100DFF4F0,8, -0x0000007100dff4f8,sub_7100DFF4F8,20, -0x0000007100dff50c,sub_7100DFF50C,52, -0x0000007100dff540,sub_7100DFF540,8, -0x0000007100dff548,sub_7100DFF548,8, -0x0000007100dff550,sub_7100DFF550,8, -0x0000007100dff558,sub_7100DFF558,24, -0x0000007100dff570,sub_7100DFF570,8, -0x0000007100dff578,sub_7100DFF578,8, -0x0000007100dff580,sub_7100DFF580,236, -0x0000007100dff66c,sub_7100DFF66C,500, -0x0000007100dff860,sub_7100DFF860,60, -0x0000007100dff89c,sub_7100DFF89C,64, -0x0000007100dff8dc,sub_7100DFF8DC,24, -0x0000007100dff8f4,sub_7100DFF8F4,24, -0x0000007100dff90c,sub_7100DFF90C,8, -0x0000007100dff914,sub_7100DFF914,8, -0x0000007100dff91c,_ZN4sead15FixedSafeStringILi262EEaSERKNS_14SafeStringBaseIcEE,308, -0x0000007100dffa50,sub_7100DFFA50,8, -0x0000007100dffa58,sub_7100DFFA58,8, -0x0000007100dffa60,sub_7100DFFA60,220, -0x0000007100dffb3c,sub_7100DFFB3C,1184, -0x0000007100dfffdc,sub_7100DFFFDC,8, -0x0000007100e00254,sub_7100E00254,20, -0x0000007100e00268,sub_7100E00268,52, -0x0000007100e0029c,sub_7100E0029C,8, -0x0000007100e002a4,sub_7100E002A4,8, -0x0000007100e002ac,sub_7100E002AC,8, -0x0000007100e002b4,sub_7100E002B4,24, -0x0000007100e002cc,sub_7100E002CC,8, -0x0000007100e002d4,sub_7100E002D4,8, -0x0000007100e002dc,sub_7100E002DC,236, -0x0000007100e003c8,sub_7100E003C8,500, -0x0000007100e005bc,sub_7100E005BC,60, -0x0000007100e005f8,sub_7100E005F8,64, -0x0000007100e00638,sub_7100E00638,24, -0x0000007100e00650,sub_7100E00650,24, -0x0000007100e00668,sub_7100E00668,8, -0x0000007100e00670,sub_7100E00670,8, -0x0000007100e00678,_ZN4sead15FixedSafeStringILi73EEaSERKNS_14SafeStringBaseIcEE,308, -0x0000007100e007ac,sub_7100E007AC,8, -0x0000007100e007b4,sub_7100E007B4,8, -0x0000007100e007bc,sub_7100E007BC,220, -0x0000007100e00898,sub_7100E00898,1188, -0x0000007100e00d3c,sub_7100E00D3C,8, -0x0000007100e00fb4,sub_7100E00FB4,20, -0x0000007100e00fc8,sub_7100E00FC8,52, -0x0000007100e00ffc,sub_7100E00FFC,8, -0x0000007100e01004,sub_7100E01004,8, -0x0000007100e0100c,sub_7100E0100C,8, -0x0000007100e01014,sub_7100E01014,24, -0x0000007100e0102c,sub_7100E0102C,8, -0x0000007100e01034,sub_7100E01034,8, -0x0000007100e0103c,_ZN4sead15FixedSafeStringILi15EEaSERKNS_14SafeStringBaseIcEE,236, -0x0000007100e01128,_ZN3agl3utl12INamedObjMgr5Group5resetERKN4sead14SafeStringBaseIcEE,500, -0x0000007100e0131c,sub_7100E0131C,60, -0x0000007100e01358,sub_7100E01358,64, -0x0000007100e01398,sub_7100E01398,24, -0x0000007100e013b0,_ZN4gsys7ModelNW19getLocalLightMapObjEv,24, -0x0000007100e013c8,sub_7100E013C8,8, -0x0000007100e013d0,sub_7100E013D0,8, -0x0000007100e013d8,_ZN4sead19FixedSafeStringBaseIcLi15EEaSERKNS_14SafeStringBaseIcEE,308, -0x0000007100e0150c,sub_7100E0150C,8, -0x0000007100e01514,sub_7100E01514,8, -0x0000007100e0151c,sub_7100E0151C,228, -0x0000007100e01600,sub_7100E01600,1184, -0x0000007100e01aa0,sub_7100E01AA0,8, -0x0000007100e01d18,sub_7100E01D18,20, -0x0000007100e01d2c,sub_7100E01D2C,52, -0x0000007100e01d60,sub_7100E01D60,8, -0x0000007100e01d68,sub_7100E01D68,8, -0x0000007100e01d70,sub_7100E01D70,8, -0x0000007100e01d78,sub_7100E01D78,24, -0x0000007100e01d90,sub_7100E01D90,8, -0x0000007100e01d98,sub_7100E01D98,8, -0x0000007100e01da0,sub_7100E01DA0,56, -0x0000007100e01dd8,sub_7100E01DD8,88, -0x0000007100e01e30,sub_7100E01E30,60, -0x0000007100e01e6c,sub_7100E01E6C,64, -0x0000007100e01eac,sub_7100E01EAC,24, -0x0000007100e01ec4,_ZNK4gsys7ModelNW19getLocalLightMapObjEv,24, -0x0000007100e01edc,sub_7100E01EDC,8, -0x0000007100e01ee4,sub_7100E01EE4,52, -0x0000007100e01f18,sub_7100E01F18,8, -0x0000007100e01f20,sub_7100E01F20,8, -0x0000007100e01f28,sub_7100E01F28,8, -0x0000007100e01f30,sub_7100E01F30,64, -0x0000007100e01f70,sub_7100E01F70,192, -0x0000007100e02030,sub_7100E02030,8, -0x0000007100e02038,sub_7100E02038,20, -0x0000007100e0204c,sub_7100E0204C,52, -0x0000007100e02080,sub_7100E02080,8, -0x0000007100e02088,sub_7100E02088,8, -0x0000007100e02090,sub_7100E02090,8, -0x0000007100e02098,sub_7100E02098,24, -0x0000007100e020b0,sub_7100E020B0,8, -0x0000007100e020b8,sub_7100E020B8,8, -0x0000007100e020c0,sub_7100E020C0,64, -0x0000007100e02100,sub_7100E02100,108, -0x0000007100e0216c,sub_7100E0216C,60, -0x0000007100e021a8,sub_7100E021A8,64, -0x0000007100e021e8,sub_7100E021E8,24, -0x0000007100e02200,_ZNK4gsys13LightProbeMgr11getSHDataIdEv,24, -0x0000007100e02218,sub_7100E02218,8, -0x0000007100e02220,sub_7100E02220,76, -0x0000007100e0226c,sub_7100E0226C,12, -0x0000007100e02278,sub_7100E02278,8, -0x0000007100e02280,sub_7100E02280,8, -0x0000007100e02288,sub_7100E02288,84, -0x0000007100e022dc,sub_7100E022DC,232, -0x0000007100e023c4,sub_7100E023C4,8, -0x0000007100e023cc,sub_7100E023CC,20, -0x0000007100e023e0,sub_7100E023E0,52, -0x0000007100e02414,sub_7100E02414,8, -0x0000007100e0241c,sub_7100E0241C,8, -0x0000007100e02424,sub_7100E02424,8, -0x0000007100e0242c,sub_7100E0242C,24, -0x0000007100e02444,sub_7100E02444,8, -0x0000007100e0244c,sub_7100E0244C,8, -0x0000007100e02454,sub_7100E02454,72, -0x0000007100e0249c,sub_7100E0249C,112, -0x0000007100e0250c,sub_7100E0250C,60, -0x0000007100e02548,sub_7100E02548,64, -0x0000007100e02588,sub_7100E02588,24, -0x0000007100e025a0,_ZNK2nn3atk6detail5Voice15GetPlayPositionEv,24, -0x0000007100e025b8,sub_7100E025B8,8, -0x0000007100e025c0,sub_7100E025C0,100, -0x0000007100e02624,sub_7100E02624,12, -0x0000007100e02630,sub_7100E02630,8, -0x0000007100e02638,sub_7100E02638,8, -0x0000007100e02640,sub_7100E02640,96, -0x0000007100e026a0,sub_7100E026A0,272, -0x0000007100e027b0,sub_7100E027B0,8, -0x0000007100e027b8,somethingGameDataFlagOffset9,8, -0x0000007100e027c0,nullsub_3864,4, -0x0000007100e027c4,GameDataFlag::setIsProgramReadable,28, -0x0000007100e027e0,GameDataFlag::isProgramReadable,12, -0x0000007100e027ec,GameDataFlag::setIsProgramWritable,32, -0x0000007100e0280c,GameDataFlag::isProgramWritable,12, -0x0000007100e02818,GameDataFlag::setIsSave,32, -0x0000007100e02838,GameDataFlag::isSave,12, -0x0000007100e02844,GameDataFlag::setIsOneTrigger,32, -0x0000007100e02864,GameDataFlag::isOneTrigger,12, -0x0000007100e02870,GameDataFlag::setIsEventAssociated,32, -0x0000007100e02890,GameDataFlag::isEventAssociated,12, -0x0000007100e0289c,GameDataFlag::setResetType,16, -0x0000007100e028ac,GameDataFlag::getResetType,12, -0x0000007100e02954,sub_7100E02954,60, -0x0000007100e02990,sub_7100E02990,60, -0x0000007100e029cc,sub_7100E029CC,8, -0x0000007100e029d4,sub_7100E029D4,108, -0x0000007100e02a40,sub_7100E02A40,156, -0x0000007100e02adc,sub_7100E02ADC,204, -0x0000007100e02ba8,GameDataFlag::x,68, -0x0000007100e02c44,GameDataFlag::x_0,80, +0x0000007100dfed0c,GameDataFlagBool::m0,20,_ZN4ksys3gdt4FlagIbED2Ev +0x0000007100dfed20,GameDataFlagBool::m1,52,_ZN4ksys3gdt4FlagIbED0Ev +0x0000007100dfed54,GameDataFlagBool::getHash,8,_ZNK4ksys3gdt4FlagIbE7getHashEv +0x0000007100dfed5c,GameDataFlagBool::setHash,8,_ZN4ksys3gdt4FlagIbE7setHashEj +0x0000007100dfed64,GameDataFlagBool::m4,8,_ZNK4ksys3gdt4FlagIbE7getTypeEv +0x0000007100dfed6c,GameDataFlagBool::m5,24,_ZN4ksys3gdt4FlagIbE7setTypeENS0_8FlagTypeE +0x0000007100dfed84,GameDataFlagBool::getFlags,8,_ZNK4ksys3gdt4FlagIbE13getPropertiesEv +0x0000007100dfed8c,GameDataFlagBool::m7,8,_ZN4ksys3gdt4FlagIbE13setPropertiesERKNS0_14FlagPropertiesE +0x0000007100dfed94,GameDataFlagBool::resetToInitial,88,_ZN4ksys3gdt4FlagIbE19resetToInitialValueEv +0x0000007100dfedec,GameDataFlagBool::valueEqualsInitial,76,_ZNK4ksys3gdt4FlagIbE14isInitialValueEv +0x0000007100dfee38,GameDataFlagBool::m10,60,_ZNK4ksys3gdt4FlagIbE11getCategoryEv +0x0000007100dfee74,GameDataFlagBool::m11,64,_ZN4ksys3gdt4FlagIbE11setCategoryEj +0x0000007100dfeeb4,GameDataFlagBool::m12,24,_ZNK4ksys3gdt4FlagIbE7getNameEv +0x0000007100dfeecc,GameDataFlagBool::m13,24,_ZNK4ksys3gdt4FlagIbE12getDeleteRevEv +0x0000007100dfeee4,GameDataFlagBool::m15,8,_ZNK4ksys3gdt4FlagIbE9getConfigEv +0x0000007100dfeeec,GameDataFlagBool::m16,12,_ZN4ksys3gdt4FlagIbE9setConfigERKNS0_10FlagConfigIbEE +0x0000007100dfeef8,GameDataFlagBool::getValue,12,_ZNK4ksys3gdt4FlagIbE8getValueEv +0x0000007100dfef04,GameDataFlagBool::m18,8,_ZN4ksys3gdt4FlagIbE11getValueRefEv +0x0000007100dfef0c,GameDataFlagBool::m19,8,_ZNK4ksys3gdt4FlagIbE11getValueRefEv +0x0000007100dfef14,GameDataFlagBool::m20,52,_ZNK4ksys3gdt4FlagIbE8hasValueERKb +0x0000007100dfef48,GameDataFlagBool::m21,88,_ZN4ksys3gdt4FlagIbE8setValueEb +0x0000007100dfefa0,GameDataFlagBool::m22,8,_ZNK4ksys3gdt4FlagIbE12getDebugDataEv +0x0000007100dfefa8,sub_7100DFEFA8,20,_ZN4ksys3gdt4FlagIiED2Ev +0x0000007100dfefbc,sub_7100DFEFBC,52,_ZN4ksys3gdt4FlagIiED0Ev +0x0000007100dfeff0,sub_7100DFEFF0,8,_ZNK4ksys3gdt4FlagIiE7getHashEv +0x0000007100dfeff8,sub_7100DFEFF8,8,_ZN4ksys3gdt4FlagIiE7setHashEj +0x0000007100dff000,sub_7100DFF000,8,_ZNK4ksys3gdt4FlagIiE7getTypeEv +0x0000007100dff008,sub_7100DFF008,24,_ZN4ksys3gdt4FlagIiE7setTypeENS0_8FlagTypeE +0x0000007100dff020,sub_7100DFF020,8,_ZNK4ksys3gdt4FlagIiE13getPropertiesEv +0x0000007100dff028,sub_7100DFF028,8,_ZN4ksys3gdt4FlagIiE13setPropertiesERKNS0_14FlagPropertiesE +0x0000007100dff030,sub_7100DFF030,48,_ZN4ksys3gdt4FlagIiE19resetToInitialValueEv +0x0000007100dff060,sub_7100DFF060,68,_ZNK4ksys3gdt4FlagIiE14isInitialValueEv +0x0000007100dff0a4,sub_7100DFF0A4,60,_ZNK4ksys3gdt4FlagIiE11getCategoryEv +0x0000007100dff0e0,sub_7100DFF0E0,64,_ZN4ksys3gdt4FlagIiE11setCategoryEj +0x0000007100dff120,sub_7100DFF120,24,_ZNK4ksys3gdt4FlagIiE7getNameEv +0x0000007100dff138,sub_7100DFF138,24,_ZNK4ksys3gdt4FlagIiE12getDeleteRevEv +0x0000007100dff150,sub_7100DFF150,8,_ZNK4ksys3gdt4FlagIiE9getConfigEv +0x0000007100dff158,sub_7100DFF158,28,_ZN4ksys3gdt4FlagIiE9setConfigERKNS0_10FlagConfigIiEE +0x0000007100dff174,sub_7100DFF174,8,_ZNK4ksys3gdt4FlagIiE8getValueEv +0x0000007100dff17c,sub_7100DFF17C,8,_ZN4ksys3gdt4FlagIiE11getValueRefEv +0x0000007100dff184,sub_7100DFF184,8,_ZNK4ksys3gdt4FlagIiE11getValueRefEv +0x0000007100dff18c,sub_7100DFF18C,48,_ZNK4ksys3gdt4FlagIiE8hasValueERKi +0x0000007100dff1bc,sub_7100DFF1BC,136,_ZN4ksys3gdt4FlagIiE8setValueEi +0x0000007100dff244,sub_7100DFF244,8,_ZNK4ksys3gdt4FlagIiE12getDebugDataEv +0x0000007100dff24c,sub_7100DFF24C,20,_ZN4ksys3gdt4FlagIfED2Ev +0x0000007100dff260,sub_7100DFF260,52,_ZN4ksys3gdt4FlagIfED0Ev +0x0000007100dff294,sub_7100DFF294,8,_ZNK4ksys3gdt4FlagIfE7getHashEv +0x0000007100dff29c,sub_7100DFF29C,8,_ZN4ksys3gdt4FlagIfE7setHashEj +0x0000007100dff2a4,sub_7100DFF2A4,8,_ZNK4ksys3gdt4FlagIfE7getTypeEv +0x0000007100dff2ac,sub_7100DFF2AC,24,_ZN4ksys3gdt4FlagIfE7setTypeENS0_8FlagTypeE +0x0000007100dff2c4,sub_7100DFF2C4,8,_ZNK4ksys3gdt4FlagIfE13getPropertiesEv +0x0000007100dff2cc,sub_7100DFF2CC,8,_ZN4ksys3gdt4FlagIfE13setPropertiesERKNS0_14FlagPropertiesE +0x0000007100dff2d4,sub_7100DFF2D4,48,_ZN4ksys3gdt4FlagIfE19resetToInitialValueEv +0x0000007100dff304,sub_7100DFF304,76,_ZNK4ksys3gdt4FlagIfE14isInitialValueEv +0x0000007100dff350,sub_7100DFF350,60,_ZNK4ksys3gdt4FlagIfE11getCategoryEv +0x0000007100dff38c,sub_7100DFF38C,64,_ZN4ksys3gdt4FlagIfE11setCategoryEj +0x0000007100dff3cc,sub_7100DFF3CC,24,_ZNK4ksys3gdt4FlagIfE7getNameEv +0x0000007100dff3e4,sub_7100DFF3E4,24,_ZNK4ksys3gdt4FlagIfE12getDeleteRevEv +0x0000007100dff3fc,sub_7100DFF3FC,8,_ZNK4ksys3gdt4FlagIfE9getConfigEv +0x0000007100dff404,sub_7100DFF404,28,_ZN4ksys3gdt4FlagIfE9setConfigERKNS0_10FlagConfigIfEE +0x0000007100dff420,sub_7100DFF420,8,_ZNK4ksys3gdt4FlagIfE8getValueEv +0x0000007100dff428,sub_7100DFF428,8,_ZN4ksys3gdt4FlagIfE11getValueRefEv +0x0000007100dff430,sub_7100DFF430,8,_ZNK4ksys3gdt4FlagIfE11getValueRefEv +0x0000007100dff438,sub_7100DFF438,48,_ZNK4ksys3gdt4FlagIfE8hasValueERKf +0x0000007100dff468,sub_7100DFF468,136,_ZN4ksys3gdt4FlagIfE8setValueEf +0x0000007100dff4f0,sub_7100DFF4F0,8,_ZNK4ksys3gdt4FlagIfE12getDebugDataEv +0x0000007100dff4f8,sub_7100DFF4F8,20,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEED2Ev +0x0000007100dff50c,sub_7100DFF50C,52,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEED0Ev +0x0000007100dff540,sub_7100DFF540,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE7getHashEv +0x0000007100dff548,sub_7100DFF548,8,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE7setHashEj +0x0000007100dff550,sub_7100DFF550,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE7getTypeEv +0x0000007100dff558,sub_7100DFF558,24,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE7setTypeENS0_8FlagTypeE +0x0000007100dff570,sub_7100DFF570,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE13getPropertiesEv +0x0000007100dff578,sub_7100DFF578,8,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE13setPropertiesERKNS0_14FlagPropertiesE +0x0000007100dff580,sub_7100DFF580,236,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE19resetToInitialValueEv +0x0000007100dff66c,sub_7100DFF66C,500,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE14isInitialValueEv +0x0000007100dff860,sub_7100DFF860,60,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE11getCategoryEv +0x0000007100dff89c,sub_7100DFF89C,64,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE11setCategoryEj +0x0000007100dff8dc,sub_7100DFF8DC,24,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE7getNameEv +0x0000007100dff8f4,sub_7100DFF8F4,24,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE12getDeleteRevEv +0x0000007100dff90c,sub_7100DFF90C,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE9getConfigEv +0x0000007100dff914,sub_7100DFF914,8,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE9setConfigERKNS0_10FlagConfigIS4_EE +0x0000007100dff91c,_ZN4sead15FixedSafeStringILi262EEaSERKNS_14SafeStringBaseIcEE,308,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE8getValueEv +0x0000007100dffa50,sub_7100DFFA50,8,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE11getValueRefEv +0x0000007100dffa58,sub_7100DFFA58,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE11getValueRefEv +0x0000007100dffa60,sub_7100DFFA60,220,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE8hasValueERKS4_ +0x0000007100dffb3c,sub_7100DFFB3C,1184,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE8setValueES4_ +0x0000007100dfffdc,sub_7100DFFFDC,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi32EEEE12getDebugDataEv +0x0000007100DFFFE4,_ZN4ksys3gdt10FlagConfigIN4sead15FixedSafeStringILi32EEEEaSERKS5_,0x270,_ZN4ksys3gdt10FlagConfigIN4sead15FixedSafeStringILi32EEEEaSERKS5_ +0x0000007100e00254,sub_7100E00254,20,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEED2Ev +0x0000007100e00268,sub_7100E00268,52,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEED0Ev +0x0000007100e0029c,sub_7100E0029C,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE7getHashEv +0x0000007100e002a4,sub_7100E002A4,8,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE7setHashEj +0x0000007100e002ac,sub_7100E002AC,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE7getTypeEv +0x0000007100e002b4,sub_7100E002B4,24,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE7setTypeENS0_8FlagTypeE +0x0000007100e002cc,sub_7100E002CC,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE13getPropertiesEv +0x0000007100e002d4,sub_7100E002D4,8,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE13setPropertiesERKNS0_14FlagPropertiesE +0x0000007100e002dc,sub_7100E002DC,236,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE19resetToInitialValueEv +0x0000007100e003c8,sub_7100E003C8,500,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE14isInitialValueEv +0x0000007100e005bc,sub_7100E005BC,60,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE11getCategoryEv +0x0000007100e005f8,sub_7100E005F8,64,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE11setCategoryEj +0x0000007100e00638,sub_7100E00638,24,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE7getNameEv +0x0000007100e00650,sub_7100E00650,24,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE12getDeleteRevEv +0x0000007100e00668,sub_7100E00668,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE9getConfigEv +0x0000007100e00670,sub_7100E00670,8,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE9setConfigERKNS0_10FlagConfigIS4_EE +0x0000007100e00678,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE8getValueEv,308,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE8getValueEv +0x0000007100e007ac,sub_7100E007AC,8,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE11getValueRefEv +0x0000007100e007b4,sub_7100E007B4,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE11getValueRefEv +0x0000007100e007bc,sub_7100E007BC,220,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE8hasValueERKS4_ +0x0000007100e00898,sub_7100E00898,1188,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE8setValueES4_ +0x0000007100e00d3c,sub_7100E00D3C,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi64EEEE12getDebugDataEv +0x0000007100E00D44,_ZN4ksys3gdt10FlagConfigIN4sead15FixedSafeStringILi64EEEEaSERKS5_,0x270,_ZN4ksys3gdt10FlagConfigIN4sead15FixedSafeStringILi64EEEEaSERKS5_ +0x0000007100e00fb4,sub_7100E00FB4,20,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEED2Ev +0x0000007100e00fc8,sub_7100E00FC8,52,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEED0Ev +0x0000007100e00ffc,sub_7100E00FFC,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE7getHashEv +0x0000007100e01004,sub_7100E01004,8,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE7setHashEj +0x0000007100e0100c,sub_7100E0100C,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE7getTypeEv +0x0000007100e01014,sub_7100E01014,24,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE7setTypeENS0_8FlagTypeE +0x0000007100e0102c,sub_7100E0102C,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE13getPropertiesEv +0x0000007100e01034,sub_7100E01034,8,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE13setPropertiesERKNS0_14FlagPropertiesE +0x0000007100e0103c,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE19resetToInitialValueEv,236,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE19resetToInitialValueEv +0x0000007100e01128,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE14isInitialValueEv,500,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE14isInitialValueEv +0x0000007100e0131c,sub_7100E0131C,60,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE11getCategoryEv +0x0000007100e01358,sub_7100E01358,64,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE11setCategoryEj +0x0000007100e01398,sub_7100E01398,24,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE7getNameEv +0x0000007100e013b0,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE12getDeleteRevEv,24,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE12getDeleteRevEv +0x0000007100e013c8,sub_7100E013C8,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE9getConfigEv +0x0000007100e013d0,sub_7100E013D0,8,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE9setConfigERKNS0_10FlagConfigIS4_EE +0x0000007100e013d8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE8getValueEv,308,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE8getValueEv +0x0000007100e0150c,sub_7100E0150C,8,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE11getValueRefEv +0x0000007100e01514,sub_7100E01514,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE11getValueRefEv +0x0000007100e0151c,sub_7100E0151C,228,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE8hasValueERKS4_ +0x0000007100e01600,sub_7100E01600,1184,_ZN4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE8setValueES4_ +0x0000007100e01aa0,sub_7100E01AA0,8,_ZNK4ksys3gdt4FlagIN4sead15FixedSafeStringILi256EEEE12getDebugDataEv +0x0000007100E01AA8,_ZN4ksys3gdt10FlagConfigIN4sead15FixedSafeStringILi256EEEEaSERKS5_,0x270,_ZN4ksys3gdt10FlagConfigIN4sead15FixedSafeStringILi256EEEEaSERKS5_ +0x0000007100e01d18,sub_7100E01D18,20,_ZN4ksys3gdt4FlagIN4sead7Vector2IfEEED2Ev +0x0000007100e01d2c,sub_7100E01D2C,52,_ZN4ksys3gdt4FlagIN4sead7Vector2IfEEED0Ev +0x0000007100e01d60,sub_7100E01D60,8,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE7getHashEv +0x0000007100e01d68,sub_7100E01D68,8,_ZN4ksys3gdt4FlagIN4sead7Vector2IfEEE7setHashEj +0x0000007100e01d70,sub_7100E01D70,8,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE7getTypeEv +0x0000007100e01d78,sub_7100E01D78,24,_ZN4ksys3gdt4FlagIN4sead7Vector2IfEEE7setTypeENS0_8FlagTypeE +0x0000007100e01d90,sub_7100E01D90,8,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE13getPropertiesEv +0x0000007100e01d98,sub_7100E01D98,8,_ZN4ksys3gdt4FlagIN4sead7Vector2IfEEE13setPropertiesERKNS0_14FlagPropertiesE +0x0000007100e01da0,sub_7100E01DA0,56,_ZN4ksys3gdt4FlagIN4sead7Vector2IfEEE19resetToInitialValueEv +0x0000007100e01dd8,sub_7100E01DD8,88,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE14isInitialValueEv +0x0000007100e01e30,sub_7100E01E30,60,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE11getCategoryEv +0x0000007100e01e6c,sub_7100E01E6C,64,_ZN4ksys3gdt4FlagIN4sead7Vector2IfEEE11setCategoryEj +0x0000007100e01eac,sub_7100E01EAC,24,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE7getNameEv +0x0000007100e01ec4,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE12getDeleteRevEv,24,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE12getDeleteRevEv +0x0000007100e01edc,sub_7100E01EDC,8,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE9getConfigEv +0x0000007100e01ee4,sub_7100E01EE4,52,_ZN4ksys3gdt4FlagIN4sead7Vector2IfEEE9setConfigERKNS0_10FlagConfigIS4_EE +0x0000007100e01f18,sub_7100E01F18,8,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE8getValueEv +0x0000007100e01f20,sub_7100E01F20,8,_ZN4ksys3gdt4FlagIN4sead7Vector2IfEEE11getValueRefEv +0x0000007100e01f28,sub_7100E01F28,8,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE11getValueRefEv +0x0000007100e01f30,sub_7100E01F30,64,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE8hasValueERKS4_ +0x0000007100e01f70,sub_7100E01F70,192,_ZN4ksys3gdt4FlagIN4sead7Vector2IfEEE8setValueES4_ +0x0000007100e02030,sub_7100E02030,8,_ZNK4ksys3gdt4FlagIN4sead7Vector2IfEEE12getDebugDataEv +0x0000007100e02038,sub_7100E02038,20,_ZN4ksys3gdt4FlagIN4sead7Vector3IfEEED2Ev +0x0000007100e0204c,sub_7100E0204C,52,_ZN4ksys3gdt4FlagIN4sead7Vector3IfEEED0Ev +0x0000007100e02080,sub_7100E02080,8,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE7getHashEv +0x0000007100e02088,sub_7100E02088,8,_ZN4ksys3gdt4FlagIN4sead7Vector3IfEEE7setHashEj +0x0000007100e02090,sub_7100E02090,8,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE7getTypeEv +0x0000007100e02098,sub_7100E02098,24,_ZN4ksys3gdt4FlagIN4sead7Vector3IfEEE7setTypeENS0_8FlagTypeE +0x0000007100e020b0,sub_7100E020B0,8,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE13getPropertiesEv +0x0000007100e020b8,sub_7100E020B8,8,_ZN4ksys3gdt4FlagIN4sead7Vector3IfEEE13setPropertiesERKNS0_14FlagPropertiesE +0x0000007100e020c0,sub_7100E020C0,64,_ZN4ksys3gdt4FlagIN4sead7Vector3IfEEE19resetToInitialValueEv +0x0000007100e02100,sub_7100E02100,108,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE14isInitialValueEv +0x0000007100e0216c,sub_7100E0216C,60,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE11getCategoryEv +0x0000007100e021a8,sub_7100E021A8,64,_ZN4ksys3gdt4FlagIN4sead7Vector3IfEEE11setCategoryEj +0x0000007100e021e8,sub_7100E021E8,24,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE7getNameEv +0x0000007100e02200,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE12getDeleteRevEv,24,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE12getDeleteRevEv +0x0000007100e02218,sub_7100E02218,8,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE9getConfigEv +0x0000007100e02220,sub_7100E02220,76,_ZN4ksys3gdt4FlagIN4sead7Vector3IfEEE9setConfigERKNS0_10FlagConfigIS4_EE +0x0000007100e0226c,sub_7100E0226C,12,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE8getValueEv +0x0000007100e02278,sub_7100E02278,8,_ZN4ksys3gdt4FlagIN4sead7Vector3IfEEE11getValueRefEv +0x0000007100e02280,sub_7100E02280,8,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE11getValueRefEv +0x0000007100e02288,sub_7100E02288,84,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE8hasValueERKS4_ +0x0000007100e022dc,sub_7100E022DC,232,_ZN4ksys3gdt4FlagIN4sead7Vector3IfEEE8setValueES4_ +0x0000007100e023c4,sub_7100E023C4,8,_ZNK4ksys3gdt4FlagIN4sead7Vector3IfEEE12getDebugDataEv +0x0000007100e023cc,sub_7100E023CC,20,_ZN4ksys3gdt4FlagIN4sead7Vector4IfEEED2Ev +0x0000007100e023e0,sub_7100E023E0,52,_ZN4ksys3gdt4FlagIN4sead7Vector4IfEEED0Ev +0x0000007100e02414,sub_7100E02414,8,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE7getHashEv +0x0000007100e0241c,sub_7100E0241C,8,_ZN4ksys3gdt4FlagIN4sead7Vector4IfEEE7setHashEj +0x0000007100e02424,sub_7100E02424,8,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE7getTypeEv +0x0000007100e0242c,sub_7100E0242C,24,_ZN4ksys3gdt4FlagIN4sead7Vector4IfEEE7setTypeENS0_8FlagTypeE +0x0000007100e02444,sub_7100E02444,8,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE13getPropertiesEv +0x0000007100e0244c,sub_7100E0244C,8,_ZN4ksys3gdt4FlagIN4sead7Vector4IfEEE13setPropertiesERKNS0_14FlagPropertiesE +0x0000007100e02454,sub_7100E02454,72,_ZN4ksys3gdt4FlagIN4sead7Vector4IfEEE19resetToInitialValueEv +0x0000007100e0249c,sub_7100E0249C,112,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE14isInitialValueEv +0x0000007100e0250c,sub_7100E0250C,60,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE11getCategoryEv +0x0000007100e02548,sub_7100E02548,64,_ZN4ksys3gdt4FlagIN4sead7Vector4IfEEE11setCategoryEj +0x0000007100e02588,sub_7100E02588,24,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE7getNameEv +0x0000007100e025a0,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE12getDeleteRevEv,24,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE12getDeleteRevEv +0x0000007100e025b8,sub_7100E025B8,8,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE9getConfigEv +0x0000007100e025c0,sub_7100E025C0,100,_ZN4ksys3gdt4FlagIN4sead7Vector4IfEEE9setConfigERKNS0_10FlagConfigIS4_EE +0x0000007100e02624,sub_7100E02624,12,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE8getValueEv +0x0000007100e02630,sub_7100E02630,8,_ZN4ksys3gdt4FlagIN4sead7Vector4IfEEE11getValueRefEv +0x0000007100e02638,sub_7100E02638,8,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE11getValueRefEv +0x0000007100e02640,sub_7100E02640,96,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE8hasValueERKS4_ +0x0000007100e026a0,sub_7100E026A0,272,_ZN4ksys3gdt4FlagIN4sead7Vector4IfEEE8setValueES4_ +0x0000007100e027b0,sub_7100E027B0,8,_ZNK4ksys3gdt4FlagIN4sead7Vector4IfEEE12getDebugDataEv +0x0000007100e027b8,somethingGameDataFlagOffset9,8,_ZN4ksys3gdt14FlagPropertiesC1Ev +0x0000007100e027c0,nullsub_3864,4,_ZN4ksys3gdt14FlagPropertiesD1Ev +0x0000007100e027c4,GameDataFlag::setIsProgramReadable,28,_ZN4ksys3gdt14FlagProperties20setIsProgramReadableEb +0x0000007100e027e0,GameDataFlag::isProgramReadable,12,_ZNK4ksys3gdt14FlagProperties17isProgramReadableEv +0x0000007100e027ec,GameDataFlag::setIsProgramWritable,32,_ZN4ksys3gdt14FlagProperties20setIsProgramWritableEb +0x0000007100e0280c,GameDataFlag::isProgramWritable,12,_ZNK4ksys3gdt14FlagProperties17isProgramWritableEv +0x0000007100e02818,GameDataFlag::setIsSave,32,_ZN4ksys3gdt14FlagProperties9setIsSaveEb +0x0000007100e02838,GameDataFlag::isSave,12,_ZNK4ksys3gdt14FlagProperties6isSaveEv +0x0000007100e02844,GameDataFlag::setIsOneTrigger,32,_ZN4ksys3gdt14FlagProperties15setIsOneTriggerEb +0x0000007100e02864,GameDataFlag::isOneTrigger,12,_ZNK4ksys3gdt14FlagProperties12isOneTriggerEv +0x0000007100e02870,GameDataFlag::setIsEventAssociated,32,_ZN4ksys3gdt14FlagProperties20setIsEventAssociatedEb +0x0000007100e02890,GameDataFlag::isEventAssociated,12,_ZNK4ksys3gdt14FlagProperties17isEventAssociatedEv +0x0000007100e0289c,GameDataFlag::setResetType,16,_ZN4ksys3gdt14FlagProperties12setResetTypeENS0_9ResetTypeE +0x0000007100e028ac,GameDataFlag::getResetType,12,_ZNK4ksys3gdt14FlagProperties12getResetTypeEv +0x0000007100e028b8,_ZN4ksys3gdt14FlagPropertiesaSERKS1_,0x9c,_ZN4ksys3gdt14FlagPropertiesaSERKS1_ +0x0000007100e02954,sub_7100E02954,60,_ZN4ksys3gdt8FlagBase11clampValue_ERKiPiS3_ +0x0000007100e02990,sub_7100E02990,60,_ZN4ksys3gdt8FlagBase11clampValue_ERKfPfS3_ +0x0000007100e029cc,sub_7100E029CC,8,_ZN4ksys3gdt8FlagBase11clampValue_ERKN4sead14SafeStringBaseIcEEPS4_S6_ +0x0000007100e029d4,sub_7100E029D4,108,_ZN4ksys3gdt8FlagBase11clampValue_ERKN4sead7Vector2IfEEPS4_S6_ +0x0000007100e02a40,sub_7100E02A40,156,_ZN4ksys3gdt8FlagBase11clampValue_ERKN4sead7Vector3IfEEPS4_S6_ +0x0000007100e02adc,sub_7100E02ADC,204,_ZN4ksys3gdt8FlagBase11clampValue_ERKN4sead7Vector4IfEEPS4_S6_ +0x0000007100e02ba8,GameDataFlag::x,68,_ZNK4ksys3gdt8FlagBase10isBoolean_Ev +0x0000007100e02bec,_ZNK4ksys3gdt8FlagBase19setCategoryForBool_EPvj,0x58,_ZNK4ksys3gdt8FlagBase19setCategoryForBool_EPvj +0x0000007100e02c44,GameDataFlag::x_0,80,_ZNK4ksys3gdt8FlagBase19getCategoryForBool_EPKv 0x0000007100e02c94,sub_7100E02C94,248, 0x0000007100e02d8c,sub_7100E02D8C,952, 0x0000007100e03144,sub_7100E03144,100, diff --git a/lib/sead b/lib/sead index 46972404..03809dcc 160000 --- a/lib/sead +++ b/lib/sead @@ -1 +1 @@ -Subproject commit 469724042e81233bba78118548ddd8da5c3d890d +Subproject commit 03809dcc60116923222b5e6ff066c14d6ba88da3 diff --git a/src/KingSystem/CMakeLists.txt b/src/KingSystem/CMakeLists.txt index 3a64db1c..47e4a296 100644 --- a/src/KingSystem/CMakeLists.txt +++ b/src/KingSystem/CMakeLists.txt @@ -1,6 +1,7 @@ add_subdirectory(ActorSystem) add_subdirectory(Ecosystem) add_subdirectory(Framework) +add_subdirectory(GameData) add_subdirectory(Map) add_subdirectory(MessageSystem) add_subdirectory(Resource) diff --git a/src/KingSystem/GameData/CMakeLists.txt b/src/KingSystem/GameData/CMakeLists.txt new file mode 100644 index 00000000..00246c49 --- /dev/null +++ b/src/KingSystem/GameData/CMakeLists.txt @@ -0,0 +1,4 @@ +target_sources(uking PRIVATE + gdtFlag.cpp + gdtFlag.h +) diff --git a/src/KingSystem/GameData/gdtFlag.cpp b/src/KingSystem/GameData/gdtFlag.cpp new file mode 100644 index 00000000..5be98096 --- /dev/null +++ b/src/KingSystem/GameData/gdtFlag.cpp @@ -0,0 +1,151 @@ +#include "KingSystem/GameData/gdtFlag.h" + +namespace ksys::gdt { + +SEAD_ENUM_IMPL(FlagType) + +FlagProperties::FlagProperties() = default; + +FlagProperties::~FlagProperties() = default; + +void FlagProperties::setIsProgramReadable(bool on) { + set(PropertyFlag::IsProgramReadable, on); +} + +bool FlagProperties::isProgramReadable() const { + return get(PropertyFlag::IsProgramReadable); +} + +void FlagProperties::setIsProgramWritable(bool on) { + set(PropertyFlag::IsProgramWritable, on); +} + +bool FlagProperties::isProgramWritable() const { + return get(PropertyFlag::IsProgramWritable); +} + +void FlagProperties::setIsSave(bool on) { + set(PropertyFlag::IsSave, on); +} + +bool FlagProperties::isSave() const { + return get(PropertyFlag::IsSave); +} + +void FlagProperties::setIsOneTrigger(bool on) { + set(PropertyFlag::IsOneTrigger, on); +} + +bool FlagProperties::isOneTrigger() const { + return get(PropertyFlag::IsOneTrigger); +} + +void FlagProperties::setIsEventAssociated(bool on) { + set(PropertyFlag::IsEventAssociated, on); +} + +bool FlagProperties::isEventAssociated() const { + return get(PropertyFlag::IsEventAssociated); +} + +void FlagProperties::setResetType(ResetType type) { + mFlags = (mFlags & 0x1F) | 0x20 * u32(type); +} + +ResetType FlagProperties::getResetType() const { + return ResetType(mFlags >> 5); +} + +FlagProperties& FlagProperties::operator=(const FlagProperties& other) { + setIsProgramReadable(other.isProgramReadable()); + setIsProgramWritable(other.isProgramWritable()); + setIsSave(other.isSave()); + setIsOneTrigger(other.isOneTrigger()); + setIsEventAssociated(other.isEventAssociated()); + setResetType(other.getResetType()); + return *this; +} + +s32 FlagBase::clampValue_(const s32& min_value, s32* value, const s32& max_value) { + if (*value < min_value) { + *value = min_value; + return -1; + } + if (*value > max_value) { + *value = max_value; + return 1; + } + return 0; +} + +s32 FlagBase::clampValue_(const f32& min_value, f32* value, const f32& max_value) { + if (*value < min_value) { + *value = min_value; + return -1; + } + if (*value > max_value) { + *value = max_value; + return 1; + } + return 0; +} + +s32 FlagBase::clampValue_(const sead::SafeString&, sead::SafeString*, const sead::SafeString&) { + return 0; +} + +namespace { +template +constexpr s32 clampVectorComponentWise(const T& min_value, T* value, const T& max_value) { + s32 ret = 0; + for (size_t i = 0; i < min_value.e.size(); ++i) { + if (value->e[i] < min_value.e[i]) { + value->e[i] = min_value.e[i]; + ret = -1; + } + } + for (size_t i = 0; i < max_value.e.size(); ++i) { + if (value->e[i] > max_value.e[i]) { + value->e[i] = max_value.e[i]; + ret = 1; + } + } + return ret; +} +} // namespace + +s32 FlagBase::clampValue_(const sead::Vector2f& min_value, sead::Vector2f* value, + const sead::Vector2f& max_value) { + return clampVectorComponentWise(min_value, value, max_value); +} + +s32 FlagBase::clampValue_(const sead::Vector3f& min_value, sead::Vector3f* value, + const sead::Vector3f& max_value) { + return clampVectorComponentWise(min_value, value, max_value); +} + +s32 FlagBase::clampValue_(const sead::Vector4f& min_value, sead::Vector4f* value, + const sead::Vector4f& max_value) { + return clampVectorComponentWise(min_value, value, max_value); +} + +bool FlagBase::isBoolean_() const { + const auto type = getType(); + return s32(type) == FlagType::Bool || s32(type) == FlagType::BoolArray; +} + +u32 FlagBase::getCategoryForBool_(const void* data) const { + if (!isBoolean_()) + return 0; + return *static_cast(data) >> 1; +} + +void FlagBase::setCategoryForBool_(void* data, u32 category) const { + if (!isBoolean_()) + return; + + auto* ptr = static_cast(data); + *ptr = (*ptr & 1) | 2 * category; +} + +} // namespace ksys::gdt diff --git a/src/KingSystem/GameData/gdtFlag.h b/src/KingSystem/GameData/gdtFlag.h new file mode 100644 index 00000000..8aceab40 --- /dev/null +++ b/src/KingSystem/GameData/gdtFlag.h @@ -0,0 +1,384 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include "KingSystem/Utils/Types.h" + +namespace al { +class ByamlIter; +} + +namespace ksys::gdt { + +enum class ResetType { + /// The flag will not be reset. + NoReset = 0, + /// The flag is reset every time a blood moon occurs. + ResetOnBloodMoon = 1, + /// The flag is reset every time a stage is generated. + ResetOnStageGeneration = 2, + /// The flag is reset every day at midnight. + ResetAtMidnight = 3, + /// The flag is reset every time the Lord of the Mountain makes an appearance. + ResetOnAnimalMasterAppearance = 4, +}; + +struct FlagDebugData { + sead::SafeString name; + s32 delete_rev = 0; + u32 _14 = 0; +}; +KSYS_CHECK_SIZE_NX150(FlagDebugData, 0x18); + +class FlagProperties { +public: + FlagProperties(); + FlagProperties(const FlagProperties& other) { *this = other; } + ~FlagProperties(); + FlagProperties& operator=(const FlagProperties& other); + + void setIsProgramReadable(bool on); + bool isProgramReadable() const; + + void setIsProgramWritable(bool on); + bool isProgramWritable() const; + + void setIsSave(bool on); + bool isSave() const; + + void setIsOneTrigger(bool on); + bool isOneTrigger() const; + + void setIsEventAssociated(bool on); + bool isEventAssociated() const; + + void setResetType(ResetType type); + ResetType getResetType() const; + +private: + enum class PropertyFlag { + IsProgramReadable = 0x1, + IsProgramWritable = 0x2, + IsSave = 0x4, + IsOneTrigger = 0x8, + IsEventAssociated = 0x10, + }; + + void set(PropertyFlag flag, bool on) { + if (on) + mFlags |= u8(flag); + else + mFlags &= ~u8(flag); + } + + bool get(PropertyFlag flag) const { return (mFlags & u8(flag)) != 0; } + + u8 mFlags{}; +}; +KSYS_CHECK_SIZE_NX150(FlagProperties, 0x1); + +SEAD_ENUM(FlagType, Bool = 0, S32 = 1, F32 = 2, String = 3, String64 = 4, String256 = 5, + Vector2f = 6, Vector3f = 7, Vector4f = 8, BoolArray = 9, S32Array = 10, F32Array = 11, + StringArray = 12, String64Array = 13, String256Array = 14, Vector2fArray = 15, + Vector3fArray = 16, Vector4fArray = 17, Invalid = 18) + +class FlagBase { +public: + virtual ~FlagBase() = 0; + + virtual u32 getHash() const = 0; + virtual void setHash(u32 hash) = 0; + + virtual FlagType getType() const = 0; + virtual void setType(FlagType type) = 0; + + virtual const FlagProperties& getProperties() const = 0; + virtual void setProperties(const FlagProperties& properties) = 0; + + virtual void resetToInitialValue() = 0; + virtual bool isInitialValue() const = 0; + + virtual u32 getCategory() const = 0; + virtual void setCategory(u32 category) = 0; + + virtual const sead::SafeString& getName() const = 0; + virtual s32 getDeleteRev() const = 0; + +protected: + s32 clampValue_(const s32& min_value, s32* value, const s32& max_value); + s32 clampValue_(const f32& min_value, f32* value, const f32& max_value); + s32 clampValue_(const sead::SafeString& min_value, sead::SafeString* value, + const sead::SafeString& max_value); + s32 clampValue_(const sead::Vector2f& min_value, sead::Vector2f* value, + const sead::Vector2f& max_value); + s32 clampValue_(const sead::Vector3f& min_value, sead::Vector3f* value, + const sead::Vector3f& max_value); + s32 clampValue_(const sead::Vector4f& min_value, sead::Vector4f* value, + const sead::Vector4f& max_value); + + bool isBoolean_() const; + u32 getCategoryForBool_(const void* data) const; + void setCategoryForBool_(void* data, u32 category) const; +}; + +template +struct FlagConfig { + FlagConfig& operator=(const FlagConfig& other) { + initial_value = other.initial_value; + min_value = other.min_value; + max_value = other.max_value; + return *this; + } + + T initial_value; + T min_value; + T max_value; +}; + +template <> +struct FlagConfig { + u8 initial_value; +}; + +template +class Flag : public FlagBase { +public: + using ConfigType = FlagConfig; + using RawValueType = std::conditional_t, u8, T>; + + Flag() = default; + ~Flag() override = default; + + u32 getHash() const override; + void setHash(u32 hash) override; + + FlagType getType() const override; + void setType(FlagType type) override; + + const FlagProperties& getProperties() const override; + void setProperties(const FlagProperties& properties) override; + + void resetToInitialValue() override; + bool isInitialValue() const override; + + u32 getCategory() const override; + void setCategory(u32 category) override; + + const sead::SafeString& getName() const override; + s32 getDeleteRev() const override; + + virtual u32 getRandomResetData() const; + + virtual const ConfigType& getConfig() const; + virtual void setConfig(const ConfigType& config); + + virtual T getValue() const; + + virtual RawValueType& getValueRef(); + virtual const RawValueType& getValueRef() const; + + virtual bool hasValue(const T& value) const; + virtual bool setValue(T value); + + virtual FlagDebugData* getDebugData() const; + +private: + sead::SizedEnum mType = FlagType::Invalid; + FlagProperties mProperties; + ConfigType mConfig{}; + RawValueType mValue{}; + u32 mHash = 0; + FlagDebugData* mDebugData = nullptr; +}; + +using FlagBool = Flag; +using FlagS32 = Flag; +using FlagF32 = Flag; +using FlagString = Flag>; +using FlagString64 = Flag>; +using FlagString256 = Flag>; +using FlagVector2f = Flag; +using FlagVector3f = Flag; +using FlagVector4f = Flag; + +using FlagBoolArray = sead::Buffer; +using FlagS32Array = sead::Buffer; +using FlagF32Array = sead::Buffer; +using FlagStringArray = sead::Buffer; +using FlagString64Array = sead::Buffer; +using FlagString256Array = sead::Buffer; +using FlagVector2fArray = sead::Buffer; +using FlagVector3fArray = sead::Buffer; +using FlagVector4fArray = sead::Buffer; + +KSYS_CHECK_SIZE_NX150(FlagBool, 0x18); +KSYS_CHECK_SIZE_NX150(FlagS32, 0x28); +KSYS_CHECK_SIZE_NX150(FlagF32, 0x28); +KSYS_CHECK_SIZE_NX150(FlagString, 0x100); +KSYS_CHECK_SIZE_NX150(FlagString64, 0x180); +KSYS_CHECK_SIZE_NX150(FlagString256, 0x480); +KSYS_CHECK_SIZE_NX150(FlagVector2f, 0x38); +KSYS_CHECK_SIZE_NX150(FlagVector3f, 0x48); +KSYS_CHECK_SIZE_NX150(FlagVector4f, 0x58); + +inline FlagBase::~FlagBase() = default; + +template +inline u32 Flag::getHash() const { + return mHash; +} + +template +inline void Flag::setHash(u32 hash) { + mHash = hash; +} + +template +inline FlagType Flag::getType() const { + return mType.mValue; +} + +template +inline void Flag::setType(FlagType type) { + mType.mValue = u8(type); +} + +template +inline const FlagProperties& Flag::getProperties() const { + return mProperties; +} + +template +inline void Flag::setProperties(const FlagProperties& properties) { + mProperties = properties; +} + +template +inline void Flag::resetToInitialValue() { + if constexpr (std::is_same()) { + const auto category = getCategory(); + mValue = getConfig().initial_value & 1; + setCategory(category); + } else { + mValue = getConfig().initial_value; + } +} + +template +inline bool Flag::isInitialValue() const { + if constexpr (std::is_same()) { + const bool initial_value = getConfig().initial_value & 1; + return getValue() == initial_value; + } else { + T initial_value; + initial_value = getConfig().initial_value; + return getValue() == initial_value; + } +} + +template +inline u32 Flag::getCategory() const { + if (!isBoolean_()) + return 0; + return getCategoryForBool_(&mValue); +} + +template +inline void Flag::setCategory(u32 category) { + if (!isBoolean_()) + return; + setCategoryForBool_(&mValue, category); +} + +template +inline const sead::SafeString& Flag::getName() const { + return mDebugData ? mDebugData->name : sead::SafeString::cEmptyString; +} + +template +inline s32 Flag::getDeleteRev() const { + return mDebugData ? mDebugData->delete_rev : -1; +} + +template +inline u32 Flag::getRandomResetData() const { + const auto& initial_value = getConfig().initial_value; + if constexpr (std::is_same()) + return initial_value >> 1; + else + return 0; +} + +template +inline const typename Flag::ConfigType& Flag::getConfig() const { + return mConfig; +} + +template +inline void Flag::setConfig(const ConfigType& config) { + mConfig = config; +} + +template +inline T Flag::getValue() const { + if constexpr (std::is_same()) + return mValue & 1; + else + return mValue; +} + +template +inline typename Flag::RawValueType& Flag::getValueRef() { + return mValue; +} + +template +inline const typename Flag::RawValueType& Flag::getValueRef() const { + return mValue; +} + +template +inline bool Flag::hasValue(const T& value) const { + return value == getValue(); +} + +template +inline bool Flag::setValue(T value) { + if constexpr (std::is_same()) { + if (value == getValue()) + return false; + + if (value) + mValue |= 1; + else + mValue &= ~1; + + return true; + } else { + [[maybe_unused]] const T new_value = value; + + T min_value; + T max_value; + min_value = getConfig().min_value; + max_value = getConfig().max_value; + clampValue_(min_value, &value, max_value); + + if (mValue != value) { + mValue = value; + return true; + } + return false; + } +} + +template +inline FlagDebugData* Flag::getDebugData() const { + return mDebugData; +} + +} // namespace ksys::gdt