summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-04-23 00:30:30 +0200
committerLéo Lam <leo@leolam.fr>2021-04-23 12:53:04 +0200
commit201d2ff06fd9ee9a1aac0ce914b23effae9c8f22 (patch)
treef9ff0055a38c0ec094410e7f738d6f68a4e4dfe2
parent52196c4b75f84444bca3b9c19302146235bf8f6a (diff)
ksys/act: Finish implementing ActorParamMgr
-rw-r--r--data/uking_functions.csv406
m---------lib/sead0
-rw-r--r--src/KingSystem/ActorSystem/actASSetting.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actASSetting.h2
-rw-r--r--src/KingSystem/ActorSystem/actActorParam.h6
-rw-r--r--src/KingSystem/ActorSystem/actActorParamMgr.cpp144
-rw-r--r--src/KingSystem/ActorSystem/actActorParamMgr.h8
-rw-r--r--src/KingSystem/Resource/resResourceAIProgram.cpp2
-rw-r--r--src/KingSystem/Resource/resResourceAIProgram.h2
-rw-r--r--src/KingSystem/Resource/resResourceAttClient.cpp6
-rw-r--r--src/KingSystem/Resource/resResourceAttClient.h2
-rw-r--r--src/KingSystem/Resource/resResourceAttClientList.h2
-rw-r--r--src/KingSystem/Resource/resResourceAwareness.cpp2
-rw-r--r--src/KingSystem/Resource/resResourceAwareness.h2
-rw-r--r--src/KingSystem/Resource/resResourceDamageParam.cpp2
-rw-r--r--src/KingSystem/Resource/resResourceDamageParam.h4
-rw-r--r--src/KingSystem/Resource/resResourceGParamList.cpp91
-rw-r--r--src/KingSystem/Resource/resResourceGParamList.h2
-rw-r--r--src/KingSystem/Resource/resResourceLifeCondition.cpp2
-rw-r--r--src/KingSystem/Resource/resResourceLifeCondition.h2
-rw-r--r--src/KingSystem/Resource/resResourceLod.cpp4
-rw-r--r--src/KingSystem/Resource/resResourceLod.h4
-rw-r--r--src/KingSystem/Resource/resResourceModelList.h7
23 files changed, 463 insertions, 241 deletions
diff --git a/data/uking_functions.csv b/data/uking_functions.csv
index ba3bfd54..bd06e313 100644
--- a/data/uking_functions.csv
+++ b/data/uking_functions.csv
@@ -90954,7 +90954,7 @@
0x0000007101167fac,sub_7101167FAC,160,_ZN4ksys3act13ActorParamMgr18SingletonDisposer_D0Ev
0x000000710116804c,ActorParam::createInstance,136,_ZN4ksys3act13ActorParamMgr14createInstanceEPN4sead4HeapE
0x00000071011680d4,ActorParam::ctor,372,_ZN4ksys3act13ActorParamMgrC1Ev
-0x0000007101168248,ActorParam::init,6612,
+0x0000007101168248,ActorParam::init,6612,_ZN4ksys3act13ActorParamMgr4initEPN4sead4HeapES4_
0x0000007101169c1c,sub_7101169C1C,248,_ZN4sead9SafeArrayIN4ksys3res6HandleELi28EED2Ev
0x0000007101169d14,sub_7101169D14,8,_ZNK4ksys3act13ActorParamMgr9checkPathERKN4sead14SafeStringBaseIcEE
0x0000007101169d1c,sub_7101169D1C,316,_ZN4ksys3act13ActorParamMgr10allocParamEPKcPb
@@ -91044,207 +91044,207 @@
0x000000710117dfb0,sub_710117DFB0,1876,_ZN4ksys3act13ActorParamMgr8loadFileINS_3res11BoneControlEEEPT_PNS0_10ActorParamENS7_12ResourceTypeEPKcSB_SB_PNS3_6HandleEPvj
0x000000710117e704,sub_710117E704,1876,_ZN4ksys3act13ActorParamMgr8loadFileINS_3res13LifeConditionEEEPT_PNS0_10ActorParamENS7_12ResourceTypeEPKcSB_SB_PNS3_6HandleEPvj
0x000000710117ee58,sub_710117EE58,1876,_ZN4ksys3act13ActorParamMgr8loadFileINS_3res8AnimInfoEEEPT_PNS0_10ActorParamENS7_12ResourceTypeEPKcSB_SB_PNS3_6HandleEPvj
-0x000000710117f5ac,sub_710117F5AC,376,
-0x000000710117f724,sub_710117F724,8,
+0x000000710117f5ac,sub_710117F5AC,376,_ZN4ksys3act13ActorParamMgr8syncDataEPc
+0x000000710117f724,sub_710117F724,8,_ZThn8_N4ksys3act13ActorParamMgr8syncDataEPc
0x000000710117f72c,ActorParam::getBgparamlist,36,_ZNK4ksys3act13ActorParamMgr18getDummyGParamListEv
-0x000000710117f750,getAglXml,12,
-0x000000710117f75c,sub_710117F75C,12,
+0x000000710117f750,getAglXml,12,_ZNK4ksys3act13ActorParamMgr7getNameEv
+0x000000710117f75c,sub_710117F75C,12,_ZThn8_NK4ksys3act13ActorParamMgr7getNameEv
0x000000710117f768,ActorParam::Res2Array::ctor,244,_ZN4sead9SafeArrayIN4ksys3res6HandleELi28EEC2Ev
-0x000000710117f85c,sub_710117F85C,272,
-0x000000710117f96c,sub_710117F96C,280,
-0x000000710117fa84,sub_710117FA84,132,
-0x000000710117fb08,sub_710117FB08,92,
-0x000000710117fb64,sub_710117FB64,156,
-0x000000710117fc00,sub_710117FC00,8,
-0x000000710117fc08,sub_710117FC08,8,
-0x000000710117fc10,EntryFactoryBgparamlist::dtor,88,
-0x000000710117fc68,EntryFactoryBgparamlist::dtorDelete,96,
-0x000000710117fcc8,EntryFactoryBgparamlist::rtti1,132,
-0x000000710117fd4c,EntryFactoryBgparamlist::rtti2,92,
-0x000000710117fda8,EntryFactoryBgparamlist::newResource_,376,
-0x000000710117ff20,EntryFactoryBgparamlist::getResourceSize,8,
-0x000000710117ff28,EntryFactoryBgparamlist::getLoadDataAlignment,8,
-0x000000710117ff30,sub_710117FF30,68,
-0x000000710117ff74,sub_710117FF74,76,
-0x000000710117ffc0,sub_710117FFC0,132,
-0x0000007101180044,sub_7101180044,92,
-0x00000071011800a0,EntryFactoryBmodellist::newResource_,156,
-0x000000710118013c,EntryFactoryBmodellist::getResourceSize,8,
-0x0000007101180144,EntryFactoryBmodellist::getLoadDataAlignment,8,
-0x000000710118014c,sub_710118014C,68,
-0x0000007101180190,sub_7101180190,76,
-0x00000071011801dc,sub_71011801DC,132,
-0x0000007101180260,sub_7101180260,92,
-0x00000071011802bc,sub_71011802BC,156,
-0x0000007101180358,sub_7101180358,8,
-0x0000007101180360,sub_7101180360,8,
-0x0000007101180368,Aiprog::ctor,352,_ZN4ksys3res9AIProgramC1Ev
-0x00000071011804c8,sub_71011804C8,68,
-0x000000710118050c,sub_710118050C,76,
-0x0000007101180558,sub_7101180558,132,
-0x00000071011805dc,sub_71011805DC,92,
-0x0000007101180638,sub_7101180638,156,
-0x00000071011806d4,sub_71011806D4,8,
-0x00000071011806dc,sub_71011806DC,8,
-0x00000071011806e4,EntryFactoryBphysics::m0,140,
-0x0000007101180770,EntryFactoryBphysics::m1,148,
-0x0000007101180804,EntryFactoryBphysics::m2,132,
-0x0000007101180888,EntryFactoryBphysics::m3,92,
-0x00000071011808e4,EntryFactoryBphysics::newResource,376,
-0x0000007101180a5c,EntryFactoryBphysics::m8,8,
-0x0000007101180a64,EntryFactoryBphysics::m9,8,
-0x0000007101180a6c,sub_7101180A6C,140,
-0x0000007101180af8,sub_7101180AF8,148,
-0x0000007101180b8c,sub_7101180B8C,132,
-0x0000007101180c10,sub_7101180C10,92,
-0x0000007101180c6c,sub_7101180C6C,156,
-0x0000007101180d08,sub_7101180D08,8,
-0x0000007101180d10,sub_7101180D10,8,
-0x0000007101180d18,sub_7101180D18,68,
-0x0000007101180d5c,sub_7101180D5C,76,
-0x0000007101180da8,sub_7101180DA8,132,
-0x0000007101180e2c,sub_7101180E2C,92,
-0x0000007101180e88,sub_7101180E88,156,
-0x0000007101180f24,sub_7101180F24,8,
-0x0000007101180f2c,sub_7101180F2C,8,
-0x0000007101180f34,sub_7101180F34,68,
-0x0000007101180f78,sub_7101180F78,76,
-0x0000007101180fc4,sub_7101180FC4,132,
-0x0000007101181048,sub_7101181048,92,
-0x00000071011810a4,EntryFactoryBatcllist::newResource_,456,
-0x000000710118126c,sub_710118126C,8,
-0x0000007101181274,sub_7101181274,8,
-0x000000710118127c,sub_710118127C,500,_ZN4ksys3res9AttClientC1Ev
-0x0000007101181470,sub_7101181470,68,
-0x00000071011814b4,sub_71011814B4,76,
-0x0000007101181500,sub_7101181500,132,
-0x0000007101181584,sub_7101181584,92,
-0x00000071011815e0,sub_71011815E0,156,
-0x000000710118167c,sub_710118167C,8,
-0x0000007101181684,sub_7101181684,8,
-0x000000710118168c,sub_710118168C,88,
-0x00000071011816e4,sub_71011816E4,96,
-0x0000007101181744,sub_7101181744,132,
-0x00000071011817c8,sub_71011817C8,92,
-0x0000007101181824,sub_7101181824,372,
-0x0000007101181998,sub_7101181998,8,
-0x00000071011819a0,sub_71011819A0,8,
-0x00000071011819a8,Bdmgparam::ctor,1808,_ZN4ksys3res11DamageParamC1Ev
-0x00000071011820b8,EntryFactoryBdmgparam::dtor,68,
-0x00000071011820fc,EntryFactoryBdmgparam::dtorDelete,76,
-0x0000007101182148,EntryFactoryBdmgparam::rtti1,132,
-0x00000071011821cc,EntryFactoryBdmgparam::rtti2,92,
-0x0000007101182228,EntryFactoryBdmgparam::newResource,156,
-0x00000071011822c4,EntryFactoryBdmgparam::getResourceSize,8,
-0x00000071011822cc,EntryFactoryBdmgparam::getLoadDataAlignment,8,
-0x00000071011822d4,sub_71011822D4,68,
-0x0000007101182318,sub_7101182318,76,
-0x0000007101182364,sub_7101182364,132,
-0x00000071011823e8,sub_71011823E8,92,
-0x0000007101182444,sub_7101182444,156,
-0x00000071011824e0,sub_71011824E0,8,
-0x00000071011824e8,sub_71011824E8,8,
-0x00000071011824f0,sub_71011824F0,68,
-0x0000007101182534,sub_7101182534,76,
-0x0000007101182580,sub_7101182580,132,
-0x0000007101182604,sub_7101182604,92,
-0x0000007101182660,sub_7101182660,156,
-0x00000071011826fc,sub_71011826FC,8,
-0x0000007101182704,sub_7101182704,8,
-0x000000710118270c,sub_710118270C,244,
-0x0000007101182800,sub_7101182800,252,
-0x00000071011828fc,sub_71011828FC,132,
-0x0000007101182980,sub_7101182980,92,
-0x00000071011829dc,sub_71011829DC,376,
-0x0000007101182b54,sub_7101182B54,8,
-0x0000007101182b5c,sub_7101182B5C,8,
-0x0000007101182b64,Bawareness::ctor,1260,_ZN4ksys3res9AwarenessC1Ev
-0x0000007101183050,sub_7101183050,372,
-0x00000071011831c4,sub_71011831C4,380,
-0x0000007101183340,sub_7101183340,132,
-0x00000071011833c4,sub_71011833C4,92,
-0x0000007101183420,sub_7101183420,156,
-0x00000071011834bc,sub_71011834BC,8,
-0x00000071011834c4,sub_71011834C4,8,
-0x00000071011834cc,EntryFactoryBdrop::m0,160,
-0x000000710118356c,EntryFactoryBdrop::m1,168,
-0x0000007101183614,EntryFactoryBdrop::m2,132,
-0x0000007101183698,EntryFactoryBdrop::m3,92,
-0x00000071011836f4,EntryFactoryBdrop::newResource,432,
-0x00000071011838a4,EntryFactoryBdrop::m8,8,
-0x00000071011838ac,EntryFactoryBdrop::m9,8,
-0x00000071011838b4,sub_71011838B4,160,
-0x0000007101183954,sub_7101183954,168,
-0x00000071011839fc,sub_71011839FC,132,
-0x0000007101183a80,sub_7101183A80,92,
-0x0000007101183adc,sub_7101183ADC,432,
-0x0000007101183c8c,sub_7101183C8C,8,
-0x0000007101183c94,sub_7101183C94,8,
-0x0000007101183c9c,sub_7101183C9C,160,
-0x0000007101183d3c,sub_7101183D3C,168,
-0x0000007101183de4,sub_7101183DE4,132,
-0x0000007101183e68,sub_7101183E68,92,
-0x0000007101183ec4,sub_7101183EC4,432,
-0x0000007101184074,sub_7101184074,8,
-0x000000710118407c,sub_710118407C,8,
-0x0000007101184084,sub_7101184084,372,_ZN4ksys3res3LodC1Ev
-0x00000071011841f8,sub_71011841F8,184,
-0x00000071011842b0,sub_71011842B0,192,
-0x0000007101184370,sub_7101184370,132,
-0x00000071011843f4,sub_71011843F4,92,
-0x0000007101184450,sub_7101184450,156,
-0x00000071011844ec,sub_71011844EC,8,
-0x00000071011844f4,sub_71011844F4,8,
-0x00000071011844fc,sub_71011844FC,68,
-0x0000007101184540,sub_7101184540,76,
-0x000000710118458c,sub_710118458C,132,
-0x0000007101184610,sub_7101184610,92,
-0x000000710118466c,sub_710118466C,156,
-0x0000007101184708,sub_7101184708,8,
-0x0000007101184710,sub_7101184710,8,
-0x0000007101184718,Blifecondition::ctor,436,_ZN4ksys3res13LifeConditionC1Ev
-0x00000071011848cc,sub_71011848CC,192,
-0x000000710118498c,sub_710118498C,200,
-0x0000007101184a54,sub_7101184A54,132,
-0x0000007101184ad8,sub_7101184AD8,92,
-0x0000007101184b34,sub_7101184B34,156,
-0x0000007101184bd0,sub_7101184BD0,8,
-0x0000007101184bd8,sub_7101184BD8,8,
-0x0000007101184be0,sub_7101184BE0,68,
-0x0000007101184c24,sub_7101184C24,76,
-0x0000007101184c70,sub_7101184C70,132,
-0x0000007101184cf4,sub_7101184CF4,92,
-0x0000007101184d50,sub_7101184D50,156,
-0x0000007101184dec,sub_7101184DEC,8,
-0x0000007101184df4,sub_7101184DF4,8,
-0x0000007101184dfc,sub_7101184DFC,68,
-0x0000007101184e40,sub_7101184E40,76,
-0x0000007101184e8c,sub_7101184E8C,132,
-0x0000007101184f10,sub_7101184F10,92,
-0x0000007101184f6c,sub_7101184F6C,156,
-0x0000007101185008,sub_7101185008,8,
-0x0000007101185010,sub_7101185010,8,
-0x0000007101185018,sub_7101185018,68,
-0x000000710118505c,sub_710118505C,76,
-0x00000071011850a8,sub_71011850A8,132,
-0x000000710118512c,sub_710118512C,92,
-0x0000007101185188,sub_7101185188,152,
-0x0000007101185220,sub_7101185220,8,
-0x0000007101185228,sub_7101185228,8,
-0x0000007101185230,sub_7101185230,88,
-0x0000007101185288,sub_7101185288,96,
-0x00000071011852e8,sub_71011852E8,132,
-0x000000710118536c,sub_710118536C,92,
-0x00000071011853c8,sub_71011853C8,376,
-0x0000007101185540,sub_7101185540,8,
-0x0000007101185548,sub_7101185548,8,
-0x0000007101185550,sub_7101185550,68,
-0x0000007101185594,sub_7101185594,76,
-0x00000071011855e0,sub_71011855E0,132,
-0x0000007101185664,sub_7101185664,92,
-0x00000071011856c0,sub_71011856C0,156,
-0x000000710118575c,sub_710118575C,8,
-0x0000007101185764,sub_7101185764,8,
+0x000000710117f85c,sub_710117F85C,272,_ZN4ksys3res12EntryFactoryINS0_9ActorLinkEED2Ev
+0x000000710117f96c,sub_710117F96C,280,_ZN4ksys3res12EntryFactoryINS0_9ActorLinkEED0Ev
+0x000000710117fa84,sub_710117FA84,132,_ZNK4ksys3res12EntryFactoryINS0_9ActorLinkEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x000000710117fb08,sub_710117FB08,92,_ZNK4ksys3res12EntryFactoryINS0_9ActorLinkEE18getRuntimeTypeInfoEv
+0x000000710117fb64,sub_710117FB64,156,_ZN4ksys3res12EntryFactoryINS0_9ActorLinkEE12newResource_EPN4sead4HeapEi
+0x000000710117fc00,sub_710117FC00,8,_ZNK4ksys3res12EntryFactoryINS0_9ActorLinkEE15getResourceSizeEv
+0x000000710117fc08,sub_710117FC08,8,_ZNK4ksys3res12EntryFactoryINS0_9ActorLinkEE20getLoadDataAlignmentEv
+0x000000710117fc10,EntryFactoryBgparamlist::dtor,88,_ZN4ksys3res12EntryFactoryINS0_10GParamListEED2Ev
+0x000000710117fc68,EntryFactoryBgparamlist::dtorDelete,96,_ZN4ksys3res12EntryFactoryINS0_10GParamListEED0Ev
+0x000000710117fcc8,EntryFactoryBgparamlist::rtti1,132,_ZNK4ksys3res12EntryFactoryINS0_10GParamListEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x000000710117fd4c,EntryFactoryBgparamlist::rtti2,92,_ZNK4ksys3res12EntryFactoryINS0_10GParamListEE18getRuntimeTypeInfoEv
+0x000000710117fda8,EntryFactoryBgparamlist::newResource_,376,_ZN4ksys3res12EntryFactoryINS0_10GParamListEE12newResource_EPN4sead4HeapEi
+0x000000710117ff20,EntryFactoryBgparamlist::getResourceSize,8,_ZNK4ksys3res12EntryFactoryINS0_10GParamListEE15getResourceSizeEv
+0x000000710117ff28,EntryFactoryBgparamlist::getLoadDataAlignment,8,_ZNK4ksys3res12EntryFactoryINS0_10GParamListEE20getLoadDataAlignmentEv
+0x000000710117ff30,sub_710117FF30,68,_ZN4ksys3res12EntryFactoryINS0_9ModelListEED2Ev
+0x000000710117ff74,sub_710117FF74,76,_ZN4ksys3res12EntryFactoryINS0_9ModelListEED0Ev
+0x000000710117ffc0,sub_710117FFC0,132,_ZNK4ksys3res12EntryFactoryINS0_9ModelListEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101180044,sub_7101180044,92,_ZNK4ksys3res12EntryFactoryINS0_9ModelListEE18getRuntimeTypeInfoEv
+0x00000071011800a0,EntryFactoryBmodellist::newResource_,156,_ZN4ksys3res12EntryFactoryINS0_9ModelListEE12newResource_EPN4sead4HeapEi
+0x000000710118013c,EntryFactoryBmodellist::getResourceSize,8,_ZNK4ksys3res12EntryFactoryINS0_9ModelListEE15getResourceSizeEv
+0x0000007101180144,EntryFactoryBmodellist::getLoadDataAlignment,8,_ZNK4ksys3res12EntryFactoryINS0_9ModelListEE20getLoadDataAlignmentEv
+0x000000710118014c,sub_710118014C,68,_ZN4ksys3res12EntryFactoryINS0_6ASListEED2Ev
+0x0000007101180190,sub_7101180190,76,_ZN4ksys3res12EntryFactoryINS0_6ASListEED0Ev
+0x00000071011801dc,sub_71011801DC,132,_ZNK4ksys3res12EntryFactoryINS0_6ASListEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101180260,sub_7101180260,92,_ZNK4ksys3res12EntryFactoryINS0_6ASListEE18getRuntimeTypeInfoEv
+0x00000071011802bc,sub_71011802BC,156,_ZN4ksys3res12EntryFactoryINS0_6ASListEE12newResource_EPN4sead4HeapEi
+0x0000007101180358,sub_7101180358,8,_ZNK4ksys3res12EntryFactoryINS0_6ASListEE15getResourceSizeEv
+0x0000007101180360,sub_7101180360,8,_ZNK4ksys3res12EntryFactoryINS0_6ASListEE20getLoadDataAlignmentEv
+0x0000007101180368,Aiprog::ctor,352,_ZN4ksys3res9AIProgramC2Ev
+0x00000071011804c8,sub_71011804C8,68,_ZN4ksys3res12EntryFactoryINS0_9AIProgramEED2Ev
+0x000000710118050c,sub_710118050C,76,_ZN4ksys3res12EntryFactoryINS0_9AIProgramEED0Ev
+0x0000007101180558,sub_7101180558,132,_ZNK4ksys3res12EntryFactoryINS0_9AIProgramEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x00000071011805dc,sub_71011805DC,92,_ZNK4ksys3res12EntryFactoryINS0_9AIProgramEE18getRuntimeTypeInfoEv
+0x0000007101180638,sub_7101180638,156,_ZN4ksys3res12EntryFactoryINS0_9AIProgramEE12newResource_EPN4sead4HeapEi
+0x00000071011806d4,sub_71011806D4,8,_ZNK4ksys3res12EntryFactoryINS0_9AIProgramEE15getResourceSizeEv
+0x00000071011806dc,sub_71011806DC,8,_ZNK4ksys3res12EntryFactoryINS0_9AIProgramEE20getLoadDataAlignmentEv
+0x00000071011806e4,EntryFactoryBphysics::m0,140,_ZN4ksys3res12EntryFactoryINS0_7PhysicsEED2Ev
+0x0000007101180770,EntryFactoryBphysics::m1,148,_ZN4ksys3res12EntryFactoryINS0_7PhysicsEED0Ev
+0x0000007101180804,EntryFactoryBphysics::m2,132,_ZNK4ksys3res12EntryFactoryINS0_7PhysicsEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101180888,EntryFactoryBphysics::m3,92,_ZNK4ksys3res12EntryFactoryINS0_7PhysicsEE18getRuntimeTypeInfoEv
+0x00000071011808e4,EntryFactoryBphysics::newResource,376,_ZN4ksys3res12EntryFactoryINS0_7PhysicsEE12newResource_EPN4sead4HeapEi
+0x0000007101180a5c,EntryFactoryBphysics::m8,8,_ZNK4ksys3res12EntryFactoryINS0_7PhysicsEE15getResourceSizeEv
+0x0000007101180a64,EntryFactoryBphysics::m9,8,_ZNK4ksys3res12EntryFactoryINS0_7PhysicsEE20getLoadDataAlignmentEv
+0x0000007101180a6c,sub_7101180A6C,140,_ZN4ksys3res12EntryFactoryINS0_8ChemicalEED2Ev
+0x0000007101180af8,sub_7101180AF8,148,_ZN4ksys3res12EntryFactoryINS0_8ChemicalEED0Ev
+0x0000007101180b8c,sub_7101180B8C,132,_ZNK4ksys3res12EntryFactoryINS0_8ChemicalEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101180c10,sub_7101180C10,92,_ZNK4ksys3res12EntryFactoryINS0_8ChemicalEE18getRuntimeTypeInfoEv
+0x0000007101180c6c,sub_7101180C6C,156,_ZN4ksys3res12EntryFactoryINS0_8ChemicalEE12newResource_EPN4sead4HeapEi
+0x0000007101180d08,sub_7101180D08,8,_ZNK4ksys3res12EntryFactoryINS0_8ChemicalEE15getResourceSizeEv
+0x0000007101180d10,sub_7101180D10,8,_ZNK4ksys3res12EntryFactoryINS0_8ChemicalEE20getLoadDataAlignmentEv
+0x0000007101180d18,sub_7101180D18,68,_ZN4ksys3res12EntryFactoryINS0_2ASEED2Ev
+0x0000007101180d5c,sub_7101180D5C,76,_ZN4ksys3res12EntryFactoryINS0_2ASEED0Ev
+0x0000007101180da8,sub_7101180DA8,132,_ZNK4ksys3res12EntryFactoryINS0_2ASEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101180e2c,sub_7101180E2C,92,_ZNK4ksys3res12EntryFactoryINS0_2ASEE18getRuntimeTypeInfoEv
+0x0000007101180e88,sub_7101180E88,156,_ZN4ksys3res12EntryFactoryINS0_2ASEE12newResource_EPN4sead4HeapEi
+0x0000007101180f24,sub_7101180F24,8,_ZNK4ksys3res12EntryFactoryINS0_2ASEE15getResourceSizeEv
+0x0000007101180f2c,sub_7101180F2C,8,_ZNK4ksys3res12EntryFactoryINS0_2ASEE20getLoadDataAlignmentEv
+0x0000007101180f34,sub_7101180F34,68,_ZN4ksys3res12EntryFactoryINS0_13AttClientListEED2Ev
+0x0000007101180f78,sub_7101180F78,76,_ZN4ksys3res12EntryFactoryINS0_13AttClientListEED0Ev
+0x0000007101180fc4,sub_7101180FC4,132,_ZNK4ksys3res12EntryFactoryINS0_13AttClientListEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101181048,sub_7101181048,92,_ZNK4ksys3res12EntryFactoryINS0_13AttClientListEE18getRuntimeTypeInfoEv
+0x00000071011810a4,EntryFactoryBatcllist::newResource_,456,_ZN4ksys3res12EntryFactoryINS0_13AttClientListEE12newResource_EPN4sead4HeapEi
+0x000000710118126c,sub_710118126C,8,_ZNK4ksys3res12EntryFactoryINS0_13AttClientListEE15getResourceSizeEv
+0x0000007101181274,sub_7101181274,8,_ZNK4ksys3res12EntryFactoryINS0_13AttClientListEE20getLoadDataAlignmentEv
+0x000000710118127c,sub_710118127C,500,_ZN4ksys3res9AttClientC2Ev
+0x0000007101181470,sub_7101181470,68,_ZN4ksys3res12EntryFactoryINS0_9AttClientEED2Ev
+0x00000071011814b4,sub_71011814B4,76,_ZN4ksys3res12EntryFactoryINS0_9AttClientEED0Ev
+0x0000007101181500,sub_7101181500,132,_ZNK4ksys3res12EntryFactoryINS0_9AttClientEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101181584,sub_7101181584,92,_ZNK4ksys3res12EntryFactoryINS0_9AttClientEE18getRuntimeTypeInfoEv
+0x00000071011815e0,sub_71011815E0,156,_ZN4ksys3res12EntryFactoryINS0_9AttClientEE12newResource_EPN4sead4HeapEi
+0x000000710118167c,sub_710118167C,8,_ZNK4ksys3res12EntryFactoryINS0_9AttClientEE15getResourceSizeEv
+0x0000007101181684,sub_7101181684,8,_ZNK4ksys3res12EntryFactoryINS0_9AttClientEE20getLoadDataAlignmentEv
+0x000000710118168c,sub_710118168C,88,_ZN4ksys3res12EntryFactoryINS0_10AIScheduleEED2Ev
+0x00000071011816e4,sub_71011816E4,96,_ZN4ksys3res12EntryFactoryINS0_10AIScheduleEED0Ev
+0x0000007101181744,sub_7101181744,132,_ZNK4ksys3res12EntryFactoryINS0_10AIScheduleEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x00000071011817c8,sub_71011817C8,92,_ZNK4ksys3res12EntryFactoryINS0_10AIScheduleEE18getRuntimeTypeInfoEv
+0x0000007101181824,sub_7101181824,372,_ZN4ksys3res12EntryFactoryINS0_10AIScheduleEE12newResource_EPN4sead4HeapEi
+0x0000007101181998,sub_7101181998,8,_ZNK4ksys3res12EntryFactoryINS0_10AIScheduleEE15getResourceSizeEv
+0x00000071011819a0,sub_71011819A0,8,_ZNK4ksys3res12EntryFactoryINS0_10AIScheduleEE20getLoadDataAlignmentEv
+0x00000071011819a8,Bdmgparam::ctor,1808,_ZN4ksys3res11DamageParamC2Ev
+0x00000071011820b8,EntryFactoryBdmgparam::dtor,68,_ZN4ksys3res12EntryFactoryINS0_11DamageParamEED2Ev
+0x00000071011820fc,EntryFactoryBdmgparam::dtorDelete,76,_ZN4ksys3res12EntryFactoryINS0_11DamageParamEED0Ev
+0x0000007101182148,EntryFactoryBdmgparam::rtti1,132,_ZNK4ksys3res12EntryFactoryINS0_11DamageParamEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x00000071011821cc,EntryFactoryBdmgparam::rtti2,92,_ZNK4ksys3res12EntryFactoryINS0_11DamageParamEE18getRuntimeTypeInfoEv
+0x0000007101182228,EntryFactoryBdmgparam::newResource,156,_ZN4ksys3res12EntryFactoryINS0_11DamageParamEE12newResource_EPN4sead4HeapEi
+0x00000071011822c4,EntryFactoryBdmgparam::getResourceSize,8,_ZNK4ksys3res12EntryFactoryINS0_11DamageParamEE15getResourceSizeEv
+0x00000071011822cc,EntryFactoryBdmgparam::getLoadDataAlignment,8,_ZNK4ksys3res12EntryFactoryINS0_11DamageParamEE20getLoadDataAlignmentEv
+0x00000071011822d4,sub_71011822D4,68,_ZN4ksys3res12EntryFactoryINS0_17RagdollConfigListEED2Ev
+0x0000007101182318,sub_7101182318,76,_ZN4ksys3res12EntryFactoryINS0_17RagdollConfigListEED0Ev
+0x0000007101182364,sub_7101182364,132,_ZNK4ksys3res12EntryFactoryINS0_17RagdollConfigListEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x00000071011823e8,sub_71011823E8,92,_ZNK4ksys3res12EntryFactoryINS0_17RagdollConfigListEE18getRuntimeTypeInfoEv
+0x0000007101182444,sub_7101182444,156,_ZN4ksys3res12EntryFactoryINS0_17RagdollConfigListEE12newResource_EPN4sead4HeapEi
+0x00000071011824e0,sub_71011824E0,8,_ZNK4ksys3res12EntryFactoryINS0_17RagdollConfigListEE15getResourceSizeEv
+0x00000071011824e8,sub_71011824E8,8,_ZNK4ksys3res12EntryFactoryINS0_17RagdollConfigListEE20getLoadDataAlignmentEv
+0x00000071011824f0,sub_71011824F0,68,_ZN4ksys3res12EntryFactoryINS0_13RagdollConfigEED2Ev
+0x0000007101182534,sub_7101182534,76,_ZN4ksys3res12EntryFactoryINS0_13RagdollConfigEED0Ev
+0x0000007101182580,sub_7101182580,132,_ZNK4ksys3res12EntryFactoryINS0_13RagdollConfigEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101182604,sub_7101182604,92,_ZNK4ksys3res12EntryFactoryINS0_13RagdollConfigEE18getRuntimeTypeInfoEv
+0x0000007101182660,sub_7101182660,156,_ZN4ksys3res12EntryFactoryINS0_13RagdollConfigEE12newResource_EPN4sead4HeapEi
+0x00000071011826fc,sub_71011826FC,8,_ZNK4ksys3res12EntryFactoryINS0_13RagdollConfigEE15getResourceSizeEv
+0x0000007101182704,sub_7101182704,8,_ZNK4ksys3res12EntryFactoryINS0_13RagdollConfigEE20getLoadDataAlignmentEv
+0x000000710118270c,sub_710118270C,244,_ZN4ksys3res12EntryFactoryINS0_18RagdollBlendWeightEED2Ev
+0x0000007101182800,sub_7101182800,252,_ZN4ksys3res12EntryFactoryINS0_18RagdollBlendWeightEED0Ev
+0x00000071011828fc,sub_71011828FC,132,_ZNK4ksys3res12EntryFactoryINS0_18RagdollBlendWeightEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101182980,sub_7101182980,92,_ZNK4ksys3res12EntryFactoryINS0_18RagdollBlendWeightEE18getRuntimeTypeInfoEv
+0x00000071011829dc,sub_71011829DC,376,_ZN4ksys3res12EntryFactoryINS0_18RagdollBlendWeightEE12newResource_EPN4sead4HeapEi
+0x0000007101182b54,sub_7101182B54,8,_ZNK4ksys3res12EntryFactoryINS0_18RagdollBlendWeightEE15getResourceSizeEv
+0x0000007101182b5c,sub_7101182B5C,8,_ZNK4ksys3res12EntryFactoryINS0_18RagdollBlendWeightEE20getLoadDataAlignmentEv
+0x0000007101182b64,Bawareness::ctor,1260,_ZN4ksys3res9AwarenessC2Ev
+0x0000007101183050,sub_7101183050,372,_ZN4ksys3res12EntryFactoryINS0_9AwarenessEED2Ev
+0x00000071011831c4,sub_71011831C4,380,_ZN4ksys3res12EntryFactoryINS0_9AwarenessEED0Ev
+0x0000007101183340,sub_7101183340,132,_ZNK4ksys3res12EntryFactoryINS0_9AwarenessEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x00000071011833c4,sub_71011833C4,92,_ZNK4ksys3res12EntryFactoryINS0_9AwarenessEE18getRuntimeTypeInfoEv
+0x0000007101183420,sub_7101183420,156,_ZN4ksys3res12EntryFactoryINS0_9AwarenessEE12newResource_EPN4sead4HeapEi
+0x00000071011834bc,sub_71011834BC,8,_ZNK4ksys3res12EntryFactoryINS0_9AwarenessEE15getResourceSizeEv
+0x00000071011834c4,sub_71011834C4,8,_ZNK4ksys3res12EntryFactoryINS0_9AwarenessEE20getLoadDataAlignmentEv
+0x00000071011834cc,EntryFactoryBdrop::m0,160,_ZN4ksys3res12EntryFactoryINS0_4DropEED2Ev
+0x000000710118356c,EntryFactoryBdrop::m1,168,_ZN4ksys3res12EntryFactoryINS0_4DropEED0Ev
+0x0000007101183614,EntryFactoryBdrop::m2,132,_ZNK4ksys3res12EntryFactoryINS0_4DropEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101183698,EntryFactoryBdrop::m3,92,_ZNK4ksys3res12EntryFactoryINS0_4DropEE18getRuntimeTypeInfoEv
+0x00000071011836f4,EntryFactoryBdrop::newResource,432,_ZN4ksys3res12EntryFactoryINS0_4DropEE12newResource_EPN4sead4HeapEi
+0x00000071011838a4,EntryFactoryBdrop::m8,8,_ZNK4ksys3res12EntryFactoryINS0_4DropEE15getResourceSizeEv
+0x00000071011838ac,EntryFactoryBdrop::m9,8,_ZNK4ksys3res12EntryFactoryINS0_4DropEE20getLoadDataAlignmentEv
+0x00000071011838b4,sub_71011838B4,160,_ZN4ksys3res12EntryFactoryINS0_4ShopEED2Ev
+0x0000007101183954,sub_7101183954,168,_ZN4ksys3res12EntryFactoryINS0_4ShopEED0Ev
+0x00000071011839fc,sub_71011839FC,132,_ZNK4ksys3res12EntryFactoryINS0_4ShopEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101183a80,sub_7101183A80,92,_ZNK4ksys3res12EntryFactoryINS0_4ShopEE18getRuntimeTypeInfoEv
+0x0000007101183adc,sub_7101183ADC,432,_ZN4ksys3res12EntryFactoryINS0_4ShopEE12newResource_EPN4sead4HeapEi
+0x0000007101183c8c,sub_7101183C8C,8,_ZNK4ksys3res12EntryFactoryINS0_4ShopEE15getResourceSizeEv
+0x0000007101183c94,sub_7101183C94,8,_ZNK4ksys3res12EntryFactoryINS0_4ShopEE20getLoadDataAlignmentEv
+0x0000007101183c9c,sub_7101183C9C,160,_ZN4ksys3res12EntryFactoryINS0_6RecipeEED2Ev
+0x0000007101183d3c,sub_7101183D3C,168,_ZN4ksys3res12EntryFactoryINS0_6RecipeEED0Ev
+0x0000007101183de4,sub_7101183DE4,132,_ZNK4ksys3res12EntryFactoryINS0_6RecipeEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101183e68,sub_7101183E68,92,_ZNK4ksys3res12EntryFactoryINS0_6RecipeEE18getRuntimeTypeInfoEv
+0x0000007101183ec4,sub_7101183EC4,432,_ZN4ksys3res12EntryFactoryINS0_6RecipeEE12newResource_EPN4sead4HeapEi
+0x0000007101184074,sub_7101184074,8,_ZNK4ksys3res12EntryFactoryINS0_6RecipeEE15getResourceSizeEv
+0x000000710118407c,sub_710118407C,8,_ZNK4ksys3res12EntryFactoryINS0_6RecipeEE20getLoadDataAlignmentEv
+0x0000007101184084,sub_7101184084,372,_ZN4ksys3res3LodC2Ev
+0x00000071011841f8,sub_71011841F8,184,_ZN4ksys3res12EntryFactoryINS0_3LodEED2Ev
+0x00000071011842b0,sub_71011842B0,192,_ZN4ksys3res12EntryFactoryINS0_3LodEED0Ev
+0x0000007101184370,sub_7101184370,132,_ZNK4ksys3res12EntryFactoryINS0_3LodEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x00000071011843f4,sub_71011843F4,92,_ZNK4ksys3res12EntryFactoryINS0_3LodEE18getRuntimeTypeInfoEv
+0x0000007101184450,sub_7101184450,156,_ZN4ksys3res12EntryFactoryINS0_3LodEE12newResource_EPN4sead4HeapEi
+0x00000071011844ec,sub_71011844EC,8,_ZNK4ksys3res12EntryFactoryINS0_3LodEE15getResourceSizeEv
+0x00000071011844f4,sub_71011844F4,8,_ZNK4ksys3res12EntryFactoryINS0_3LodEE20getLoadDataAlignmentEv
+0x00000071011844fc,sub_71011844FC,68,_ZN4ksys3res12EntryFactoryINS0_11BoneControlEED2Ev
+0x0000007101184540,sub_7101184540,76,_ZN4ksys3res12EntryFactoryINS0_11BoneControlEED0Ev
+0x000000710118458c,sub_710118458C,132,_ZNK4ksys3res12EntryFactoryINS0_11BoneControlEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101184610,sub_7101184610,92,_ZNK4ksys3res12EntryFactoryINS0_11BoneControlEE18getRuntimeTypeInfoEv
+0x000000710118466c,sub_710118466C,156,_ZN4ksys3res12EntryFactoryINS0_11BoneControlEE12newResource_EPN4sead4HeapEi
+0x0000007101184708,sub_7101184708,8,_ZNK4ksys3res12EntryFactoryINS0_11BoneControlEE15getResourceSizeEv
+0x0000007101184710,sub_7101184710,8,_ZNK4ksys3res12EntryFactoryINS0_11BoneControlEE20getLoadDataAlignmentEv
+0x0000007101184718,Blifecondition::ctor,436,_ZN4ksys3res13LifeConditionC2Ev
+0x00000071011848cc,sub_71011848CC,192,_ZN4ksys3res12EntryFactoryINS0_13LifeConditionEED2Ev
+0x000000710118498c,sub_710118498C,200,_ZN4ksys3res12EntryFactoryINS0_13LifeConditionEED0Ev
+0x0000007101184a54,sub_7101184A54,132,_ZNK4ksys3res12EntryFactoryINS0_13LifeConditionEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101184ad8,sub_7101184AD8,92,_ZNK4ksys3res12EntryFactoryINS0_13LifeConditionEE18getRuntimeTypeInfoEv
+0x0000007101184b34,sub_7101184B34,156,_ZN4ksys3res12EntryFactoryINS0_13LifeConditionEE12newResource_EPN4sead4HeapEi
+0x0000007101184bd0,sub_7101184BD0,8,_ZNK4ksys3res12EntryFactoryINS0_13LifeConditionEE15getResourceSizeEv
+0x0000007101184bd8,sub_7101184BD8,8,_ZNK4ksys3res12EntryFactoryINS0_13LifeConditionEE20getLoadDataAlignmentEv
+0x0000007101184be0,sub_7101184BE0,68,_ZN4ksys3res12EntryFactoryINS0_4UMiiEED2Ev
+0x0000007101184c24,sub_7101184C24,76,_ZN4ksys3res12EntryFactoryINS0_4UMiiEED0Ev
+0x0000007101184c70,sub_7101184C70,132,_ZNK4ksys3res12EntryFactoryINS0_4UMiiEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101184cf4,sub_7101184CF4,92,_ZNK4ksys3res12EntryFactoryINS0_4UMiiEE18getRuntimeTypeInfoEv
+0x0000007101184d50,sub_7101184D50,156,_ZN4ksys3res12EntryFactoryINS0_4UMiiEE12newResource_EPN4sead4HeapEi
+0x0000007101184dec,sub_7101184DEC,8,_ZNK4ksys3res12EntryFactoryINS0_4UMiiEE15getResourceSizeEv
+0x0000007101184df4,sub_7101184DF4,8,_ZNK4ksys3res12EntryFactoryINS0_4UMiiEE20getLoadDataAlignmentEv
+0x0000007101184dfc,sub_7101184DFC,68,_ZN4ksys3res12EntryFactoryINS0_8AnimInfoEED2Ev
+0x0000007101184e40,sub_7101184E40,76,_ZN4ksys3res12EntryFactoryINS0_8AnimInfoEED0Ev
+0x0000007101184e8c,sub_7101184E8C,132,_ZNK4ksys3res12EntryFactoryINS0_8AnimInfoEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101184f10,sub_7101184F10,92,_ZNK4ksys3res12EntryFactoryINS0_8AnimInfoEE18getRuntimeTypeInfoEv
+0x0000007101184f6c,sub_7101184F6C,156,_ZN4ksys3res12EntryFactoryINS0_8AnimInfoEE12newResource_EPN4sead4HeapEi
+0x0000007101185008,sub_7101185008,8,_ZNK4ksys3res12EntryFactoryINS0_8AnimInfoEE15getResourceSizeEv
+0x0000007101185010,sub_7101185010,8,_ZNK4ksys3res12EntryFactoryINS0_8AnimInfoEE20getLoadDataAlignmentEv
+0x0000007101185018,sub_7101185018,68,_ZN4ksys3res12EntryFactoryIN4sead14DirectResourceEED2Ev
+0x000000710118505c,sub_710118505C,76,_ZN4ksys3res12EntryFactoryIN4sead14DirectResourceEED0Ev
+0x00000071011850a8,sub_71011850A8,132,_ZNK4ksys3res12EntryFactoryIN4sead14DirectResourceEE27checkDerivedRuntimeTypeInfoEPKNS2_15RuntimeTypeInfo9InterfaceE
+0x000000710118512c,sub_710118512C,92,_ZNK4ksys3res12EntryFactoryIN4sead14DirectResourceEE18getRuntimeTypeInfoEv
+0x0000007101185188,sub_7101185188,152,_ZN4ksys3res12EntryFactoryIN4sead14DirectResourceEE12newResource_EPNS2_4HeapEi
+0x0000007101185220,sub_7101185220,8,_ZNK4ksys3res12EntryFactoryIN4sead14DirectResourceEE15getResourceSizeEv
+0x0000007101185228,sub_7101185228,8,_ZNK4ksys3res12EntryFactoryIN4sead14DirectResourceEE20getLoadDataAlignmentEv
+0x0000007101185230,sub_7101185230,88,_ZN4ksys3res12EntryFactoryINS0_15DummyGParamListEED2Ev
+0x0000007101185288,sub_7101185288,96,_ZN4ksys3res12EntryFactoryINS0_15DummyGParamListEED0Ev
+0x00000071011852e8,sub_71011852E8,132,_ZNK4ksys3res12EntryFactoryINS0_15DummyGParamListEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x000000710118536c,sub_710118536C,92,_ZNK4ksys3res12EntryFactoryINS0_15DummyGParamListEE18getRuntimeTypeInfoEv
+0x00000071011853c8,sub_71011853C8,376,_ZN4ksys3res12EntryFactoryINS0_15DummyGParamListEE12newResource_EPN4sead4HeapEi
+0x0000007101185540,sub_7101185540,8,_ZNK4ksys3res12EntryFactoryINS0_15DummyGParamListEE15getResourceSizeEv
+0x0000007101185548,sub_7101185548,8,_ZNK4ksys3res12EntryFactoryINS0_15DummyGParamListEE20getLoadDataAlignmentEv
+0x0000007101185550,sub_7101185550,68,_ZN4ksys3res12EntryFactoryINS0_9ASSettingEED2Ev
+0x0000007101185594,sub_7101185594,76,_ZN4ksys3res12EntryFactoryINS0_9ASSettingEED0Ev
+0x00000071011855e0,sub_71011855E0,132,_ZNK4ksys3res12EntryFactoryINS0_9ASSettingEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
+0x0000007101185664,sub_7101185664,92,_ZNK4ksys3res12EntryFactoryINS0_9ASSettingEE18getRuntimeTypeInfoEv
+0x00000071011856c0,sub_71011856C0,156,_ZN4ksys3res12EntryFactoryINS0_9ASSettingEE12newResource_EPN4sead4HeapEi
+0x000000710118575c,sub_710118575C,8,_ZNK4ksys3res12EntryFactoryINS0_9ASSettingEE15getResourceSizeEv
+0x0000007101185764,sub_7101185764,8,_ZNK4ksys3res12EntryFactoryINS0_9ASSettingEE20getLoadDataAlignmentEv
0x000000710118576c,memsetSomeMemory,36,_ZN4ksys3act10ActorParam19resetDummyResourcesEv
0x0000007101185790,ActorParam::Event::ctor,244,_ZN4ksys3act10ActorParamC1Ev
0x0000007101185884,sub_7101185884,60,_ZN4ksys3act10ActorParamD1Ev
@@ -91271,7 +91271,7 @@
0x000000710118bbf0,ResourceBgparamlist::parse,28,_ZThn632_N4ksys3res10GParamList6parse_EPhmPN4sead4HeapE
0x000000710118bc0c,nullsub_4616,4,_ZN4ksys3res10GParamList9finalize_Ev
0x000000710118bc10,nullsub_4617,4,_ZThn632_N4ksys3res10GParamList9finalize_Ev
-0x000000710118bc14,return_D318,8,
+0x000000710118bc14,return_D318,8,_ZN4ksys3res10GParamList30getResourceFactoryFallbackSizeEv
0x000000710118bc1c,nullsub_4618,4,_ZN4ksys3res15DummyGParamList9doCreate_EPhjPN4sead4HeapE
0x000000710118bc20,nullsub_4619,4,_ZThn632_N4ksys3res15DummyGParamList9doCreate_EPhjPN4sead4HeapE
0x000000710118bc24,sub_710118BC24,24,_ZN4ksys3res15DummyGParamList6parse_EPhmPN4sead4HeapE
@@ -96616,7 +96616,7 @@
0x00000071012f3368,sub_71012F3368,108,_ZN4ksys3act9ASSetting18SingletonDisposer_D0Ev
0x00000071012f33d4,ASSetting::createInstance,152,_ZN4ksys3act9ASSetting14createInstanceEPN4sead4HeapE
0x00000071012f346c,sub_71012F346C,88,_ZN4ksys3act9ASSetting14deleteInstanceEv
-0x00000071012f34c4,ASSetting::init,132,_ZN4ksys3act9ASSetting4initERKN4sead14SafeStringBaseIcEE
+0x00000071012f34c4,ASSetting::init,132,_ZN4ksys3act9ASSetting4initERKN4sead14SafeStringBaseIcEEPNS2_4HeapE
0x00000071012f3548,sub_71012F3548,204,_ZNK4ksys3res17ASFrameCtrlParser27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071012f3614,sub_71012F3614,92,_ZNK4ksys3res17ASFrameCtrlParser18getRuntimeTypeInfoEv
0x00000071012f3670,sub_71012F3670,104,_ZN4ksys3res17ASFrameCtrlParserD2Ev
@@ -96741,7 +96741,7 @@
0x00000071012fa9e8,nullsub_4840,4,_ZThn632_N4ksys3res3Lod9doCreate_EPhjPN4sead4HeapE
0x00000071012fa9ec,sub_71012FA9EC,492,_ZN4ksys3res3Lod6parse_EPhmPN4sead4HeapE
0x00000071012fabd8,sub_71012FABD8,28,_ZThn632_N4ksys3res3Lod6parse_EPhmPN4sead4HeapE
-0x00000071012fabf4,sub_71012FABF4,148,_ZN4ksys3res3LodD1Ev
+0x00000071012fabf4,sub_71012FABF4,148,_ZN4ksys3res3LodD2Ev
0x00000071012fac88,sub_71012FAC88,136,_ZN4ksys3res3LodD0Ev
0x00000071012fad10,sub_71012FAD10,8,_ZN4ksys3res3Lod10ParamIO_m0Ev
0x00000071012fad18,sub_71012FAD18,8,_ZNK4ksys3res3Lod27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
diff --git a/lib/sead b/lib/sead
-Subproject 06cfb492c15377acd734bfca053606455474f8f
+Subproject f329c05ed90e392810f7bf79b0916331586ece5
diff --git a/src/KingSystem/ActorSystem/actASSetting.cpp b/src/KingSystem/ActorSystem/actASSetting.cpp
index 7c3d82e2..2b020cfe 100644
--- a/src/KingSystem/ActorSystem/actASSetting.cpp
+++ b/src/KingSystem/ActorSystem/actASSetting.cpp
@@ -8,7 +8,7 @@ SEAD_SINGLETON_DISPOSER_IMPL(ASSetting)
ASSetting::~ASSetting() = default;
-void ASSetting::init(const sead::SafeString& config_path) {
+void ASSetting::init(const sead::SafeString& config_path, sead::Heap* heap) {
res::LoadRequest req;
req.mRequester = "ASSetting";
req._22 = true;
diff --git a/src/KingSystem/ActorSystem/actASSetting.h b/src/KingSystem/ActorSystem/actASSetting.h
index 399ad201..8c97c85a 100644
--- a/src/KingSystem/ActorSystem/actASSetting.h
+++ b/src/KingSystem/ActorSystem/actASSetting.h
@@ -15,7 +15,7 @@ class ASSetting {
virtual ~ASSetting();
public:
- void init(const sead::SafeString& config_path);
+ void init(const sead::SafeString& config_path, sead::Heap* heap);
res::ASParamParser* getBoneParams(const sead::SafeString& key) const;
private:
diff --git a/src/KingSystem/ActorSystem/actActorParam.h b/src/KingSystem/ActorSystem/actActorParam.h
index 70b399d5..2d395965 100644
--- a/src/KingSystem/ActorSystem/actActorParam.h
+++ b/src/KingSystem/ActorSystem/actActorParam.h
@@ -16,7 +16,7 @@ namespace ksys {
namespace res {
class AIProgram;
class AISchedule;
-class AnimationInfo;
+class AnimInfo;
class ASList;
class AttClientList;
class Awareness;
@@ -107,7 +107,7 @@ public:
res::BoneControl* mBoneControl;
res::LifeCondition* mLifeCondition;
res::UMii* mUMii;
- res::AnimationInfo* mAnimationInfo;
+ res::AnimInfo* mAnimationInfo;
};
sead::SafeArray<void*, 25> mArray;
};
@@ -144,7 +144,7 @@ private:
void setEventSignal();
void waitForEvent();
bool isSignalSet() const;
- void updateResource(const char* name, const char* data, const char* data1);
+ int updateResource(const char* data, const char* data1, const char* data2);
res::Handle* allocHandle();
void freeLastHandle();
diff --git a/src/KingSystem/ActorSystem/actActorParamMgr.cpp b/src/KingSystem/ActorSystem/actActorParamMgr.cpp
index cf595074..9409ea15 100644
--- a/src/KingSystem/ActorSystem/actActorParamMgr.cpp
+++ b/src/KingSystem/ActorSystem/actActorParamMgr.cpp
@@ -2,6 +2,7 @@
#include <prim/seadScopedLock.h>
#include "KingSystem/ActorSystem/actASSetting.h"
#include "KingSystem/ActorSystem/actActorParam.h"
+#include "KingSystem/Resource/resEntryFactory.h"
#include "KingSystem/Resource/resLoadRequest.h"
#include "KingSystem/Resource/resResourceAIProgram.h"
#include "KingSystem/Resource/resResourceAISchedule.h"
@@ -32,6 +33,7 @@
#include "KingSystem/Resource/resSystem.h"
#include "KingSystem/Resource/resTempResourceLoader.h"
#include "KingSystem/Utils/Debug.h"
+#include "KingSystem/Utils/HeapUtil.h"
#include "KingSystem/Utils/ParamIO.h"
namespace ksys::act {
@@ -43,6 +45,108 @@ using User = res::ActorLink::User;
ActorParamMgr::ActorParamMgr() = default;
+void ActorParamMgr::init(sead::Heap* heap, sead::Heap* debug_heap) {
+ mTempHeap = util::DualHeap::create(0x300000, "TmpActorParamMgr", heap, debug_heap,
+ sizeof(void*), sead::Heap::cHeapDirection_Forward, false);
+ mTempHeap->enableLock(true);
+ mDebugHeap = debug_heap;
+
+ mParams = new (mTempHeap) ActorParam[NumParams];
+
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::ActorLink>(1.0, 0x1000),
+ "bxml");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::GParamList>(
+ 1.0, res::GParamList::getResourceFactoryFallbackSize() + 0x800),
+ "bgparamlist");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::ModelList>(2.0), "bmodellist");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::ASList>(0.0, 0x80000),
+ "baslist");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::AIProgram>(1.0, 0x300000),
+ "baiprog");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::Physics>(6.0), "bphysics");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::Chemical>(0.0, 0x2000),
+ "bchemical");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::AS>(0.0, 0x80000), "bas");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::AttClientList>(1.0, 0x2000),
+ "batcllist");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::AttClient>(1.0, 0x2000),
+ "batcl");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::AISchedule>(1.0, 0x800),
+ "baischedule");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::DamageParam>(1.0, 0x20000),
+ "bdmgparam");
+ res::registerEntryFactory(
+ new (mTempHeap) res::EntryFactory<res::RagdollConfigList>(1.0, 0x2000), "brgconfiglist");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::RagdollConfig>(1.0, 0x20000),
+ "brgconfig");
+ res::registerEntryFactory(
+ new (mTempHeap) res::EntryFactory<res::RagdollBlendWeight>(1.0, 0x20000), "brgbw");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::Awareness>, "bawareness");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::Drop>(1.0, 0x5000), "bdrop");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::Shop>(1.0, 0x20000), "bshop");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::Recipe>(1.0, 0x20000),
+ "brecipe");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::Lod>(1.0, 0x20000), "blod");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::BoneControl>(1.0, 0x40000),
+ "bbonectrl");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::LifeCondition>(1.0, 0x20000),
+ "blifecondition");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::UMii>, "bumii");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::AnimInfo>(1.5), "baniminfo");
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<sead::DirectResource>, "byaml");
+
+ {
+ using ResType = ActorParam::ResourceType;
+ res::LoadRequest req;
+ req.mRequester = "tapActorParamMgr";
+
+ getDummyResHandle(ResType::AIProgram).load("Actor/AIProgram/Dummy.baiprog", &req);
+ getDummyResHandle(ResType::ASList).load("Actor/ASList/Dummy.baslist", &req);
+ getDummyResHandle(ResType::AttClientList).load("Actor/AttClientList/Dummy.batcllist", &req);
+ getDummyResHandle(ResType::ModelList).load("Actor/ModelList/Dummy.bmodellist", &req);
+ getDummyResHandle(ResType::Physics).load("Actor/Physics/Dummy.bphysics", &req);
+ getDummyResHandle(ResType::Chemical).load("Actor/Chemical/Dummy.bchemical", &req);
+ getDummyResHandle(ResType::AISchedule).load("Actor/AISchedule/Dummy.baischedule", &req);
+ getDummyResHandle(ResType::EventFlow).load("EventFlow/Dummy.bfevfl", &req);
+ getDummyResHandle(ResType::AS).load("Actor/AS/Dummy.bas", &req);
+ getDummyResHandle(ResType::AttClient).load("Actor/AttClient/Dummy.batcl", &req);
+ getDummyResHandle(ResType::DamageParam).load("Actor/DamageParam/Dummy.bdmgparam", &req);
+ getDummyResHandle(ResType::RagdollConfigList)
+ .load("Actor/RagdollConfigList/Dummy.brgconfiglist", &req);
+ getDummyResHandle(ResType::RagdollConfig).load("Actor/RagdollConfig/Dummy.brgconfig", &req);
+ getDummyResHandle(ResType::RagdollBlendWeight)
+ .load("Actor/RagdollBlendWeight/Dummy.brgbw", &req);
+ getDummyResHandle(ResType::Awareness).load("Actor/Awareness/Dummy.bawareness", &req);
+ getDummyResHandle(ResType::DropTable).load("Actor/DropTable/Dummy.bdrop", &req);
+ getDummyResHandle(ResType::ShopData).load("Actor/ShopData/Dummy.bshop", &req);
+ getDummyResHandle(ResType::Recipe).load("Actor/Recipe/Dummy.brecipe", &req);
+ getDummyResHandle(ResType::Lod).load("Actor/LOD/Dummy.blod", &req);
+ getDummyResHandle(ResType::BoneControl).load("Actor/BoneControl/Dummy.bbonectrl", &req);
+ getDummyResHandle(ResType::LifeCondition)
+ .load("Actor/LifeCondition/Dummy.blifecondition", &req);
+ getDummyResHandle(ResType::UMii).load("Actor/UMii/Dummy.bumii", &req);
+ getDummyResHandle(ResType::AnimationInfo).load("Actor/AnimationInfo/Dummy.baniminfo", &req);
+
+ auto* dummy_gparam_factory = new (mTempHeap) res::EntryFactory<res::DummyGParamList>(
+ 1.0, res::GParamList::getResourceFactoryFallbackSize() + 0x1400);
+ req.mEntryFactory = dummy_gparam_factory;
+ getDummyResHandle(ResType::GParamList)
+ .load("Actor/GeneralParamList/Dummy.bgparamlist", &req);
+ if (dummy_gparam_factory)
+ delete dummy_gparam_factory;
+
+ auto* modellist = static_cast<res::ModelList*>(
+ getDummyResHandle(ResType::ModelList).getResourceUnchecked());
+ modellist->markAsDummy();
+ }
+
+ res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::ASSetting>(0.0, 0x80000),
+ "bassetting");
+ ASSetting::createInstance(mTempHeap);
+ ASSetting::instance()->init("Actor/ASSetting.bassetting", mTempHeap);
+ ActorParam::resetDummyResources();
+}
+
ActorParamMgr::~ActorParamMgr() {
ASSetting::deleteInstance();
}
@@ -93,7 +197,7 @@ ActorParam* ActorParamMgr::loadParam(const char* actor_name, res::Handle* pack_h
ActorParam* param = allocParam(actor_name, &allocated_new);
if (allocated_new) {
- loadFiles(param, mTmpActorParamMgrHeap, pack_handle, x, load_req_c);
+ loadFiles(param, mTempHeap, pack_handle, x, load_req_c);
param->setEventSignal();
} else {
param->waitForEvent();
@@ -157,7 +261,7 @@ ActorParam* ActorParamMgr::loadParamAsync(const char* actor_name, res::Handle* p
return param;
param->deleteResHandles();
- param->allocResHandles(mTmpActorParamMgrHeap, 0, ActorParam::NumResourceTypes + 1);
+ param->allocResHandles(mTempHeap, 0, ActorParam::NumResourceTypes + 1);
param->mActiveBufferIdx = 0;
loadFileAsync<res::ActorLink>(param, Type::ActorLink, "Actor/ActorLink", "xml",
@@ -385,7 +489,7 @@ void ActorParamMgr::loadExtraResAsync(ActorParam* param, res::Handle* pack_handl
const auto num_att = atcllist ? atcllist->getClients().size() : 0;
const auto num_rg = rgconfiglist ? rgconfiglist->getImpulseParams().size() : 0;
- param->allocResHandles(mTmpActorParamMgrHeap, 1, num_as + num_att + num_rg);
+ param->allocResHandles(mTempHeap, 1, num_as + num_att + num_rg);
param->mActiveBufferIdx = 1;
if (aslist) {
@@ -779,6 +883,40 @@ T* ActorParamMgr::loadFile(ActorParam* param, ActorParam::ResourceType type, con
return res;
}
+void ActorParamMgr::syncData(char* data) {
+ auto lock = sead::makeScopedLock(mCS);
+
+ char* data1 = data;
+ while (*data1++ != ' ')
+ continue;
+ data1[-1] = 0;
+
+ while (*data1++ != '[')
+ continue;
+
+ char* data2 = data1;
+ while (*data2++ != ']')
+ continue;
+ data2[-1] = 0;
+
+ for (int i = 0; i < NumParams; ++i) {
+ auto& param = mParams[i];
+ if (param.getActorName().isEmpty())
+ continue;
+
+ param.waitForEvent();
+ const int ret = param.updateResource(data, data1, data2);
+ if (ret == 0)
+ return;
+ if (ret == 1) {
+ sead::FixedSafeString<64> message;
+ message.format("[UpdateResource]%s", data);
+ log(message.cstr());
+ return;
+ }
+ }
+}
+
res::GParamList* ActorParamMgr::getDummyGParamList() const {
return static_cast<res::GParamList*>(
mDummyResources[u32(ActorParam::ResourceType::GParamList)].getResourceUnchecked());
diff --git a/src/KingSystem/ActorSystem/actActorParamMgr.h b/src/KingSystem/ActorSystem/actActorParamMgr.h
index c39c4709..3704dce3 100644
--- a/src/KingSystem/ActorSystem/actActorParamMgr.h
+++ b/src/KingSystem/ActorSystem/actActorParamMgr.h
@@ -34,7 +34,7 @@ public:
DebugMessage& getDebugMessage() { return mDebugMessage; }
sead::Heap* getDebugHeap() const { return mDebugHeap; }
- sead::Heap* getTmpActorParamMgrHeap() const { return mTmpActorParamMgrHeap; }
+ sead::Heap* getTmpActorParamMgrHeap() const { return mTempHeap; }
bool checkPath(const sead::SafeString& path) const;
@@ -95,6 +95,10 @@ private:
void allocExtraResHandles(ActorParam* param, sead::Heap* heap) const;
+ res::Handle& getDummyResHandle(ActorParam::ResourceType type) {
+ return mDummyResources[int(type)];
+ }
+
static constexpr s32 NumParams = 0x400;
sead::TypedBitFlag<Flag> mFlags{};
@@ -103,7 +107,7 @@ private:
void* _e0 = nullptr;
void* _e8 = nullptr;
sead::Heap* mDebugHeap = nullptr;
- sead::Heap* mTmpActorParamMgrHeap = nullptr;
+ sead::Heap* mTempHeap = nullptr;
sead::SafeArray<res::Handle, ActorParam::NumResourceTypes> mDummyResources;
mutable sead::CriticalSection mCS;
};
diff --git a/src/KingSystem/Resource/resResourceAIProgram.cpp b/src/KingSystem/Resource/resResourceAIProgram.cpp
index 2d5ceef4..bce91bf7 100644
--- a/src/KingSystem/Resource/resResourceAIProgram.cpp
+++ b/src/KingSystem/Resource/resResourceAIProgram.cpp
@@ -8,8 +8,6 @@
namespace ksys::res {
-AIProgram::AIProgram() : ParamIO("aiprog", 0) {}
-
AIProgram::~AIProgram() = default;
const sead::Buffer<AIProgram::AIActionDef>&
diff --git a/src/KingSystem/Resource/resResourceAIProgram.h b/src/KingSystem/Resource/resResourceAIProgram.h
index 01421ee7..c7a646bf 100644
--- a/src/KingSystem/Resource/resResourceAIProgram.h
+++ b/src/KingSystem/Resource/resResourceAIProgram.h
@@ -56,7 +56,7 @@ public:
struct QueryDef : Definition {};
KSYS_CHECK_SIZE_NX150(QueryDef, 0x98);
- AIProgram();
+ AIProgram() : ParamIO("aiprog", 0) {}
~AIProgram() override;
const sead::Buffer<AIActionDef>& getActionsOrAIs(act::ai::ActionType type) const;
diff --git a/src/KingSystem/Resource/resResourceAttClient.cpp b/src/KingSystem/Resource/resResourceAttClient.cpp
index 2bbe4f26..5038bfac 100644
--- a/src/KingSystem/Resource/resResourceAttClient.cpp
+++ b/src/KingSystem/Resource/resResourceAttClient.cpp
@@ -1,7 +1,3 @@
#include "KingSystem/Resource/resResourceAttClient.h"
-namespace ksys::res {
-
-AttClient::AttClient() : ParamIO("atcl", 0) {}
-
-} // namespace ksys::res
+namespace ksys::res {} // namespace ksys::res
diff --git a/src/KingSystem/Resource/resResourceAttClient.h b/src/KingSystem/Resource/resResourceAttClient.h
index 808b8c81..6f9ee041 100644
--- a/src/KingSystem/Resource/resResourceAttClient.h
+++ b/src/KingSystem/Resource/resResourceAttClient.h
@@ -16,7 +16,7 @@ class AttClient : public ParamIO, public Resource {
public:
struct Check {};
- AttClient();
+ AttClient() : ParamIO("atcl", 0) {}
~AttClient() override;
act::AttType getAttType() const { return mAttType; }
diff --git a/src/KingSystem/Resource/resResourceAttClientList.h b/src/KingSystem/Resource/resResourceAttClientList.h
index 7ad3ade9..d336fc7a 100644
--- a/src/KingSystem/Resource/resResourceAttClientList.h
+++ b/src/KingSystem/Resource/resResourceAttClientList.h
@@ -16,6 +16,8 @@ class AttClientList : public ParamIO, public Resource {
SEAD_RTTI_OVERRIDE(AttClientList, Resource)
public:
struct AttPos {
+ AttPos();
+
agl::utl::Parameter<sead::SafeString> _0;
agl::utl::Parameter<sead::Vector3f> _28;
agl::utl::Parameter<sead::Vector3f> _50;
diff --git a/src/KingSystem/Resource/resResourceAwareness.cpp b/src/KingSystem/Resource/resResourceAwareness.cpp
index 855d7a9a..9c66ded8 100644
--- a/src/KingSystem/Resource/resResourceAwareness.cpp
+++ b/src/KingSystem/Resource/resResourceAwareness.cpp
@@ -2,8 +2,6 @@
namespace ksys::res {
-Awareness::Awareness() : ParamIO("awareness", 0) {}
-
bool Awareness::parse_(u8* data, size_t, sead::Heap*) {
addObj(&mBasisObj, "Basis");
addObj(&mSightObj, "Sight");
diff --git a/src/KingSystem/Resource/resResourceAwareness.h b/src/KingSystem/Resource/resResourceAwareness.h
index 07c1b86c..80fe11a0 100644
--- a/src/KingSystem/Resource/resResourceAwareness.h
+++ b/src/KingSystem/Resource/resResourceAwareness.h
@@ -10,7 +10,7 @@ namespace ksys::res {
class Awareness : public ParamIO, public Resource {
SEAD_RTTI_OVERRIDE(Awareness, Resource)
public:
- Awareness();
+ Awareness() : ParamIO("awareness", 0) {}
~Awareness() override = default;
bool needsParse() const override { return true; }
diff --git a/src/KingSystem/Resource/resResourceDamageParam.cpp b/src/KingSystem/Resource/resResourceDamageParam.cpp
index 60d52b25..bf051e0f 100644
--- a/src/KingSystem/Resource/resResourceDamageParam.cpp
+++ b/src/KingSystem/Resource/resResourceDamageParam.cpp
@@ -2,8 +2,6 @@
namespace ksys::res {
-DamageParam::DamageParam() : ParamIO("dmgparam", 0) {}
-
bool DamageParam::parse_(u8* data, size_t, sead::Heap* heap) {
mDamageRateBuffer.allocBufferAssert(DamageSource::size(), heap);
mDamageTypeBuffer.allocBufferAssert(DamageSource::size() * DamageSize::size(), heap);
diff --git a/src/KingSystem/Resource/resResourceDamageParam.h b/src/KingSystem/Resource/resResourceDamageParam.h
index a6258094..01ac1971 100644
--- a/src/KingSystem/Resource/resResourceDamageParam.h
+++ b/src/KingSystem/Resource/resResourceDamageParam.h
@@ -11,8 +11,8 @@ class DamageParam : public ParamIO, public Resource {
SEAD_RTTI_OVERRIDE(DamageParam, Resource)
public:
- DamageParam();
- ~DamageParam() = default;
+ DamageParam() : ParamIO("dmgparam", 0) {}
+ ~DamageParam() override = default;
bool needsParse() const override { return true; }
bool ParamIO_m0() override { return false; }
diff --git a/src/KingSystem/Resource/resResourceGParamList.cpp b/src/KingSystem/Resource/resResourceGParamList.cpp
index c59b3d0c..adab0db8 100644
--- a/src/KingSystem/Resource/resResourceGParamList.cpp
+++ b/src/KingSystem/Resource/resResourceGParamList.cpp
@@ -203,6 +203,97 @@ bool GParamList::parse_(u8* data, size_t, sead::Heap* heap) {
void GParamList::finalize_() {}
+static constexpr size_t getResourceFactoryFallbackSizeConst() {
+ size_t size = 0;
+ size += sizeof(GParamListObjectSystem);
+ size += sizeof(GParamListObjectGeneral);
+ size += sizeof(GParamListObjectEnemy);
+ size += sizeof(GParamListObjectEnemyLevel);
+ size += sizeof(GParamListObjectEnemyRace);
+ size += sizeof(GParamListObjectAttackInterval);
+ size += sizeof(GParamListObjectEnemyShown);
+ size += sizeof(GParamListObjectBindBone);
+ size += sizeof(GParamListObjectAttack);
+ size += sizeof(GParamListObjectWeaponCommon);
+ size += sizeof(GParamListObjectWeaponThrow);
+ size += sizeof(GParamListObjectSandworm);
+ size += sizeof(GParamListObjectSmallSword);
+ size += sizeof(GParamListObjectRod);
+ size += sizeof(GParamListObjectLargeSword);
+ size += sizeof(GParamListObjectSpear);
+ size += sizeof(GParamListObjectShield);
+ size += sizeof(GParamListObjectBow);
+ size += sizeof(GParamListObjectWeaponOption);
+ size += sizeof(GParamListObjectMasterSword);
+ size += sizeof(GParamListObjectGuardianMiniWeapon);
+ size += sizeof(GParamListObjectPlayer);
+ size += sizeof(GParamListObjectCamera);
+ size += sizeof(GParamListObjectGrab);
+ size += sizeof(GParamListObjectArmor);
+ size += sizeof(GParamListObjectArmorEffect);
+ size += sizeof(GParamListObjectArmorHead);
+ size += sizeof(GParamListObjectArmorUpper);
+ size += sizeof(GParamListObjectShiekerStone);
+ size += sizeof(GParamListObjectSeriesArmor);
+ size += sizeof(GParamListObjectLiftable);
+ size += sizeof(GParamListObjectItem);
+ size += sizeof(GParamListObjectRupee);
+ size += sizeof(GParamListObjectArrow);
+ size += sizeof(GParamListObjectBullet);
+ size += sizeof(GParamListObjectCureItem);
+ size += sizeof(GParamListObjectCookSpice);
+ size += sizeof(GParamListObjectLumberjackTree);
+ size += sizeof(GParamListObjectNpc);
+ size += sizeof(GParamListObjectNpcEquipment);
+ size += sizeof(GParamListObjectZora);
+ size += sizeof(GParamListObjectTraveler);
+ size += sizeof(GParamListObjectPrey);
+ size += sizeof(GParamListObjectAnimalFollowOffset);
+ size += sizeof(GParamListObjectExtendedEntity);
+ size += sizeof(GParamListObjectBindActor);
+ size += sizeof(GParamListObjectEatTarget);
+ size += sizeof(GParamListObjectAnimalUnit);
+ size += sizeof(GParamListObjectInsect);
+ size += sizeof(GParamListObjectFish);
+ size += sizeof(GParamListObjectRope);
+ size += sizeof(GParamListObjectHorse);
+ size += sizeof(GParamListObjectHorseUnit);
+ size += sizeof(GParamListObjectHorseObject);
+ size += sizeof(GParamListObjectHorseRider);
+ size += sizeof(GParamListObjectHorseCreator);
+ size += sizeof(GParamListObjectGiantArmorSlot);
+ size += sizeof(GParamListObjectGiantArmor);
+ size += sizeof(GParamListObjectGuardian);
+ size += sizeof(GParamListObjectMonsterShop);
+ size += sizeof(GParamListObjectSwarm);
+ size += sizeof(GParamListObjectGelEnemy);
+ size += sizeof(GParamListObjectNest);
+ size += sizeof(GParamListObjectWizzrobe);
+ size += sizeof(GParamListObjectStalEnemy);
+ size += sizeof(GParamListObjectGuardianMini);
+ size += sizeof(GParamListObjectClothReaction);
+ size += sizeof(GParamListObjectGlobal);
+ size += sizeof(GParamListObjectBeam);
+ size += sizeof(GParamListObjectAutoGen);
+ size += sizeof(GParamListObjectChemicalType);
+ size += sizeof(GParamListObjectGolem);
+ size += sizeof(GParamListObjectHorseTargetedInfo);
+ size += sizeof(GParamListObjectWolfLink);
+ size += sizeof(GParamListObjectEvent);
+ size += sizeof(GParamListObjectGolemIK);
+ size += sizeof(GParamListObjectPictureBook);
+ size += sizeof(GParamListObjectAirWall);
+ size += sizeof(GParamListObjectMotorcycle);
+ size += sizeof(GParamList);
+ return size;
+}
+
+u32 GParamList::getResourceFactoryFallbackSize() {
+ constexpr size_t size = getResourceFactoryFallbackSizeConst();
+ static_assert(size == static_cast<u32>(size));
+ return static_cast<u32>(size);
+}
+
void DummyGParamList::doCreate_(u8*, u32, sead::Heap*) {}
bool DummyGParamList::parse_(u8* data, size_t size, sead::Heap* heap) {
diff --git a/src/KingSystem/Resource/resResourceGParamList.h b/src/KingSystem/Resource/resResourceGParamList.h
index 5294575d..39e8f6ec 100644
--- a/src/KingSystem/Resource/resResourceGParamList.h
+++ b/src/KingSystem/Resource/resResourceGParamList.h
@@ -19,6 +19,8 @@ public:
void doCreate_(u8* buffer, u32 bufferSize, sead::Heap* heap) override;
bool needsParse() const override { return true; }
+ static u32 getResourceFactoryFallbackSize();
+
template <GParamListObjType Type>
const auto* get() const {
using Traits = GParamListObjTypeTraits<Type>;
diff --git a/src/KingSystem/Resource/resResourceLifeCondition.cpp b/src/KingSystem/Resource/resResourceLifeCondition.cpp
index c32f7e02..09a1bd91 100644
--- a/src/KingSystem/Resource/resResourceLifeCondition.cpp
+++ b/src/KingSystem/Resource/resResourceLifeCondition.cpp
@@ -2,8 +2,6 @@
namespace ksys::res {
-LifeCondition::LifeCondition() : ParamIO("lifecondition", 0) {}
-
// NON_MATCHING: two instructions swapped
bool LifeCondition::parse_(u8* data, size_t, sead::Heap* heap) {
if (!data)
diff --git a/src/KingSystem/Resource/resResourceLifeCondition.h b/src/KingSystem/Resource/resResourceLifeCondition.h
index 46bc3440..f3107f5f 100644
--- a/src/KingSystem/Resource/resResourceLifeCondition.h
+++ b/src/KingSystem/Resource/resResourceLifeCondition.h
@@ -11,7 +11,7 @@ namespace ksys::res {
class LifeCondition : public ParamIO, public Resource {
SEAD_RTTI_OVERRIDE(LifeCondition, Resource)
public:
- LifeCondition();
+ LifeCondition() : ParamIO("lifecondition", 0) {}
~LifeCondition() override = default;
bool needsParse() const override { return true; }
diff --git a/src/KingSystem/Resource/resResourceLod.cpp b/src/KingSystem/Resource/resResourceLod.cpp
index 6ed71226..baa7545f 100644
--- a/src/KingSystem/Resource/resResourceLod.cpp
+++ b/src/KingSystem/Resource/resResourceLod.cpp
@@ -2,10 +2,6 @@
namespace ksys::res {
-Lod::Lod() : ParamIO("lod", 0) {}
-
-Lod::~Lod() = default;
-
bool Lod::parse_(u8* data, size_t, sead::Heap*) {
mDisableOutScreenCalcStop.init(false, "DisableOutScreenCalcStop", "", &mHeader);
mDisableXLinkSkip.init(false, "DisableXLinkSkip", "", &mHeader);
diff --git a/src/KingSystem/Resource/resResourceLod.h b/src/KingSystem/Resource/resResourceLod.h
index ca933f5c..059ef0cc 100644
--- a/src/KingSystem/Resource/resResourceLod.h
+++ b/src/KingSystem/Resource/resResourceLod.h
@@ -11,8 +11,8 @@ namespace ksys::res {
class Lod : public ParamIO, public Resource {
SEAD_RTTI_OVERRIDE(Lod, Resource)
public:
- Lod();
- ~Lod() override;
+ Lod() : ParamIO("lod", 0) {}
+ ~Lod() override = default;
bool ParamIO_m0() override { return true; }
void doCreate_(u8*, u32, sead::Heap*) override {}
diff --git a/src/KingSystem/Resource/resResourceModelList.h b/src/KingSystem/Resource/resResourceModelList.h
index d614ade5..1d399f46 100644
--- a/src/KingSystem/Resource/resResourceModelList.h
+++ b/src/KingSystem/Resource/resResourceModelList.h
@@ -11,7 +11,6 @@
namespace ksys::res {
-// FIXME: incomplete
class ModelList : public ParamIO, public Resource {
SEAD_RTTI_OVERRIDE(ModelList, Resource)
public:
@@ -137,7 +136,9 @@ public:
const Attention& getAttention() const { return mAttention.ref(); }
const sead::Buffer<ModelData>& getModelData() const { return mModelData; }
const sead::Buffer<AnmTarget>& getAnmTargets() const { return mAnmTargets; }
- bool is7C8() const { return _7c8; }
+
+ bool isDummy() const { return mIsDummy; }
+ void markAsDummy() { mIsDummy = true; }
int getNumAnmTargets() const;
void getModelDataInfo(ModelDataInfo* info) const;
@@ -161,7 +162,7 @@ private:
agl::utl::ParameterList mModelDataList;
sead::Buffer<AnmTarget> mAnmTargets;
agl::utl::ParameterList mAnmTargetList;
- bool _7c8 = false;
+ bool mIsDummy = false;
};
KSYS_CHECK_SIZE_NX150(ModelList, 0x7d0);