From c7a4a45fc14fdfa90d8f8b8e3644091ab8d822cc Mon Sep 17 00:00:00 2001 From: A-xeset Date: Mon, 29 Dec 2025 11:50:08 +0700 Subject: [PATCH 01/12] cSpeciesProfile update --- .../Spore/Simulator/cSpeciesProfile.h | 171 +++++++++--------- 1 file changed, 90 insertions(+), 81 deletions(-) diff --git a/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h b/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h index 0d61fbfb..f0766bc7 100644 --- a/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h +++ b/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h @@ -52,109 +52,118 @@ namespace Simulator /* 00h */ UnkStructPool field_0; /* 4E0h */ ResourceKey field_4E0[3]; /* 504h */ ResourceKey mSpeciesKey; //TODO this is the main key? - /* 510h */ ResourceKey field_510; + /* 510h */ ResourceKey mBabyKey; /* 51Ch */ eastl::string16 mName; /* 52Ch */ eastl::string16 field_52C; - /* 53Ch */ ResourceKey mProfileSeq; - /* 548h */ float field_548; - /* 54Ch */ float field_54C; - /* 550h */ float field_550; - /* 554h */ char padding_554[0x56C - 0x554]; - /* 56Ch */ float field_56C; // 100.0 + /* 53Ch */ int field_53C; + /* 540h */ int mCost; + /* 544h */ int field_544; + /* 548h */ float mCreatureAbilityJumping; + /* 54Ch */ float mCreatureAbilityGliding; + /* 550h */ float mCreatureAbilityFlapping; + /* 554h */ Math::Vector3 mBoundingBoxUpper; + /* 560h */ Math::Vector3 mBoundingBoxLower; + /* 56Ch */ float mAdditionalHealth; // 100.0 /* 570h */ float field_570; // 200.0 - /* 574h */ float field_574; - /* 578h */ bool field_578; - /* 57Ch */ int field_57C; + /* 574h */ float field_574; //CreatureSize? + /* 578h */ bool mHasPlantRoot; + /* 57Ch */ ModelTypes mModelType; /* 580h */ int field_580; // not initialized /* 584h */ int field_584; // not initialized /* 588h */ int field_588; // 1 - /* 58Ch */ float field_58C; - /* 590h */ float field_590; - /* 594h */ float field_594; - /* 598h */ float field_598; - /* 59Ch */ float field_59C; - /* 5A0h */ float field_5A0; - /* 5A4h */ float field_5A4; + /* 58Ch */ float mFootCount; + /* 590h */ float mGrasperCount; + /* 594h */ float mMouthCount; + /* 598h */ float mEarCount; + /* 59Ch */ float mEyeCount; + /* 5A0h */ float mCuteness1; + /* 5A4h */ float mCuteness2; /* 5A8h */ float field_5A8; - /* 5ACh */ float field_5AC; - /* 5B0h */ float field_5B0; - /* 5B4h */ float field_5B4; - /* 5B8h */ float field_5B8; - /* 5BCh */ float field_5BC; - /* 5C0h */ float field_5C0; - /* 5C4h */ float field_5C4; - /* 5C8h */ int field_5C8; // 5000 - /* 5CCh */ float field_5CC; // 1.0 - /* 5D0h */ int field_5D0; // 2 - /* 5D4h */ int field_5D4; - /* 5D8h */ int field_5D8; - /* 5DCh */ int field_5DC; - /* 5E0h */ int field_5E0; - /* 5E4h */ int field_5E4; - /* 5E8h */ int field_5E8; - /* 5ECh */ int field_5EC; - /* 5F0h */ int field_5F0; - /* 5F4h */ int field_5F4; + /* 5ACh */ float mSocialSum; + /* 5B0h */ float mAttackSum; + /* 5B4h */ float mMaxAttackLevel; + /* 5B8h */ float mMaxSocialLevel; + /* 5BCh */ float mMeanness; + /* 5C0h */ float field_5C0; //itemUnlockLevel? + /* 5C4h */ float field_5C4; //itemUnlockLevel? + /* 5C8h */ int mDuration; // 5000 + /* 5CCh */ float field_5CC; // 1.0 cCreatureAbility->mDuration / cCreatureAbility->mRecharge + /* 5D0h */ int mSprintBuff; // 2 + /* 5D4h */ int mBiteLevel; + /* 5D8h */ int mChargeLevel; + /* 5DCh */ int mSpitLevel; + /* 5E0h */ int mStrikeLevel; + /* 5E4h */ int mSingLevel; + /* 5E8h */ int mDanceLevel; + /* 5ECh */ int mCharmLevel; + /* 5F0h */ int mPoseLevel; + /* 5F4h */ int mStealthLevel; /* 5F8h */ int field_5F8; - /* 5FCh */ int field_5FC; - /* 600h */ int field_600; - /* 604h */ int field_604; - /* 608h */ int field_608; - /* 60Ch */ int field_60C; - /* 610h */ int field_610; - /* 614h */ int field_614; - /* 618h */ int field_618; // not initialized - /* 61Ch */ int field_61C; // flight level? - /* 620h */ char padding_620[0x640 - 0x620]; + /* 5FCh */ int mMatingCall; + /* 600h */ int mCreatureSpeedLevel; + /* 604h */ int mHealthLevel; + /* 608h */ int mMouthCarnivorous; + /* 60Ch */ int mMouthHerbivorous; + /* 610h */ int mJumpLevel; + /* 614h */ int mSprintLevel; + /* 618h */ int mSight; //Sense + /* 61Ch */ int mGlideLevel; + /* 620h */ int field_620; + /* 624h */ int field_624; + /* 628h */ int mTribeAttackLevel; + /* 62Ch */ int mTribeSocialLevel; + /* 630h */ int mTribeArmorLevel; + /* 634h */ int mTribeGatherLevel; + /* 638h */ int mTribeFishingLevel; + /* 63Ch */ float mDamage; /* 640h */ float mEnergyRecoveryRate; /* 644h */ float mMaxEnergy; - /* 648h */ int field_648; - /* 64Ch */ int field_64C; - /* 650h */ int field_650; - /* 654h */ int field_654; - /* 658h */ int field_658; - /* 65Ch */ int field_65C; - /* 660h */ int field_660; - /* 664h */ int field_664; - /* 668h */ int field_668; + /* 648h */ int mShieldGenerator; + /* 64Ch */ int mMissileLevel; + /* 650h */ int mEnergyBladeLevel; + /* 654h */ int mHoloCharmLevel; + /* 658h */ int mLightningSwordLevel; + /* 65Ch */ int mPulseGunLevel; + /* 660h */ int mBattleArmor; + /* 664h */ int mPoweredArmor; + /* 668h */ int mAbsorptionShield; /* 66Ch */ float mHealthRecoveryRate; - /* 670h */ int field_670; - /* 674h */ int field_674; - /* 678h */ int field_678; - /* 67Ch */ int field_67C; - /* 680h */ int field_680; - /* 684h */ int field_684; - /* 688h */ int field_688; - /* 68Ch */ int field_68C; - /* 690h */ int field_690; - /* 694h */ int field_694; - /* 698h */ int field_698; - /* 69Ch */ int field_69C; - /* 6A0h */ int field_6A0; - /* 6A4h */ int field_6A4; - /* 6A8h */ int field_6A8; - /* 6ACh */ int field_6AC; - /* 6B0h */ float field_6B0; + /* 670h */ int mBonusHealth; + /* 674h */ int mSummonSwarm; + /* 678h */ int mMindMeld; + /* 67Ch */ int mPoisonBlade; + /* 680h */ int mFreeze; + /* 684h */ int mGracefulWaltz; + /* 688h */ int mHarmoniousSong; + /* 68Ch */ int mRoyalCharm; + /* 690h */ int mRadiantPose; + /* 694h */ int mSprintBurst; + /* 698h */ int mHover; + /* 69Ch */ int mStealthField; + /* 6A0h */ int mJumpJet; + /* 6A4h */ int mInspiringSongLevel; + /* 6A8h */ int mStunningDanceLevel; + /* 6ACh */ int mConfettiPoseLevel; + /* 6B0h */ float mAdventurerEnergyCost; /* 6B4h */ int field_6B4; - /* 6B8h */ eastl::vector field_6B8; - /* 6CCh */ bool field_6CC; - /* 6D0h */ int field_6D0; + /* 6B8h */ eastl::vector mFruits; //unk type + /* 6CCh */ bool mIsGameMode; //true if cSpeciesProfile was called in gameMode, false otherwise + /* 6D0h */ uint32_t mFootWeaponOrMouthType; /* 6D4h */ eastl::fixed_vector mAbilities; //TODO abilities /* 73Ch */ eastl::fixed_vector field_73C; // maybe food-related abilities? /* 7A4h */ eastl::fixed_vector field_7A4; /* 80Ch */ bool field_80C; /* 80Dh */ bool field_80D; - /* 810h */ eastl::fixed_vector field_810; - /* 878h */ eastl::fixed_vector field_878; - /* 8E0h */ eastl::fixed_vector field_8E0; - /* 948h */ eastl::fixed_vector field_948; - /* 9B0h */ eastl::fixed_vector field_9B0; + /* 810h */ eastl::fixed_vector mFruitIndexes; + /* 878h */ eastl::fixed_vector mMouthIndexes; + /* 8E0h */ eastl::fixed_vector mGraspersIndexes; + /* 948h */ eastl::fixed_vector mMouthsIndexes2; + /* 9B0h */ eastl::fixed_vector mGraspersIndexes2; }; ASSERT_SIZE(cSpeciesProfile, 0xA18); namespace Addresses(cSpeciesProfile) { DeclareAddress(GetSpeciesName); // 0x4DA1C0 0x4DA390 - DeclareAddress(GetSpeciesName); // 0x4DA1C0 0x4DA390 } } \ No newline at end of file From fcec101cfe398d20b715c65faf1e00cd6260669a Mon Sep 17 00:00:00 2001 From: A-xeset Date: Mon, 29 Dec 2025 18:02:49 +0700 Subject: [PATCH 02/12] Add enum Ability types and rename cSpeciesProfile variables --- .../Spore/Simulator/cCreatureAbility.h | 73 +++++++++++++++++++ .../Spore/Simulator/cSpeciesProfile.h | 20 ++--- 2 files changed, 83 insertions(+), 10 deletions(-) diff --git a/Spore ModAPI/Spore/Simulator/cCreatureAbility.h b/Spore ModAPI/Spore/Simulator/cCreatureAbility.h index a3ea5228..a77867e1 100644 --- a/Spore ModAPI/Spore/Simulator/cCreatureAbility.h +++ b/Spore ModAPI/Spore/Simulator/cCreatureAbility.h @@ -36,6 +36,79 @@ namespace Simulator static bool Parse(cCreatureAbility* pAbility, App::PropertyList* pPropList); + enum AbilityTypes + { + SocialHorn = 5, + SocialMaraca = 6, + SocialDidgeridoo = 7, + AutoAttack = 8, + Stealth = 13, + Speed = 14, + Block = 15, + MatingCall = 16, + Jump = 17, + Glide = 18, + Grasper = 19, + Ration = 27, + Scan = 29, + Bite = 30, + Charge = 31, + Spit = 32, + Strike = 33, + Dance = 34, + Pose = 35, + Charm = 36, + Sing = 37, + Sprint = 39, + Sight = 40, + Stomp = 41, + TribeAttackUnk = 42, + TribeSpear = 43, + TribeAttack = 44, + TribeSocial = 45, + TribeArmor = 46, + TribeGathering = 47, + TribeFishing = 48, + CRG_SuperPower_Carnivore = 49, + CRG_SuperPower_Herbivore = 50, + CRG_SuperPower_Omnivore = 51, + TRG_SuperPower_Carnivore = 52, + TRG_SuperPower_Herbivore = 53, + TRG_SuperPower_Omnivore = 54, + TRG_SuperPower_Aggressive = 55, + TRG_SuperPower_Social = 56, + TRG_SuperPower_Versatile = 57, + TribeTorch = 58, + TribeAxe = 59, + EnergyRegen = 60, + Missile = 61, + EnergyBlade = 62, + ShieldGenerator = 63, + HoloCharm = 64, + LightningSword = 65, + PulseGun = 66, + BattleArmor = 67, + PoweredArmor = 68, + EnergyAbsorption = 69, + HealthRegen = 70, + SummonSwarm = 72, + MindMeld = 73, + PoisonBlade = 74, + Freeze = 75, + GracefulWaltz = 76, + HarmoniousSong = 77, + RoyalCharm = 78, + RadiantPose = 79, + SprintBurst = 80, + Hover = 81, + StealthField = 82, + JumpJet = 83, + InspiringSong = 84, + StunningDance = 85, + ConfettiPose = 86, + EnergyStorage = 87, + }; + //PLACEHOLDER loc_D1E9D0 uses ability type? /// Returns the animation ID at the given index, or 0x4330667 if there are no animation IDs in this ability or diff --git a/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h b/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h index f0766bc7..6d91ffad 100644 --- a/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h +++ b/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h @@ -71,23 +71,23 @@ namespace Simulator /* 580h */ int field_580; // not initialized /* 584h */ int field_584; // not initialized /* 588h */ int field_588; // 1 - /* 58Ch */ float mFootCount; - /* 590h */ float mGrasperCount; - /* 594h */ float mMouthCount; - /* 598h */ float mEarCount; - /* 59Ch */ float mEyeCount; + /* 58Ch */ float mNumFoot; + /* 590h */ float mNumGrasper; + /* 594h */ float mNumMouth; + /* 598h */ float mNumEar; + /* 59Ch */ float mNumEye; /* 5A0h */ float mCuteness1; /* 5A4h */ float mCuteness2; /* 5A8h */ float field_5A8; /* 5ACh */ float mSocialSum; /* 5B0h */ float mAttackSum; - /* 5B4h */ float mMaxAttackLevel; - /* 5B8h */ float mMaxSocialLevel; + /* 5B4h */ float mAttackMaxLevel; + /* 5B8h */ float mSocialMaxLevel; /* 5BCh */ float mMeanness; /* 5C0h */ float field_5C0; //itemUnlockLevel? /* 5C4h */ float field_5C4; //itemUnlockLevel? /* 5C8h */ int mDuration; // 5000 - /* 5CCh */ float field_5CC; // 1.0 cCreatureAbility->mDuration / cCreatureAbility->mRecharge + /* 5CCh */ float mRefillAbilityBars; // 1.0 cCreatureAbility->mDuration / cCreatureAbility->mRecharge /* 5D0h */ int mSprintBuff; // 2 /* 5D4h */ int mBiteLevel; /* 5D8h */ int mChargeLevel; @@ -149,8 +149,8 @@ namespace Simulator /* 6B8h */ eastl::vector mFruits; //unk type /* 6CCh */ bool mIsGameMode; //true if cSpeciesProfile was called in gameMode, false otherwise /* 6D0h */ uint32_t mFootWeaponOrMouthType; - /* 6D4h */ eastl::fixed_vector mAbilities; //TODO abilities - /* 73Ch */ eastl::fixed_vector field_73C; // maybe food-related abilities? + /* 6D4h */ eastl::fixed_vector mActiveAbilities; //TODO abilities + /* 73Ch */ eastl::fixed_vector mPassiveAbilities; /* 7A4h */ eastl::fixed_vector field_7A4; /* 80Ch */ bool field_80C; /* 80Dh */ bool field_80D; From d180c42e8f80229a01edc8d4d1eaa7cfe45055d6 Mon Sep 17 00:00:00 2001 From: A-xeset Date: Mon, 29 Dec 2025 20:33:26 +0700 Subject: [PATCH 03/12] Update cSpeciesProfile and SimulatorEnums --- Spore ModAPI/Spore/Simulator/SimulatorEnums.h | 6 +++--- Spore ModAPI/Spore/Simulator/cSpeciesProfile.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Spore ModAPI/Spore/Simulator/SimulatorEnums.h b/Spore ModAPI/Spore/Simulator/SimulatorEnums.h index 62c68991..952c1b45 100644 --- a/Spore ModAPI/Spore/Simulator/SimulatorEnums.h +++ b/Spore ModAPI/Spore/Simulator/SimulatorEnums.h @@ -354,7 +354,7 @@ namespace Simulator enum SpaceToolTarget { /* shr 0 */ kTargetAnimal = 1, - /* shr 1 */ kTargetA13ABC9F = 2, + /* shr 1 */ kTargetCitizen = 2, /* shr 2 */ kTargetUFO = 4, /* shr 3 */ kTargetVehicle = 8, /* shr 4 */ kTargetTurret = 0x10, @@ -362,8 +362,8 @@ namespace Simulator /* shr 6 */ kTargetBuilding = 0x40, /* shr 7 */ kTargetWorld = 0x80, /* shr 8 */ kTargetAir = 0x100, - /* shr 9 */ kTargetA6663355 = 0x200, - /* shr 10 */ //4BF0FA5A = 0x400 + /* shr 9 */ kTargetEnemyOnly = 0x200, + /* shr 10 */ kTargetColonyObject = 0x400 }; /// Different types of actions that a tribe can carry, used by Simulator::cTribePlanner. diff --git a/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h b/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h index 6d91ffad..6af589fb 100644 --- a/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h +++ b/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h @@ -50,8 +50,8 @@ namespace Simulator ASSERT_SIZE(UnkStructPool, 0x4E0); /* 00h */ UnkStructPool field_0; - /* 4E0h */ ResourceKey field_4E0[3]; - /* 504h */ ResourceKey mSpeciesKey; //TODO this is the main key? + /* 4E0h */ ResourceKey field_4E0[3]; //what is this? + /* 504h */ ResourceKey mSpeciesKey; /* 510h */ ResourceKey mBabyKey; /* 51Ch */ eastl::string16 mName; /* 52Ch */ eastl::string16 field_52C; @@ -151,7 +151,7 @@ namespace Simulator /* 6D0h */ uint32_t mFootWeaponOrMouthType; /* 6D4h */ eastl::fixed_vector mActiveAbilities; //TODO abilities /* 73Ch */ eastl::fixed_vector mPassiveAbilities; - /* 7A4h */ eastl::fixed_vector field_7A4; + /* 7A4h */ eastl::fixed_vector mSocialAbilityIndexes; /* 80Ch */ bool field_80C; /* 80Dh */ bool field_80D; /* 810h */ eastl::fixed_vector mFruitIndexes; From 40af39d4c592ee278f6145be93ab3f3a477e2226 Mon Sep 17 00:00:00 2001 From: A-xeset Date: Mon, 29 Dec 2025 20:41:49 +0700 Subject: [PATCH 04/12] edit AbilityTypes names SocialHorn, SocialMaraca and SocialDidgeridoo to TribeHorn, TribeMaraca and TribeDidgeroo --- .../Spore/Simulator/cCreatureAbility.h | 138 +++++++++--------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/Spore ModAPI/Spore/Simulator/cCreatureAbility.h b/Spore ModAPI/Spore/Simulator/cCreatureAbility.h index a77867e1..627dd07c 100644 --- a/Spore ModAPI/Spore/Simulator/cCreatureAbility.h +++ b/Spore ModAPI/Spore/Simulator/cCreatureAbility.h @@ -38,75 +38,75 @@ namespace Simulator enum AbilityTypes { - SocialHorn = 5, - SocialMaraca = 6, - SocialDidgeridoo = 7, - AutoAttack = 8, - Stealth = 13, - Speed = 14, - Block = 15, - MatingCall = 16, - Jump = 17, - Glide = 18, - Grasper = 19, - Ration = 27, - Scan = 29, - Bite = 30, - Charge = 31, - Spit = 32, - Strike = 33, - Dance = 34, - Pose = 35, - Charm = 36, - Sing = 37, - Sprint = 39, - Sight = 40, - Stomp = 41, - TribeAttackUnk = 42, - TribeSpear = 43, - TribeAttack = 44, - TribeSocial = 45, - TribeArmor = 46, - TribeGathering = 47, - TribeFishing = 48, - CRG_SuperPower_Carnivore = 49, - CRG_SuperPower_Herbivore = 50, - CRG_SuperPower_Omnivore = 51, - TRG_SuperPower_Carnivore = 52, - TRG_SuperPower_Herbivore = 53, - TRG_SuperPower_Omnivore = 54, - TRG_SuperPower_Aggressive = 55, - TRG_SuperPower_Social = 56, - TRG_SuperPower_Versatile = 57, - TribeTorch = 58, - TribeAxe = 59, - EnergyRegen = 60, - Missile = 61, - EnergyBlade = 62, - ShieldGenerator = 63, - HoloCharm = 64, - LightningSword = 65, - PulseGun = 66, - BattleArmor = 67, - PoweredArmor = 68, - EnergyAbsorption = 69, - HealthRegen = 70, - SummonSwarm = 72, - MindMeld = 73, - PoisonBlade = 74, - Freeze = 75, - GracefulWaltz = 76, - HarmoniousSong = 77, - RoyalCharm = 78, - RadiantPose = 79, - SprintBurst = 80, - Hover = 81, - StealthField = 82, - JumpJet = 83, - InspiringSong = 84, - StunningDance = 85, - ConfettiPose = 86, - EnergyStorage = 87, + kTribeHorn = 5, + kTribeMaraca = 6, + kTribeDidgeridoo = 7, + kAutoAttack = 8, + kStealth = 13, + kSpeed = 14, + kBlock = 15, + kMatingCall = 16, + kJump = 17, + kGlide = 18, + kGrasper = 19, + kRation = 27, + kScan = 29, + kBite = 30, + kCharge = 31, + kSpit = 32, + kStrike = 33, + kDance = 34, + kPose = 35, + kCharm = 36, + kSing = 37, + kSprint = 39, + kSight = 40, + kStomp = 41, + kTribeAttackUnk = 42, + kTribeSpear = 43, + kTribeAttack = 44, + kTribeSocial = 45, + kTribeArmor = 46, + kTribeGathering = 47, + kTribeFishing = 48, + kCRG_SuperPower_Carnivore = 49, + kCRG_SuperPower_Herbivore = 50, + kCRG_SuperPower_Omnivore = 51, + kTRG_SuperPower_Carnivore = 52, + kTRG_SuperPower_Herbivore = 53, + kTRG_SuperPower_Omnivore = 54, + kTRG_SuperPower_Aggressive = 55, + kTRG_SuperPower_Social = 56, + kTRG_SuperPower_Versatile = 57, + kTribeTorch = 58, + kTribeAxe = 59, + kEnergyRegen = 60, + kMissile = 61, + kEnergyBlade = 62, + kShieldGenerator = 63, + kHoloCharm = 64, + kLightningSword = 65, + kPulseGun = 66, + kBattleArmor = 67, + kPoweredArmor = 68, + kEnergyAbsorption = 69, + kHealthRegen = 70, + kSummonSwarm = 72, + kMindMeld = 73, + kPoisonBlade = 74, + kFreeze = 75, + kGracefulWaltz = 76, + kHarmoniousSong = 77, + kRoyalCharm = 78, + kRadiantPose = 79, + kSprintBurst = 80, + kHover = 81, + kStealthField = 82, + kJumpJet = 83, + kInspiringSong = 84, + kStunningDance = 85, + kConfettiPose = 86, + kEnergyStorage = 87, }; //PLACEHOLDER loc_D1E9D0 uses ability type? From 63edd46552dd0314376067eb9a4d917b49098c8f Mon Sep 17 00:00:00 2001 From: A-xeset Date: Tue, 30 Dec 2025 13:10:00 +0700 Subject: [PATCH 05/12] Update plant's functions update GamePlantManager.h, TerraformingManager.h, cObstacle.h Add some libraries to Simulator.h and Editor.h --- Spore ModAPI/Spore/Editors/Editor.h | 2 + Spore ModAPI/Spore/Simulator.h | 1 + .../Simulator/SubSystem/GamePlantManager.h | 85 ++++--------------- .../Simulator/SubSystem/TerraformingManager.h | 10 +-- Spore ModAPI/Spore/Simulator/cObstacle.h | 19 ++++- .../Spore/Simulator/cPlantCargoInfo.h | 4 +- 6 files changed, 39 insertions(+), 82 deletions(-) diff --git a/Spore ModAPI/Spore/Editors/Editor.h b/Spore ModAPI/Spore/Editors/Editor.h index 136696c2..99e4af96 100644 --- a/Spore ModAPI/Spore/Editors/Editor.h +++ b/Spore ModAPI/Spore/Editors/Editor.h @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -39,6 +40,7 @@ #include #include #include +#include #include #include diff --git a/Spore ModAPI/Spore/Simulator.h b/Spore ModAPI/Spore/Simulator.h index f13251a2..44a08e71 100644 --- a/Spore ModAPI/Spore/Simulator.h +++ b/Spore ModAPI/Spore/Simulator.h @@ -60,6 +60,7 @@ #include #include #include +#include #include #include #include diff --git a/Spore ModAPI/Spore/Simulator/SubSystem/GamePlantManager.h b/Spore ModAPI/Spore/Simulator/SubSystem/GamePlantManager.h index 0c3791f4..5bffc12c 100644 --- a/Spore ModAPI/Spore/Simulator/SubSystem/GamePlantManager.h +++ b/Spore ModAPI/Spore/Simulator/SubSystem/GamePlantManager.h @@ -16,91 +16,38 @@ namespace Simulator public: static cGamePlantManager* Get(); + struct PlantSlot + { + /* 00h */ ResourceKey plantKey; + /* 0Ch */ uint32_t mModelIDLOD0; + /* 10h */ uint32_t mModelIDLOD1; + /* 14h */ uint32_t mModelIDLOD2; + /* 18h */ uint32_t mModelIDLOD3; + }; + public: - /* 20h */ int field_20; + /* 20h */ int field_20;// bool? /* 24h */ float field_24; /* 28h */ int field_28; /* 2Ch */ int field_2C; /* 30h */ int mInitializationType; - /* 34h */ int field_34; - /* 38h */ int field_38; + /* 34h */ bool IsPlanetExisted; + /* 38h */ int field_38;//Property? Ptr of smh /* 3Ch */ ObjectPtr field_3C; /* 40h */ ObjectPtr field_40; - /* 44h */ int field_44; - /* 48h */ int field_48; - /* 4Ch */ int field_4C; - /* 50h */ int field_50; - /* 54h */ int field_54; - /* 58h */ int field_58; - /* 5Ch */ int field_5C; - /* 60h */ int field_60; - /* 64h */ int field_64; - /* 68h */ int field_68; - /* 6Ch */ int field_6C; - /* 70h */ int field_70; - /* 74h */ int field_74; - /* 78h */ int field_78; - /* 7Ch */ int field_7C; - /* 80h */ int field_80; - /* 84h */ int field_84; - /* 88h */ int field_88; - /* 8Ch */ int field_8C; - /* 90h */ int field_90; - /* 94h */ int field_94; - /* 98h */ int field_98; - /* 9Ch */ int field_9C; - /* A0h */ int field_A0; - /* A4h */ int field_A4; - /* A8h */ int field_A8; - /* ACh */ int field_AC; - /* B0h */ int field_B0; - /* B4h */ int field_B4; - /* B8h */ int field_B8; - /* BCh */ int field_BC; - /* C0h */ int field_C0; - /* C4h */ int field_C4; - /* C8h */ int field_C8; - /* CCh */ int field_CC; - /* D0h */ int field_D0; - /* D4h */ int field_D4; - /* D8h */ int field_D8; - /* DCh */ int field_DC; - /* E0h */ int field_E0; - /* E4h */ int field_E4; - /* E8h */ int field_E8; - /* ECh */ int field_EC; - /* F0h */ int field_F0; - /* F4h */ int field_F4; - /* F8h */ int field_F8; - /* FCh */ int field_FC; - /* 100h */ int field_100; - /* 104h */ int field_104; - /* 108h */ int field_108; - /* 10Ch */ int field_10C; - /* 110h */ int field_110; - /* 114h */ int field_114; - /* 118h */ int field_118; - /* 11Ch */ int field_11C; - /* 120h */ int field_120; - /* 124h */ int field_124; - /* 128h */ int field_128; - /* 12Ch */ int field_12C; - /* 130h */ int field_130; - /* 134h */ int field_134; - /* 138h */ int field_138; - /* 13Ch */ int field_13C; + /* 44h */ PlantSlot Plants[9]; /* 140h */ int field_140; /* 144h */ int field_144; /* 148h */ int field_148; /* 14Ch */ int field_14C; /* 150h */ int field_150; /* 154h */ int field_154; - /* 158h */ int field_158; + /* 158h */ uint32_t GameModeID; /* 15Ch */ eastl::vector field_15C; /* 170h */ int field_170; /* 174h */ int field_174; /* 178h */ int field_178; - /* 17Ch */ int field_17C; + /* 17Ch */ int field_17C; //Simulator::cPlanetRecord* ? or cPlanetRecordPtr /* 180h */ int field_180; /* 184h */ int field_184; /* 188h */ int field_188; @@ -113,7 +60,7 @@ namespace Simulator /* 1BCh */ int field_1BC; /* 1C0h */ int field_1C0; /* 1C4h */ int field_1C4; - /* 1C8h */ int field_1C8; + /* 1C8h */ int field_1C8; //? /* 1CCh */ int field_1CC; /* 1D0h */ int field_1D0; /* 1D4h */ int field_1D4; diff --git a/Spore ModAPI/Spore/Simulator/SubSystem/TerraformingManager.h b/Spore ModAPI/Spore/Simulator/SubSystem/TerraformingManager.h index 236d2346..c4611c9f 100644 --- a/Spore ModAPI/Spore/Simulator/SubSystem/TerraformingManager.h +++ b/Spore ModAPI/Spore/Simulator/SubSystem/TerraformingManager.h @@ -43,17 +43,13 @@ namespace Simulator public: /* 1Ch */ eastl::hash_map field_1C; /* 3Ch */ bool field_3C; // true - /* 40h */ int field_40; // -1 + /* 40h */ uint32_t mGameModeID; // -1 /* 44h */ bool field_44; /* 48h */ eastl::map field_48; /* 64h */ int field_64; /* 68h */ eastl::vector mCommodityNodes; - /* 7Ch */ int field_7C; - /* 80h */ int field_80; - /* 84h */ int field_84; - /* 88h */ int field_88; - /* 8Ch */ int field_8C; - /* 90h */ int field_90; + /* 7Ch */ ResourceKey SelectedTerraformingSlot; + /* 88h */ ResourceKey field_88; public: static cTerraformingManager* Get(); diff --git a/Spore ModAPI/Spore/Simulator/cObstacle.h b/Spore ModAPI/Spore/Simulator/cObstacle.h index dbfe7305..16961d29 100644 --- a/Spore ModAPI/Spore/Simulator/cObstacle.h +++ b/Spore ModAPI/Spore/Simulator/cObstacle.h @@ -14,10 +14,21 @@ namespace Simulator static const uint32_t TYPE = 0x3ED590D; static const uint32_t NOUN_ID = 0x3ED8573; + using Object::AddRef; + using Object::Release; + using Object::Cast; + + enum PlantType + { + kLargeSpecies = 0, + kMediumSpecies = 1, + kSmallSpecies = 2, + }; + public: /* 34h */ int field_34; - /* 38h */ Math::Vector3 field_38; - /* 44h */ float field_44; + /* 38h */ Math::Vector3 mPosition; + /* 44h */ float mObstacleBaseCollisionRadius; /* 48h */ float mObstacleCanopyCollisionRadius; /* 4Ch */ float mObstacleCollisionHeight; /* 50h */ int field_50; // -1 @@ -31,8 +42,8 @@ namespace Simulator /* 70h */ ModelPtr mModel; /* 74h */ int field_74; /* 78h */ int field_78; - /* 7Ch */ ResourceKey field_7C; - /* 88h */ int field_88; + /* 7Ch */ ResourceKey mSpeciesKey; + /* 88h */ PlantType mPlantType; }; ASSERT_SIZE(cObstacle, 0x8C); } \ No newline at end of file diff --git a/Spore ModAPI/Spore/Simulator/cPlantCargoInfo.h b/Spore ModAPI/Spore/Simulator/cPlantCargoInfo.h index ba3310c1..05cf5f21 100644 --- a/Spore ModAPI/Spore/Simulator/cPlantCargoInfo.h +++ b/Spore ModAPI/Spore/Simulator/cPlantCargoInfo.h @@ -20,11 +20,11 @@ namespace Simulator /* 84h */ uint32_t mModelIDLOD2; /* 88h */ uint32_t mModelIDLOD3; /* 8Ch */ uint32_t mAlphaModel; - /* 90h */ float field_90; // 2.0 + /* 90h */ float mFloraImposterScale; /* 94h */ float mBaseRadius; /* 98h */ float mCanopyRadius; /* 9Ch */ float mHeight; - /* A0h */ int field_A0; //species profile? //TODO what is this type? + /* A0h */ cSpeciesProfile* mSpeciesProfile; //species profile? //TODO what is this type? }; ASSERT_SIZE(cPlantCargoInfo, 0xA4); } \ No newline at end of file From 3244f67f846e13d3bc7ea87844c7a48c2691e611 Mon Sep 17 00:00:00 2001 From: A-xeset Date: Sun, 4 Jan 2026 14:07:02 +0700 Subject: [PATCH 06/12] VerbIconData update --- .../SourceCode/Editors/VerbIconData.cpp | 18 ++++ Spore ModAPI/Spore ModAPI.vcxproj.filters | 3 + Spore ModAPI/Spore/Editors/VerbIconData.h | 102 +++++++++++++++--- 3 files changed, 110 insertions(+), 13 deletions(-) create mode 100644 Spore ModAPI/SourceCode/Editors/VerbIconData.cpp diff --git a/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp b/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp new file mode 100644 index 00000000..2edce048 --- /dev/null +++ b/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp @@ -0,0 +1,18 @@ +#ifndef MODAPI_DLL_EXPORT +#include + + +namespace Editors +{ + auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, int, AddRef); + auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, int, Release); + auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, void*, Dispose); + auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, void*, AsInterface, Args(Editors::VerbIconData::InterfaceId interfaceID), Args(interfaceID)); + auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, Init, Args(App::PropertyList* abilityProp), Args(abilityProp)); + auto_METHOD_VIRTUAL_VOID_(VerbIconData, VerbIconData, Shutdown); + auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, SetArrayIndex, Args(int arrayIndex), Args(arrayIndex)); + auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, SetHotKey, Args(int verbIconTriggerKey), Args(verbIconTriggerKey)); + auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, eastl::string16, GetIconName, Args(eastl::string16* iconName, bool includeLevel), Args(iconName, includeLevel)); + auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, eastl::string16, GetIconDescription, Args(eastl::string16* iconDesc), Args(iconDesc)); +} +#endif \ No newline at end of file diff --git a/Spore ModAPI/Spore ModAPI.vcxproj.filters b/Spore ModAPI/Spore ModAPI.vcxproj.filters index 1bfe6d18..aee18790 100644 --- a/Spore ModAPI/Spore ModAPI.vcxproj.filters +++ b/Spore ModAPI/Spore ModAPI.vcxproj.filters @@ -2738,6 +2738,9 @@ Source Files + + Source Files + diff --git a/Spore ModAPI/Spore/Editors/VerbIconData.h b/Spore ModAPI/Spore/Editors/VerbIconData.h index a43b1773..d4398441 100644 --- a/Spore ModAPI/Spore/Editors/VerbIconData.h +++ b/Spore ModAPI/Spore/Editors/VerbIconData.h @@ -11,33 +11,94 @@ namespace Editors { class VerbIconData - : public Object - , public DefaultRefCounted + //: public Object + : public DefaultRefCounted { public: static const uint32_t TYPE = 0x4AA0ACD; + + enum InterfaceId + { + kIIDMin = 0, + kIIDFactory = 1, + kIIDMax = 0xffffffff, + }; - /* 10h */ virtual void ParseProp(App::PropertyList* propList); - /// Resets mpPropList - /* 14h */ virtual void ClearPropList(); - /* 18h */ virtual void func18h(int); + /* 00h */ virtual int AddRef(); + /* 04h */ virtual int Release(); + /* 08h */ virtual void* Dispose(); + /* 0Ch */ virtual void* AsInterface(InterfaceId propList); + /* 10h */ virtual void Init(App::PropertyList* propList); + /* 14h */ virtual void Shutdown(); + /* 18h */ virtual void SetArrayIndex(int arrayIndex); /// Used to generate text - /* 20h */ virtual void SetKey(int verbIconTriggerKey); - /* 24h */ virtual eastl::string16 GetName(bool includeLevel); - /* 28h */ virtual eastl::string16 GetDescription(); + /* 1Ch */ virtual void SetHotKey(int verbIconTriggerKey); + /* 20h */ virtual eastl::string16 GetIconName(eastl::string16* iconName,bool includeLevel); + /* 24h */ virtual eastl::string16 GetIconDescription(eastl::string16* iconDesc); + + enum eVerbIconCategory + { + kVerbCategoryNULL = 0, + kVerbCategoryTribeAttack = 180661997, + kVerbCategoryVehiclePower = 360359141, + kVerbCategorySpeed = 640949982, + kVerbCategoryTribeArmor = 662199250, + kVerbCategoryHerbivore = 771444639, + kVerbCategorySpit = 823131355, + kVerbCategoryCellCilia = 835506386, + kVerbCategoryVehicleDefense = 886488350, + kVerbCategoryCellJaw = 1101458518, + kVerbCategoryCellJet = 1168568857, + kVerbCategorySprint = 1296465089, + kVerbCategoryCellOmnivore = 1377441237, + kVerbCategoryCellElectric = 1470348634, + kVerbCategoryVehicleSpeed = 1501155019, + kVerbCategoryOmnivore = 1557282664, + kVerbCategoryTribeSocial = 1589650888, + kVerbCategoryCellPoison = 1601154124, + kVerbCategoryBite = 1645043423, + kVerbCategoryDance = 1924791374, + kVerbCategoryStarvivore = 2095425492, + kVerbCategoryCellFlagella = 2165516464, + kVerbCategoryGesture = 2167648234, + kVerbCategoryPower = 2391494160, + kVerbCategoryDefense = 2564315215, + kVerbCategoryCarnivore = 2726979560, + kVerbCategoryStealth = 2909291642, + kVerbCategoryPosture = 2909789983, + kVerbCategoryCellHealth = 2964572918, + kVerbCategoryGlide = 2968795556, + kVerbCategoryCellPoker = 3013574067, + kVerbCategoryCellFilter = 3020374546, + kVerbCategoryTribeFishing = 3188984297, + kVerbCategoryTribeGather = 3253334812, + kVerbCategoryVocalize = 3478552014, + kVerbCategoryCellStarvivore = 3610717237, + kVerbCategoryCellSpike = 3634179486, + kVerbCategoryCellHerbivore = 3653024240, + kVerbCategoryHealth = 3677180323, + kVerbCategoryCellCarnivore = 3751859903, + kVerbCategoryCall = 3753286133, + kVerbCategoryJump = 3833651337, + kVerbCategoryBlock = 4001580976, + kVerbCategorySense = 4069948569, + kVerbCategoryStrike = 4110605575, + kVerbCategoryGrasp = 4248645338, + kVerbCategoryCharge = 4285247397 + }; public: /* 0Ch */ bool mVerbIconUseDescription; // true /* 0Dh */ bool mVerbIconShowLevel; // true /* 0Eh */ bool mPaletteItemRolloverShowLevel; // true /* 0Fh */ bool mVerbIconRolloverShowLevel; // true - /* 10h */ bool field_10; + /* 10h */ bool mShowHotKey; /* 11h */ bool mVerbIconShowZeroLevel; /* 14h */ int mVerbIconTriggerKey; // -1 - /* 18h */ int field_18; // not initialized + /* 18h */ float mVerbIconLevel; // not initialized /* 1Ch */ float mVerbIconMaxLevel; /* 20h */ int field_20; // not initialized - /* 24h */ uint32_t mVerbIconCategory; + /* 24h */ eVerbIconCategory mVerbIconCategory; /* 28h */ uint32_t mVerbIconRepresentativeAnimation; // -1 /* 2Ch */ Math::ColorRGBA mVerbIconColor; /* 3Ch */ uint32_t mVerbIconRolloverLevelImageID; @@ -61,5 +122,20 @@ namespace Editors /* B4h */ ResourceKey mVerbIconStaticLayout; /* C0h */ PropertyListPtr mpPropList; }; - ASSERT_SIZE(VerbIconData, 0xC4); + ASSERT_SIZE(VerbIconData, 0xC0); + + namespace Addresses(VerbIconData) + { + DeclareAddress(AddRef); + DeclareAddress(Release); + DeclareAddress(Dispose); + DeclareAddress(AsInterface); + DeclareAddress(Init); + DeclareAddress(Shutdown); + DeclareAddress(SetArrayIndex); + DeclareAddress(SetHotKey); + DeclareAddress(GetIconName); + DeclareAddress(OnKeyDown); + DeclareAddress(GetIconDescription); + } } \ No newline at end of file From 182a8b8a12df8ebb83ff43f5b8de5da9fb5a2089 Mon Sep 17 00:00:00 2001 From: A-xeset Date: Sun, 4 Jan 2026 14:07:02 +0700 Subject: [PATCH 07/12] VerbIconData update --- .../SourceCode/Editors/VerbIconData.cpp | 18 ++++ Spore ModAPI/Spore ModAPI.vcxproj.filters | 3 + Spore ModAPI/Spore/Editors/VerbIconData.h | 102 +++++++++++++++--- 3 files changed, 110 insertions(+), 13 deletions(-) create mode 100644 Spore ModAPI/SourceCode/Editors/VerbIconData.cpp diff --git a/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp b/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp new file mode 100644 index 00000000..2edce048 --- /dev/null +++ b/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp @@ -0,0 +1,18 @@ +#ifndef MODAPI_DLL_EXPORT +#include + + +namespace Editors +{ + auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, int, AddRef); + auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, int, Release); + auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, void*, Dispose); + auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, void*, AsInterface, Args(Editors::VerbIconData::InterfaceId interfaceID), Args(interfaceID)); + auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, Init, Args(App::PropertyList* abilityProp), Args(abilityProp)); + auto_METHOD_VIRTUAL_VOID_(VerbIconData, VerbIconData, Shutdown); + auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, SetArrayIndex, Args(int arrayIndex), Args(arrayIndex)); + auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, SetHotKey, Args(int verbIconTriggerKey), Args(verbIconTriggerKey)); + auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, eastl::string16, GetIconName, Args(eastl::string16* iconName, bool includeLevel), Args(iconName, includeLevel)); + auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, eastl::string16, GetIconDescription, Args(eastl::string16* iconDesc), Args(iconDesc)); +} +#endif \ No newline at end of file diff --git a/Spore ModAPI/Spore ModAPI.vcxproj.filters b/Spore ModAPI/Spore ModAPI.vcxproj.filters index 1bfe6d18..aee18790 100644 --- a/Spore ModAPI/Spore ModAPI.vcxproj.filters +++ b/Spore ModAPI/Spore ModAPI.vcxproj.filters @@ -2738,6 +2738,9 @@ Source Files + + Source Files + diff --git a/Spore ModAPI/Spore/Editors/VerbIconData.h b/Spore ModAPI/Spore/Editors/VerbIconData.h index a43b1773..d4398441 100644 --- a/Spore ModAPI/Spore/Editors/VerbIconData.h +++ b/Spore ModAPI/Spore/Editors/VerbIconData.h @@ -11,33 +11,94 @@ namespace Editors { class VerbIconData - : public Object - , public DefaultRefCounted + //: public Object + : public DefaultRefCounted { public: static const uint32_t TYPE = 0x4AA0ACD; + + enum InterfaceId + { + kIIDMin = 0, + kIIDFactory = 1, + kIIDMax = 0xffffffff, + }; - /* 10h */ virtual void ParseProp(App::PropertyList* propList); - /// Resets mpPropList - /* 14h */ virtual void ClearPropList(); - /* 18h */ virtual void func18h(int); + /* 00h */ virtual int AddRef(); + /* 04h */ virtual int Release(); + /* 08h */ virtual void* Dispose(); + /* 0Ch */ virtual void* AsInterface(InterfaceId propList); + /* 10h */ virtual void Init(App::PropertyList* propList); + /* 14h */ virtual void Shutdown(); + /* 18h */ virtual void SetArrayIndex(int arrayIndex); /// Used to generate text - /* 20h */ virtual void SetKey(int verbIconTriggerKey); - /* 24h */ virtual eastl::string16 GetName(bool includeLevel); - /* 28h */ virtual eastl::string16 GetDescription(); + /* 1Ch */ virtual void SetHotKey(int verbIconTriggerKey); + /* 20h */ virtual eastl::string16 GetIconName(eastl::string16* iconName,bool includeLevel); + /* 24h */ virtual eastl::string16 GetIconDescription(eastl::string16* iconDesc); + + enum eVerbIconCategory + { + kVerbCategoryNULL = 0, + kVerbCategoryTribeAttack = 180661997, + kVerbCategoryVehiclePower = 360359141, + kVerbCategorySpeed = 640949982, + kVerbCategoryTribeArmor = 662199250, + kVerbCategoryHerbivore = 771444639, + kVerbCategorySpit = 823131355, + kVerbCategoryCellCilia = 835506386, + kVerbCategoryVehicleDefense = 886488350, + kVerbCategoryCellJaw = 1101458518, + kVerbCategoryCellJet = 1168568857, + kVerbCategorySprint = 1296465089, + kVerbCategoryCellOmnivore = 1377441237, + kVerbCategoryCellElectric = 1470348634, + kVerbCategoryVehicleSpeed = 1501155019, + kVerbCategoryOmnivore = 1557282664, + kVerbCategoryTribeSocial = 1589650888, + kVerbCategoryCellPoison = 1601154124, + kVerbCategoryBite = 1645043423, + kVerbCategoryDance = 1924791374, + kVerbCategoryStarvivore = 2095425492, + kVerbCategoryCellFlagella = 2165516464, + kVerbCategoryGesture = 2167648234, + kVerbCategoryPower = 2391494160, + kVerbCategoryDefense = 2564315215, + kVerbCategoryCarnivore = 2726979560, + kVerbCategoryStealth = 2909291642, + kVerbCategoryPosture = 2909789983, + kVerbCategoryCellHealth = 2964572918, + kVerbCategoryGlide = 2968795556, + kVerbCategoryCellPoker = 3013574067, + kVerbCategoryCellFilter = 3020374546, + kVerbCategoryTribeFishing = 3188984297, + kVerbCategoryTribeGather = 3253334812, + kVerbCategoryVocalize = 3478552014, + kVerbCategoryCellStarvivore = 3610717237, + kVerbCategoryCellSpike = 3634179486, + kVerbCategoryCellHerbivore = 3653024240, + kVerbCategoryHealth = 3677180323, + kVerbCategoryCellCarnivore = 3751859903, + kVerbCategoryCall = 3753286133, + kVerbCategoryJump = 3833651337, + kVerbCategoryBlock = 4001580976, + kVerbCategorySense = 4069948569, + kVerbCategoryStrike = 4110605575, + kVerbCategoryGrasp = 4248645338, + kVerbCategoryCharge = 4285247397 + }; public: /* 0Ch */ bool mVerbIconUseDescription; // true /* 0Dh */ bool mVerbIconShowLevel; // true /* 0Eh */ bool mPaletteItemRolloverShowLevel; // true /* 0Fh */ bool mVerbIconRolloverShowLevel; // true - /* 10h */ bool field_10; + /* 10h */ bool mShowHotKey; /* 11h */ bool mVerbIconShowZeroLevel; /* 14h */ int mVerbIconTriggerKey; // -1 - /* 18h */ int field_18; // not initialized + /* 18h */ float mVerbIconLevel; // not initialized /* 1Ch */ float mVerbIconMaxLevel; /* 20h */ int field_20; // not initialized - /* 24h */ uint32_t mVerbIconCategory; + /* 24h */ eVerbIconCategory mVerbIconCategory; /* 28h */ uint32_t mVerbIconRepresentativeAnimation; // -1 /* 2Ch */ Math::ColorRGBA mVerbIconColor; /* 3Ch */ uint32_t mVerbIconRolloverLevelImageID; @@ -61,5 +122,20 @@ namespace Editors /* B4h */ ResourceKey mVerbIconStaticLayout; /* C0h */ PropertyListPtr mpPropList; }; - ASSERT_SIZE(VerbIconData, 0xC4); + ASSERT_SIZE(VerbIconData, 0xC0); + + namespace Addresses(VerbIconData) + { + DeclareAddress(AddRef); + DeclareAddress(Release); + DeclareAddress(Dispose); + DeclareAddress(AsInterface); + DeclareAddress(Init); + DeclareAddress(Shutdown); + DeclareAddress(SetArrayIndex); + DeclareAddress(SetHotKey); + DeclareAddress(GetIconName); + DeclareAddress(OnKeyDown); + DeclareAddress(GetIconDescription); + } } \ No newline at end of file From 7da2ada106f411efe12a4b935be21ce20ce418ba Mon Sep 17 00:00:00 2001 From: A-xeset Date: Wed, 7 Jan 2026 01:07:59 +0700 Subject: [PATCH 08/12] modAPI folder update --- .../SourceCode/DLL/AddressesEditors.cpp | 16 + Spore ModAPI/SourceCode/Editors/Editor.cpp | 36 +- Spore ModAPI/Spore ModAPI.vcxproj | 5 +- Spore ModAPI/Spore/Editors/BakeManager.h | 1262 ++++++++++++++++- Spore ModAPI/Spore/Editors/Editor.h | 21 +- Spore ModAPI/Spore/Editors/EditorModel.h | 30 +- Spore ModAPI/Spore/Editors/EditorRigblock.h | 157 +- Spore ModAPI/Spore/Editors/VerbIconData.h | 2 +- .../Simulator/SubSystem/GameViewManager.h | 2 + .../Simulator/SubSystem/ObstacleManager.h | 7 +- .../Spore/Simulator/cCreatureAbility.h | 16 +- .../Spore/Simulator/cSimulatorSpaceGame.h | 14 +- .../Spore/Simulator/cSpeciesProfile.h | 92 +- .../Spore/Sporepedia/ObjectTemplateDB.h | 229 ++- Spore ModAPI/Spore/Swarm/IVisualEffect.h | 2 +- Spore ModAPI/Spore/Swarm/cVisualEffect.h | 2 +- 16 files changed, 1729 insertions(+), 164 deletions(-) diff --git a/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp b/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp index 412de716..6726d251 100644 --- a/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp +++ b/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #ifdef SDK_TO_GHIDRA namespace Editors @@ -85,6 +86,7 @@ namespace Editors DefineAddress(GetEditorForAssetType, SelectAddress(0x00433010, 0x004333e0)); DefineAddress(GetNameForAssetType, SelectAddress(0x004badc0, 0x004bba50)); DefineAddress(GetTypeIDForAssetType, SelectAddress(0x004bb110, 0x004bbda0)); + DefineAddress(ComputeCreatureVerbIcons, SelectAddress(0x004e8860, 0x004e8860)); } namespace Addresses(EditorCamera) @@ -250,5 +252,19 @@ namespace Editors DefineAddress(SetWindowVisible, SelectAddress(0x635450, 0x635750)); DefineAddress(FindWindowByID, SelectAddress(0x634AB0, 0x634DB0)); } + + namespace Addresses(VerbIconData) + { + DefineAddress(AddRef, SelectAddress(0xc6ab00, 0xc6ab00)); + DefineAddress(Release, SelectAddress(0x7b87b0, 0x7b87b0)); + DefineAddress(Dispose, SelectAddress(0x59eff0, 0x59eff0)); + DefineAddress(AsInterface, SelectAddress(0x5e4d70, 0x5e4d70)); + DefineAddress(Init, SelectAddress(0x5e54a0, 0x5e54a0)); + DefineAddress(Shutdown, SelectAddress(0x5e5920, 0x5e5920)); + DefineAddress(SetArrayIndex, SelectAddress(0x5e4d90, 0x5e4d90)); + DefineAddress(SetHotKey, SelectAddress(0x5e5c30, 0x5e5c30)); + DefineAddress(GetIconName, SelectAddress(0x5e5cb0, 0x5e5cb0)); + DefineAddress(GetIconDescription, SelectAddress(0x5e5d70, 0x5e5d70)); + } } #endif diff --git a/Spore ModAPI/SourceCode/Editors/Editor.cpp b/Spore ModAPI/SourceCode/Editors/Editor.cpp index 59b16a00..7a167ed3 100644 --- a/Spore ModAPI/SourceCode/Editors/Editor.cpp +++ b/Spore ModAPI/SourceCode/Editors/Editor.cpp @@ -59,20 +59,20 @@ namespace Editors : mnRefCount(0) , mKey() , mRigblocks() - , field_2C() - , field_30() - , field_34() - , field_38() - , field_3C() - , field_40(-2.0f) - , field_44(2.0f) - , field_48() - , field_4C() - , field_4D() - , field_4E(true) - , field_4F() - , field_50() - , field_51() + , mbAllBlocksLoaded() + , mPhysicsWorld() + , mUseDynamics() + , mBounds() + , mFeetBounds() + , mMinHeight(-2.0f) + , mMaxHeight(2.0f) + , mMinimumLeglessCreatureHeight() + , mShowHiddenHandles() + , mShowBoneLengthHandles() + , mUseBoundsForDelete(true) + , mUsingSymmetry() + , mSkinNeedsUpdating() + , mChanged() , mTranslationOptions() , mModelType() , mName() @@ -81,7 +81,7 @@ namespace Editors , mSkinEffectIDs() , mSkinEffectSeeds{1234, 1234, 1234} , mColors {ColorRGB(1.0f, 1.0f, 1.0f), ColorRGB(1.0f, 1.0f, 1.0f), ColorRGB(1.0f, 1.0f, 1.0f)} - , field_C8() + , mBBoxesOverride() { } @@ -90,8 +90,8 @@ namespace Editors Dispose(); // field_30 is a pointer, but I don't know what kind so we manually Release it - if (field_30 != 0) { - int* pointer = (int*)field_30; + if (mPhysicsWorld != 0) { + int* pointer = (int*)mPhysicsWorld; pointer[1]--; if (pointer[1] == 0) { pointer[1] = 1; @@ -198,5 +198,7 @@ namespace Editors auto_STATIC_METHOD(cEditor, uint32_t, GetTypeIDForAssetType, Args(uint32_t assetTypeID), Args(assetTypeID)); auto_STATIC_METHOD(cEditor, const char16_t*, GetNameForAssetType, Args(uint32_t assetTypeID), Args(assetTypeID)); + + auto_STATIC_METHOD(cEditor, void, ComputeCreatureVerbIcons, Args(cCreatureDataResource* creatureData, int VerbTrayCollection, int brainLevel, float param_4), Args(creatureData, VerbTrayCollection, brainLevel, param_4)); } #endif diff --git a/Spore ModAPI/Spore ModAPI.vcxproj b/Spore ModAPI/Spore ModAPI.vcxproj index 6c361101..b1c4266e 100644 --- a/Spore ModAPI/Spore ModAPI.vcxproj +++ b/Spore ModAPI/Spore ModAPI.vcxproj @@ -327,8 +327,8 @@ - - + + @@ -974,6 +974,7 @@ + diff --git a/Spore ModAPI/Spore/Editors/BakeManager.h b/Spore ModAPI/Spore/Editors/BakeManager.h index 087401fa..17c7d427 100644 --- a/Spore ModAPI/Spore/Editors/BakeManager.h +++ b/Spore ModAPI/Spore/Editors/BakeManager.h @@ -20,6 +20,9 @@ #pragma once #include +#include +#include +#include /// Access the active bake manager. #define BakeManager (*Editors::IBakeManager::Get()) @@ -30,50 +33,1249 @@ namespace Editors { BakeParameters(int16_t field_04, int16_t field_06 = 4, uint32_t defaultID = 0x2EA8FB98); - uint32_t mDefaultID; - int16_t field_04; - int16_t field_06; + uint32_t mTag; + int16_t mFlag; + int16_t mPriority; + }; + + struct cBakeStats + { + int mQueuedBakes; + bool mCurrentlyBaking; + struct ResourceKey mCurrentKey; + int mNumBakes; + float mLastBakeTime; + float mAverageBakeTime; + int mNumCCFBakes; + float mTotalCCFTime; + float mLastCCFTime; + int mNumBVUBakes; + float mTotalBVUTime; + float mLastBVUTime; }; class IBakeManager { public: + static IBakeManager* Get(); + + /* 00h */ virtual int AddRef(); + /* 04h */ virtual void Release(); + /* 08h */ virtual bool Init(); + /* 0Ch */ virtual void Shutdown(); + /* 10h */ virtual void PreShutdown(); + /* 14h */ virtual void Update(); + /* 18h */ virtual bool IsBakingOrBaked(const ResourceKey& nameKey); + /* 1Ch */ virtual bool IsBaked(const ResourceKey& nameKey, bool param); + /* 20h */ virtual void SetQueueEnabled(bool QueueEnabled); + /* 24h */ virtual int GetQueueSize(uint32_t unk); //InterruptForEditorPaintRequest? + /* 28h */ virtual int GetQueueSize(); //FinishCreature? ReloadMuscleData? + /* 2Ch */ virtual bool GetCurrentKey(const ResourceKey& nameKey); + /* 30h */ virtual void GetQueue(eastl::vector>* unk);//Set swarm parameters? or HandleMessage? + /* 34h */ virtual bool IsBaking(uint32_t mTag); + /* 38h */ virtual bool IsBaking(const ResourceKey& nameKey, uint32_t mTag); + /* 3Ch */ virtual bool IsBaking(const ResourceKey& nameKey); + /* 40h */ virtual bool Cancel(uint32_t mTag); + /* 44h */ virtual bool Cancel(const ResourceKey& nameKey, uint32_t mTag); + /* 48h */ virtual bool Cancel(const ResourceKey& nameKey); + /* 4Ch */ virtual bool BakeModel(const ResourceKey& nameKey, const BakeParameters& params); + /* 50h */ virtual bool QueueBake(const ResourceKey& nameKey, const ResourceKey& nameKey2); + /* 54h */ virtual bool GetBlockApproximation(uint32_t mInstanceID, uint32_t mGroupID, float param3, int param4, Math::Vector3* BoundingBox, Math::Vector3* BoundingBox_upper); + /* 58h */ virtual App::PropertyList* GetBlockPropertyList(uint32_t instanceID, uint32_t groupID); + /* 5Ch */ virtual bool GetBlockRuntimeModelKey(uint32_t mInstanceID, uint32_t mGroupID, ResourceKey* nameKey); + /* 60h */ virtual Graphics::IModelWorld* GetCreatureModelWorld(); + /* 64h */ virtual bool InterruptForEditorPaintRequest(int paintRequest);//cPaintRequest* + /* 68h */ virtual bool TessellateSkin(int skin, float param2); //cSkinObject + /* 6Ch */ virtual bool GetTools(const ResourceKey& nameKey, int);//eastl::vector*); //TessellateSkinInternalSetup? + /* 70h */ virtual void PromoteToData(const ResourceKey& nameKey, bool param1, wchar_t* flag); + /* 74h */ virtual cBakeStats* GetBakeStats(); + /* 78h */ virtual wchar_t* GetStatsString(); - /* 00h */ virtual void func00h(); - /* 04h */ virtual void func04h(); - /* 08h */ virtual void func08h(); - /* 0Ch */ virtual void func0Ch(); - /* 10h */ virtual void func10h(); - /* 14h */ virtual void func14h(); - /* 18h */ virtual void func18h(); - /* 1Ch */ virtual void func1Ch(); - /* 20h */ virtual void func20h(); - /* 24h */ virtual void func24h(); - /* 28h */ virtual void func28h(); - /* 2Ch */ virtual void func2Ch(); - /* 30h */ virtual void func30h(); - /* 34h */ virtual void func34h(); - /* 38h */ virtual void func38h(); - /* 3Ch */ virtual void func3Ch(); - /* 40h */ virtual void func40h(); - /* 44h */ virtual void func44h(); - /* 48h */ virtual void func48h(); - /* 4Ch */ virtual void Bake(const ResourceKey& nameKey, const BakeParameters& params); - - // 60h returns IModelWorld + public: - static IBakeManager* Get(); + ///* 00h */ int field_00; + /* 04h */ int field_04; + /* 08h */ int field_08; + /* 0Ch */ int field_0C; + /* 10h */ int field_10; + /* 14h */ int field_14; + /* 18h */ int field_18; + /* 1Ch */ int field_1C; + /* 20h */ int field_20; + /* 24h */ int field_24; + /* 28h */ int field_28; + /* 2Ch */ int field_2C; + /* 30h */ int field_30; + /* 34h */ int field_34; + /* 38h */ int field_38; + /* 3Ch */ int field_3C; + /* 40h */ int field_40; + /* 44h */ int field_44; + /* 48h */ int field_48; + /* 4Ch */ int field_4C; + /* 50h */ int field_50; + /* 54h */ int field_54; + /* 58h */ int field_58; + /* 5Ch */ int field_5C; + /* 60h */ int field_60; + /* 64h */ int field_64; + /* 68h */ int field_68; + /* 6Ch */ int field_6C; + /* 70h */ int field_70; + /* 74h */ Graphics::IModelWorld* field_74; + /* 78h */ Graphics::IModelWorld* mIModelWorld; + /* 7Ch */ int field_7C; + /* 80h */ int field_80; + /* 84h */ int field_84; + /* 88h */ int field_88; + /* 8Ch */ int field_8C; + /* 90h */ int field_90; + /* 94h */ int field_94; + /* 98h */ int field_98; + /* 9Ch */ int field_9C; + /* A0h */ int field_A0; + /* A4h */ int field_A4; + /* A8h */ int field_A8; + /* ACh */ int field_AC; + /* B0h */ int field_B0; + /* B4h */ int field_B4; + /* B8h */ int field_B8; + /* BCh */ int field_BC; + /* C0h */ bool field_C0; + /* C1h */ bool field_C1; + /* C2h */ bool field_C2; + /* C3h */ bool field_C3; + /* C4h */ int field_C4; + /* C8h */ int field_C8; + /* CCh */ int field_CC; + /* D0h */ int field_D0; + /* D4h */ int field_D4; + /* D8h */ int field_D8; + /* DCh */ int field_DC; + /* E0h */ int field_E0; + /* E4h */ int field_E4; + /* E8h */ int field_E8; + /* ECh */ int field_EC; + /* F0h */ int field_F0; + /* F4h */ int field_F4; + /* F8h */ int field_F8; + /* FCh */ int field_FC; + /* 100h */ int field_100; + /* 104h */ int field_104; + /* 108h */ int field_108; + /* 10Ch */ int field_10C; + /* 110h */ int field_110; + /* 114h */ int field_114; + /* 118h */ int field_118; + /* 11Ch */ int field_11C; + /* 120h */ int field_120; + /* 124h */ int field_124; + /* 128h */ int field_128; + /* 12Ch */ int field_12C; + /* 130h */ int field_130; + /* 134h */ int field_134; + /* 138h */ int field_138; + /* 13Ch */ int field_13C; + /* 140h */ int field_140; + /* 144h */ int field_144; + /* 148h */ int field_148; + /* 14Ch */ int field_14C; + /* 150h */ int field_150; + /* 154h */ int field_154; + /* 158h */ int field_158; + /* 15Ch */ int field_15C; + /* 160h */ int field_160; + /* 164h */ int field_164; + /* 168h */ int field_168; + /* 16Ch */ int field_16C; + /* 170h */ int field_170; + /* 174h */ int field_174; + /* 178h */ int field_178; + /* 17Ch */ int field_17C; + /* 180h */ int field_180; + /* 184h */ int field_184; + /* 188h */ int field_188; + /* 18Ch */ int field_18C; + /* 190h */ int field_190; + /* 194h */ int field_194; + /* 198h */ int field_198; + /* 19Ch */ int field_19C; + /* 1A0h */ int field_1A0; + /* 1A4h */ int field_1A4; + /* 1A8h */ int field_1A8; + /* 1ACh */ int field_1AC; + /* 1B0h */ int field_1B0; + /* 1B4h */ int field_1B4; + /* 1B8h */ int field_1B8; + /* 1BCh */ int field_1BC; + /* 1C0h */ int field_1C0; + /* 1C4h */ int field_1C4; + /* 1C8h */ int field_1C8; + /* 1CCh */ int field_1CC; + /* 1D0h */ int field_1D0; + /* 1D4h */ int field_1D4; + /* 1D8h */ int field_1D8; + /* 1DCh */ int field_1DC; + /* 1E0h */ int field_1E0; + /* 1E4h */ int field_1E4; + /* 1E8h */ int field_1E8; + /* 1ECh */ int field_1EC; + /* 1F0h */ int field_1F0; + /* 1F4h */ int field_1F4; + /* 1F8h */ int field_1F8; + /* 1FCh */ int field_1FC; + /* 200h */ int field_200; + /* 204h */ int field_204; + /* 208h */ int field_208; + /* 20Ch */ int field_20C; + /* 210h */ int field_210; + /* 214h */ int field_214; + /* 218h */ int field_218; + /* 21Ch */ int field_21C; + /* 220h */ int field_220; + /* 224h */ int field_224; + /* 228h */ ResourceKey mBakeCreation; + /* 234h */ BakeParameters mBakeParameters; + /* 23Ch */ int field_23C; + /* 240h */ int field_240; + /* 244h */ int field_244; + /* 248h */ int field_248; + /* 24Ch */ int field_24C; + /* 250h */ int field_250; + /* 254h */ int field_254; + /* 258h */ bool field_258; + /* 259h */ bool field_259; + /* 25Ah */ bool field_25A; + /* 25Bh */ bool field_25B; + /* 25Ch */ int field_25C; + /* 260h */ int field_260; + /* 264h */ int field_264; + /* 268h */ int field_268; + /* 26Ch */ int field_26C; + /* 270h */ int field_270; + /* 274h */ int field_274; + /* 278h */ int field_278; + /* 27Ch */ int field_27C; + /* 280h */ int field_280; + /* 284h */ int field_284; + /* 288h */ int field_288; + /* 28Ch */ int field_28C; + /* 290h */ int field_290; + /* 294h */ int field_294; + /* 298h */ int field_298; + /* 29Ch */ int field_29C; + /* 2A0h */ int field_2A0; + /* 2A4h */ int field_2A4; + /* 2A8h */ int field_2A8; + /* 2ACh */ int field_2AC; + /* 2B0h */ int field_2B0; + /* 2B4h */ int field_2B4; + /* 2B8h */ int field_2B8; + /* 2BCh */ int field_2BC; + /* 2C0h */ int field_2C0; + /* 2C4h */ int field_2C4; + /* 2C8h */ int field_2C8; + /* 2CCh */ int field_2CC; + /* 2D0h */ int field_2D0; + /* 2D4h */ int field_2D4; + /* 2D8h */ int field_2D8; + /* 2DCh */ int field_2DC; + /* 2E0h */ int field_2E0; + /* 2E4h */ int field_2E4; + /* 2E8h */ int field_2E8; + /* 2ECh */ int field_2EC; + /* 2F0h */ int field_2F0; + /* 2F4h */ int field_2F4; + /* 2F8h */ int field_2F8; + /* 2FCh */ int field_2FC; + /* 300h */ int field_300; + /* 304h */ int field_304; + /* 308h */ int field_308; + /* 30Ch */ int field_30C; + /* 310h */ int field_310; + /* 314h */ int field_314; + /* 318h */ int field_318; + /* 31Ch */ int field_31C; + /* 320h */ int field_320; + /* 324h */ int field_324; + /* 328h */ int field_328; + /* 32Ch */ int field_32C; + /* 330h */ int field_330; + /* 334h */ int field_334; + /* 338h */ int field_338; + /* 33Ch */ int field_33C; + /* 340h */ int field_340; + /* 344h */ int field_344; + /* 348h */ int field_348; + /* 34Ch */ int field_34C; + /* 350h */ int field_350; + /* 354h */ int field_354; + /* 358h */ int field_358; + /* 35Ch */ int field_35C; + /* 360h */ int field_360; + /* 364h */ int field_364; + /* 368h */ int field_368; + /* 36Ch */ int field_36C; + /* 370h */ int field_370; + /* 374h */ int field_374; + /* 378h */ int field_378; + /* 37Ch */ int field_37C; + /* 380h */ int field_380; + /* 384h */ int field_384; + /* 388h */ int field_388; + /* 38Ch */ int field_38C; + /* 390h */ int field_390; + /* 394h */ int field_394; + /* 398h */ int field_398; + /* 39Ch */ int field_39C; + /* 3A0h */ int field_3A0; + /* 3A4h */ int field_3A4; + /* 3A8h */ int field_3A8; + /* 3ACh */ int field_3AC; + /* 3B0h */ int field_3B0; + /* 3B4h */ int field_3B4; + /* 3B8h */ int field_3B8; + /* 3BCh */ int field_3BC; + /* 3C0h */ int field_3C0; + /* 3C4h */ int field_3C4; + /* 3C8h */ int field_3C8; + /* 3CCh */ int field_3CC; + /* 3D0h */ int field_3D0; + /* 3D4h */ int field_3D4; + /* 3D8h */ int field_3D8; + /* 3DCh */ int field_3DC; + /* 3E0h */ int field_3E0; + /* 3E4h */ int field_3E4; + /* 3E8h */ int field_3E8; + /* 3ECh */ int field_3EC; + /* 3F0h */ int field_3F0; + /* 3F4h */ int field_3F4; + /* 3F8h */ int field_3F8; + /* 3FCh */ int field_3FC; + /* 400h */ int field_400; + /* 404h */ int field_404; + /* 408h */ int field_408; + /* 40Ch */ int field_40C; + /* 410h */ int field_410; + /* 414h */ int field_414; + /* 418h */ int field_418; + /* 41Ch */ int field_41C; + /* 420h */ int field_420; + /* 424h */ int field_424; + /* 428h */ int field_428; + /* 42Ch */ int field_42C; + /* 430h */ int field_430; + /* 434h */ int field_434; + /* 438h */ int field_438; + /* 43Ch */ int field_43C; + /* 440h */ int field_440; + /* 444h */ int field_444; + /* 448h */ int field_448; + /* 44Ch */ int field_44C; + /* 450h */ int field_450; + /* 454h */ int field_454; + /* 458h */ int field_458; + /* 45Ch */ int field_45C; + /* 460h */ int field_460; + /* 464h */ int field_464; + /* 468h */ int field_468; + /* 46Ch */ int field_46C; + /* 470h */ int field_470; + /* 474h */ int field_474; + /* 478h */ int field_478; + /* 47Ch */ int field_47C; + /* 480h */ int field_480; + /* 484h */ int field_484; + /* 488h */ int field_488; + /* 48Ch */ int field_48C; + /* 490h */ int field_490; + /* 494h */ int field_494; + /* 498h */ int field_498; + /* 49Ch */ int field_49C; + /* 4A0h */ int field_4A0; + /* 4A4h */ int field_4A4; + /* 4A8h */ int field_4A8; + /* 4ACh */ int field_4AC; + /* 4B0h */ int field_4B0; + /* 4B4h */ int field_4B4; + /* 4B8h */ int field_4B8; + /* 4BCh */ int field_4BC; + /* 4C0h */ int field_4C0; + /* 4C4h */ int field_4C4; + /* 4C8h */ int field_4C8; + /* 4CCh */ int field_4CC; + /* 4D0h */ int field_4D0; + /* 4D4h */ int field_4D4; + /* 4D8h */ int field_4D8; + /* 4DCh */ int field_4DC; + /* 4E0h */ int field_4E0; + /* 4E4h */ int field_4E4; + /* 4E8h */ int field_4E8; + /* 4ECh */ int field_4EC; + /* 4F0h */ int field_4F0; + /* 4F4h */ int field_4F4; + /* 4F8h */ int field_4F8; + /* 4FCh */ int field_4FC; + /* 500h */ int field_500; + /* 504h */ int field_504; + /* 508h */ int field_508; + /* 50Ch */ int field_50C; + /* 510h */ int field_510; + /* 514h */ int field_514; + /* 518h */ int field_518; + /* 51Ch */ int field_51C; + /* 520h */ int field_520; + /* 524h */ int field_524; + /* 528h */ int field_528; + /* 52Ch */ int field_52C; + /* 530h */ int field_530; + /* 534h */ int field_534; + /* 538h */ int field_538; + /* 53Ch */ int field_53C; + /* 540h */ int field_540; + /* 544h */ int field_544; + /* 548h */ int field_548; + /* 54Ch */ int field_54C; + /* 550h */ int field_550; + /* 554h */ int field_554; + /* 558h */ int field_558; + /* 55Ch */ int field_55C; + /* 560h */ int field_560; + /* 564h */ int field_564; + /* 568h */ int field_568; + /* 56Ch */ int field_56C; + /* 570h */ int field_570; + /* 574h */ int field_574; + /* 578h */ int field_578; + /* 57Ch */ int field_57C; + /* 580h */ int field_580; + /* 584h */ int field_584; + /* 588h */ int field_588; + /* 58Ch */ int field_58C; + /* 590h */ int field_590; + /* 594h */ int field_594; + /* 598h */ int field_598; + /* 59Ch */ int field_59C; + /* 5A0h */ int field_5A0; + /* 5A4h */ int field_5A4; + /* 5A8h */ int field_5A8; + /* 5ACh */ int field_5AC; + /* 5B0h */ int field_5B0; + /* 5B4h */ int field_5B4; + /* 5B8h */ int field_5B8; + /* 5BCh */ int field_5BC; + /* 5C0h */ int field_5C0; + /* 5C4h */ int field_5C4; + /* 5C8h */ int field_5C8; + /* 5CCh */ int field_5CC; + /* 5D0h */ int field_5D0; + /* 5D4h */ int field_5D4; + /* 5D8h */ int field_5D8; + /* 5DCh */ int field_5DC; + /* 5E0h */ int field_5E0; + /* 5E4h */ int field_5E4; + /* 5E8h */ int field_5E8; + /* 5ECh */ int field_5EC; + /* 5F0h */ int field_5F0; + /* 5F4h */ int field_5F4; + /* 5F8h */ int field_5F8; + /* 5FCh */ int field_5FC; + /* 600h */ int field_600; + /* 604h */ int field_604; + /* 608h */ int field_608; + /* 60Ch */ int field_60C; + /* 610h */ int field_610; + /* 614h */ int field_614; + /* 618h */ int field_618; + /* 61Ch */ int field_61C; + /* 620h */ int field_620; + /* 624h */ int field_624; + /* 628h */ int field_628; + /* 62Ch */ int field_62C; + /* 630h */ int field_630; + /* 634h */ int field_634; + /* 638h */ int field_638; + /* 63Ch */ int field_63C; + /* 640h */ int field_640; + /* 644h */ int field_644; + /* 648h */ int field_648; + /* 64Ch */ int field_64C; + /* 650h */ int field_650; + /* 654h */ int field_654; + /* 658h */ int field_658; + /* 65Ch */ int field_65C; + /* 660h */ int field_660; + /* 664h */ int field_664; + /* 668h */ int field_668; + /* 66Ch */ int field_66C; + /* 670h */ int field_670; + /* 674h */ int field_674; + /* 678h */ int field_678; + /* 67Ch */ int field_67C; + /* 680h */ int field_680; + /* 684h */ int field_684; + /* 688h */ int field_688; + /* 68Ch */ int field_68C; + /* 690h */ int field_690; + /* 694h */ int field_694; + /* 698h */ int field_698; + /* 69Ch */ int field_69C; + /* 6A0h */ int field_6A0; + /* 6A4h */ int field_6A4; + /* 6A8h */ int field_6A8; + /* 6ACh */ int field_6AC; + /* 6B0h */ int field_6B0; + /* 6B4h */ int field_6B4; + /* 6B8h */ int field_6B8; + /* 6BCh */ int field_6BC; + /* 6C0h */ int field_6C0; + /* 6C4h */ int field_6C4; + /* 6C8h */ int field_6C8; + /* 6CCh */ int field_6CC; + /* 6D0h */ int field_6D0; + /* 6D4h */ int field_6D4; + /* 6D8h */ int field_6D8; + /* 6DCh */ int field_6DC; + /* 6E0h */ int field_6E0; + /* 6E4h */ int field_6E4; + /* 6E8h */ int field_6E8; + /* 6ECh */ int field_6EC; + /* 6F0h */ int field_6F0; + /* 6F4h */ int field_6F4; + /* 6F8h */ int field_6F8; + /* 6FCh */ int field_6FC; + /* 700h */ int field_700; + /* 704h */ int field_704; + /* 708h */ int field_708; + /* 70Ch */ int field_70C; + /* 710h */ int field_710; + /* 714h */ int field_714; + /* 718h */ int field_718; + /* 71Ch */ int field_71C; + /* 720h */ int field_720; + /* 724h */ int field_724; + /* 728h */ int field_728; + /* 72Ch */ int field_72C; + /* 730h */ int field_730; + /* 734h */ int field_734; + /* 738h */ int field_738; + /* 73Ch */ int field_73C; + /* 740h */ int field_740; + /* 744h */ int field_744; + /* 748h */ int field_748; + /* 74Ch */ int field_74C; + /* 750h */ int field_750; + /* 754h */ int field_754; + /* 758h */ int field_758; + /* 75Ch */ int field_75C; + /* 760h */ int field_760; + /* 764h */ int field_764; + /* 768h */ int field_768; + /* 76Ch */ int field_76C; + /* 770h */ int field_770; + /* 774h */ int field_774; + /* 778h */ int field_778; + /* 77Ch */ int field_77C; + /* 780h */ int field_780; + /* 784h */ int field_784; + /* 788h */ int field_788; + /* 78Ch */ int field_78C; + /* 790h */ int field_790; + /* 794h */ int field_794; + /* 798h */ int field_798; + /* 79Ch */ int field_79C; + /* 7A0h */ int field_7A0; + /* 7A4h */ int field_7A4; + /* 7A8h */ int field_7A8; + /* 7ACh */ int field_7AC; + /* 7B0h */ int field_7B0; + /* 7B4h */ int field_7B4; + /* 7B8h */ int field_7B8; + /* 7BCh */ int field_7BC; + /* 7C0h */ int field_7C0; + /* 7C4h */ int field_7C4; + /* 7C8h */ int field_7C8; + /* 7CCh */ int field_7CC; + /* 7D0h */ int field_7D0; + /* 7D4h */ int field_7D4; + /* 7D8h */ int field_7D8; + /* 7DCh */ int field_7DC; + /* 7E0h */ int field_7E0; + /* 7E4h */ int field_7E4; + /* 7E8h */ int field_7E8; + /* 7ECh */ int field_7EC; + /* 7F0h */ int field_7F0; + /* 7F4h */ int field_7F4; + /* 7F8h */ int field_7F8; + /* 7FCh */ int field_7FC; + /* 800h */ int field_800; + /* 804h */ int field_804; + /* 808h */ int field_808; + /* 80Ch */ int field_80C; + /* 810h */ int field_810; + /* 814h */ int field_814; + /* 818h */ int field_818; + /* 81Ch */ int field_81C; + /* 820h */ int field_820; + /* 824h */ int field_824; + /* 828h */ int field_828; + /* 82Ch */ int field_82C; + /* 830h */ int field_830; + /* 834h */ int field_834; + /* 838h */ int field_838; + /* 83Ch */ int field_83C; + /* 840h */ int field_840; + /* 844h */ int field_844; + /* 848h */ int field_848; + /* 84Ch */ int field_84C; + /* 850h */ int field_850; + /* 854h */ int field_854; + /* 858h */ int field_858; + /* 85Ch */ int field_85C; + /* 860h */ int field_860; + /* 864h */ int field_864; + /* 868h */ int field_868; + /* 86Ch */ int field_86C; + /* 870h */ int field_870; + /* 874h */ int field_874; + /* 878h */ int field_878; + /* 87Ch */ int field_87C; + /* 880h */ int field_880; + /* 884h */ int field_884; + /* 888h */ int field_888; + /* 88Ch */ int field_88C; + /* 890h */ int field_890; + /* 894h */ int field_894; + /* 898h */ int field_898; + /* 89Ch */ int field_89C; + /* 8A0h */ int field_8A0; + /* 8A4h */ int field_8A4; + /* 8A8h */ int field_8A8; + /* 8ACh */ int field_8AC; + /* 8B0h */ int field_8B0; + /* 8B4h */ int field_8B4; + /* 8B8h */ int field_8B8; + /* 8BCh */ int field_8BC; + /* 8C0h */ int field_8C0; + /* 8C4h */ int field_8C4; + /* 8C8h */ int field_8C8; + /* 8CCh */ int field_8CC; + /* 8D0h */ int field_8D0; + /* 8D4h */ int field_8D4; + /* 8D8h */ int field_8D8; + /* 8DCh */ int field_8DC; + /* 8E0h */ int field_8E0; + /* 8E4h */ int field_8E4; + /* 8E8h */ int field_8E8; + /* 8ECh */ int field_8EC; + /* 8F0h */ int field_8F0; + /* 8F4h */ int field_8F4; + /* 8F8h */ int field_8F8; + /* 8FCh */ int field_8FC; + /* 900h */ int field_900; + /* 904h */ int field_904; + /* 908h */ int field_908; + /* 90Ch */ int field_90C; + /* 910h */ int field_910; + /* 914h */ int field_914; + /* 918h */ int field_918; + /* 91Ch */ int field_91C; + /* 920h */ int field_920; + /* 924h */ int field_924; + /* 928h */ int field_928; + /* 92Ch */ int field_92C; + /* 930h */ int field_930; + /* 934h */ int field_934; + /* 938h */ int field_938; + /* 93Ch */ int field_93C; + /* 940h */ int field_940; + /* 944h */ int field_944; + /* 948h */ int field_948; + /* 94Ch */ int field_94C; + /* 950h */ int field_950; + /* 954h */ int field_954; + /* 958h */ int field_958; + /* 95Ch */ int field_95C; + /* 960h */ int field_960; + /* 964h */ int field_964; + /* 968h */ int field_968; + /* 96Ch */ int field_96C; + /* 970h */ int field_970; + /* 974h */ int field_974; + /* 978h */ int field_978; + /* 97Ch */ int field_97C; + /* 980h */ int field_980; + /* 984h */ int field_984; + /* 988h */ int field_988; + /* 98Ch */ int field_98C; + /* 990h */ int field_990; + /* 994h */ int field_994; + /* 998h */ int field_998; + /* 99Ch */ int field_99C; + /* 9A0h */ int field_9A0; + /* 9A4h */ int field_9A4; + /* 9A8h */ int field_9A8; + /* 9ACh */ int field_9AC; + /* 9B0h */ int field_9B0; + /* 9B4h */ int field_9B4; + /* 9B8h */ int field_9B8; + /* 9BCh */ int field_9BC; + /* 9C0h */ int field_9C0; + /* 9C4h */ int field_9C4; + /* 9C8h */ int field_9C8; + /* 9CCh */ int field_9CC; + /* 9D0h */ int field_9D0; + /* 9D4h */ int field_9D4; + /* 9D8h */ int field_9D8; + /* 9DCh */ int field_9DC; + /* 9E0h */ int field_9E0; + /* 9E4h */ int field_9E4; + /* 9E8h */ int field_9E8; + /* 9ECh */ int field_9EC; + /* 9F0h */ int field_9F0; + /* 9F4h */ int field_9F4; + /* 9F8h */ int field_9F8; + /* 9FCh */ int field_9FC; + /* A00h */ int field_A00; + /* A04h */ int field_A04; + /* A08h */ int field_A08; + /* A0Ch */ int field_A0C; + /* A10h */ int field_A10; + /* A14h */ int field_A14; + /* A18h */ int field_A18; + /* A1Ch */ int field_A1C; + /* A20h */ int field_A20; + /* A24h */ int field_A24; + /* A28h */ int field_A28; + /* A2Ch */ int field_A2C; + /* A30h */ int field_A30; + /* A34h */ int field_A34; + /* A38h */ int field_A38; + /* A3Ch */ int field_A3C; + /* A40h */ int field_A40; + /* A44h */ int field_A44; + /* A48h */ int field_A48; + /* A4Ch */ int field_A4C; + /* A50h */ int field_A50; + /* A54h */ int field_A54; + /* A58h */ int field_A58; + /* A5Ch */ int field_A5C; + /* A60h */ int field_A60; + /* A64h */ int field_A64; + /* A68h */ int field_A68; + /* A6Ch */ int field_A6C; + /* A70h */ int field_A70; + /* A74h */ int field_A74; + /* A78h */ int field_A78; + /* A7Ch */ int field_A7C; + /* A80h */ int field_A80; + /* A84h */ int field_A84; + /* A88h */ int field_A88; + /* A8Ch */ int field_A8C; + /* A90h */ int field_A90; + /* A94h */ int field_A94; + /* A98h */ int field_A98; + /* A9Ch */ int field_A9C; + /* AA0h */ int field_AA0; + /* AA4h */ int field_AA4; + /* AA8h */ int field_AA8; + /* AACh */ int field_AAC; + /* AB0h */ int field_AB0; + /* AB4h */ int field_AB4; + /* AB8h */ int field_AB8; + /* ABCh */ int field_ABC; + /* AC0h */ int field_AC0; + /* AC4h */ int field_AC4; + /* AC8h */ int field_AC8; + /* ACCh */ int field_ACC; + /* AD0h */ int field_AD0; + /* AD4h */ int field_AD4; + /* AD8h */ int field_AD8; + /* ADCh */ int field_ADC; + /* AE0h */ int field_AE0; + /* AE4h */ int field_AE4; + /* AE8h */ int field_AE8; + /* AECh */ int field_AEC; + /* AF0h */ int field_AF0; + /* AF4h */ int field_AF4; + /* AF8h */ int field_AF8; + /* AFCh */ int field_AFC; + /* B00h */ int field_B00; + /* B04h */ int field_B04; + /* B08h */ int field_B08; + /* B0Ch */ int field_B0C; + /* B10h */ int field_B10; + /* B14h */ int field_B14; + /* B18h */ int field_B18; + /* B1Ch */ int field_B1C; + /* B20h */ int field_B20; + /* B24h */ int field_B24; + /* B28h */ int field_B28; + /* B2Ch */ int field_B2C; + /* B30h */ int field_B30; + /* B34h */ int field_B34; + /* B38h */ int field_B38; + /* B3Ch */ int field_B3C; + /* B40h */ int field_B40; + /* B44h */ int field_B44; + /* B48h */ int field_B48; + /* B4Ch */ int field_B4C; + /* B50h */ int field_B50; + /* B54h */ int field_B54; + /* B58h */ int field_B58; + /* B5Ch */ int field_B5C; + /* B60h */ int field_B60; + /* B64h */ int field_B64; + /* B68h */ int field_B68; + /* B6Ch */ int field_B6C; + /* B70h */ int field_B70; + /* B74h */ int field_B74; + /* B78h */ int field_B78; + /* B7Ch */ int field_B7C; + /* B80h */ int field_B80; + /* B84h */ int field_B84; + /* B88h */ int field_B88; + /* B8Ch */ int field_B8C; + /* B90h */ int field_B90; + /* B94h */ int field_B94; + /* B98h */ int field_B98; + /* B9Ch */ int field_B9C; + /* BA0h */ int field_BA0; + /* BA4h */ int field_BA4; + /* BA8h */ int field_BA8; + /* BACh */ int field_BAC; + /* BB0h */ int field_BB0; + /* BB4h */ int field_BB4; + /* BB8h */ int field_BB8; + /* BBCh */ int field_BBC; + /* BC0h */ int field_BC0; + /* BC4h */ int field_BC4; + /* BC8h */ int field_BC8; + /* BCCh */ int field_BCC; + /* BD0h */ int field_BD0; + /* BD4h */ int field_BD4; + /* BD8h */ int field_BD8; + /* BDCh */ int field_BDC; + /* BE0h */ int field_BE0; + /* BE4h */ int field_BE4; + /* BE8h */ int field_BE8; + /* BECh */ int field_BEC; + /* BF0h */ int field_BF0; + /* BF4h */ int field_BF4; + /* BF8h */ int field_BF8; + /* BFCh */ int field_BFC; + /* C00h */ int field_C00; + /* C04h */ int field_C04; + /* C08h */ int field_C08; + /* C0Ch */ int field_C0C; + /* C10h */ int field_C10; + /* C14h */ int field_C14; + /* C18h */ int field_C18; + /* C1Ch */ int field_C1C; + /* C20h */ int field_C20; + /* C24h */ int field_C24; + /* C28h */ int field_C28; + /* C2Ch */ int field_C2C; + /* C30h */ int field_C30; + /* C34h */ int field_C34; + /* C38h */ int field_C38; + /* C3Ch */ int field_C3C; + /* C40h */ int field_C40; + /* C44h */ int field_C44; + /* C48h */ int field_C48; + /* C4Ch */ int field_C4C; + /* C50h */ int field_C50; + /* C54h */ int field_C54; + /* C58h */ int field_C58; + /* C5Ch */ int field_C5C; + /* C60h */ int field_C60; + /* C64h */ int field_C64; + /* C68h */ int field_C68; + /* C6Ch */ int field_C6C; + /* C70h */ int field_C70; + /* C74h */ int field_C74; + /* C78h */ int field_C78; + /* C7Ch */ int field_C7C; + /* C80h */ int field_C80; + /* C84h */ int field_C84; + /* C88h */ int field_C88; + /* C8Ch */ int field_C8C; + /* C90h */ int field_C90; + /* C94h */ int field_C94; + /* C98h */ int field_C98; + /* C9Ch */ int field_C9C; + /* CA0h */ int field_CA0; + /* CA4h */ int field_CA4; + /* CA8h */ int field_CA8; + /* CACh */ int field_CAC; + /* CB0h */ int field_CB0; + /* CB4h */ int field_CB4; + /* CB8h */ int field_CB8; + /* CBCh */ int field_CBC; + /* CC0h */ int field_CC0; + /* CC4h */ int field_CC4; + /* CC8h */ int field_CC8; + /* CCCh */ int field_CCC; + /* CD0h */ int field_CD0; + /* CD4h */ int field_CD4; + /* CD8h */ int field_CD8; + /* CDCh */ int field_CDC; + /* CE0h */ int field_CE0; + /* CE4h */ int field_CE4; + /* CE8h */ int field_CE8; + /* CECh */ int field_CEC; + /* CF0h */ int field_CF0; + /* CF4h */ int field_CF4; + /* CF8h */ int field_CF8; + /* CFCh */ int field_CFC; + /* D00h */ int field_D00; + /* D04h */ int field_D04; + /* D08h */ int field_D08; + /* D0Ch */ int field_D0C; + /* D10h */ int field_D10; + /* D14h */ int field_D14; + /* D18h */ int field_D18; + /* D1Ch */ int field_D1C; + /* D20h */ int field_D20; + /* D24h */ int field_D24; + /* D28h */ int field_D28; + /* D2Ch */ int field_D2C; + /* D30h */ int field_D30; + /* D34h */ int field_D34; + /* D38h */ int field_D38; + /* D3Ch */ int field_D3C; + /* D40h */ int field_D40; + /* D44h */ int field_D44; + /* D48h */ int field_D48; + /* D4Ch */ int field_D4C; + /* D50h */ int field_D50; + /* D54h */ int field_D54; + /* D58h */ int field_D58; + /* D5Ch */ int field_D5C; + /* D60h */ int field_D60; + /* D64h */ int field_D64; + /* D68h */ int field_D68; + /* D6Ch */ int field_D6C; + /* D70h */ int field_D70; + /* D74h */ int field_D74; + /* D78h */ int field_D78; + /* D7Ch */ int field_D7C; + /* D80h */ int field_D80; + /* D84h */ int field_D84; + /* D88h */ int field_D88; + /* D8Ch */ int field_D8C; + /* D90h */ int field_D90; + /* D94h */ int field_D94; + /* D98h */ int field_D98; + /* D9Ch */ int field_D9C; + /* DA0h */ int field_DA0; + /* DA4h */ int field_DA4; + /* DA8h */ int field_DA8; + /* DACh */ int field_DAC; + /* DB0h */ int field_DB0; + /* DB4h */ int field_DB4; + /* DB8h */ int field_DB8; + /* DBCh */ int field_DBC; + /* DC0h */ int field_DC0; + /* DC4h */ int field_DC4; + /* DC8h */ int field_DC8; + /* DCCh */ int field_DCC; + /* DD0h */ int field_DD0; + /* DD4h */ int field_DD4; + /* DD8h */ int field_DD8; + /* DDCh */ int field_DDC; + /* DE0h */ int field_DE0; + /* DE4h */ int field_DE4; + /* DE8h */ int field_DE8; + /* DECh */ int field_DEC; + /* DF0h */ int field_DF0; + /* DF4h */ int field_DF4; + /* DF8h */ int field_DF8; + /* DFCh */ int field_DFC; + /* E00h */ int field_E00; + /* E04h */ int field_E04; + /* E08h */ int field_E08; + /* E0Ch */ int field_E0C; + /* E10h */ int field_E10; + /* E14h */ int field_E14; + /* E18h */ int field_E18; + /* E1Ch */ int field_E1C; + /* E20h */ int field_E20; + /* E24h */ int field_E24; + /* E28h */ int field_E28; + /* E2Ch */ int field_E2C; + /* E30h */ int field_E30; + /* E34h */ int field_E34; + /* E38h */ int field_E38; + /* E3Ch */ int field_E3C; + /* E40h */ int field_E40; + /* E44h */ int field_E44; + /* E48h */ int field_E48; + /* E4Ch */ int field_E4C; + /* E50h */ int field_E50; + /* E54h */ int field_E54; + /* E58h */ int field_E58; + /* E5Ch */ int field_E5C; + /* E60h */ int field_E60; + /* E64h */ int field_E64; + /* E68h */ int field_E68; + /* E6Ch */ int field_E6C; + /* E70h */ int field_E70; + /* E74h */ int field_E74; + /* E78h */ int field_E78; + /* E7Ch */ int field_E7C; + /* E80h */ int field_E80; + /* E84h */ int field_E84; + /* E88h */ int field_E88; + /* E8Ch */ int field_E8C; + /* E90h */ int field_E90; + /* E94h */ int field_E94; + /* E98h */ int field_E98; + /* E9Ch */ int field_E9C; + /* EA0h */ int field_EA0; + /* EA4h */ int field_EA4; + /* EA8h */ int field_EA8; + /* EACh */ int field_EAC; + /* EB0h */ int field_EB0; + /* EB4h */ int field_EB4; + /* EB8h */ int field_EB8; + /* EBCh */ int field_EBC; + /* EC0h */ int field_EC0; + /* EC4h */ int field_EC4; + /* EC8h */ int field_EC8; + /* ECCh */ int field_ECC; + /* ED0h */ int field_ED0; + /* ED4h */ int field_ED4; + /* ED8h */ int field_ED8; + /* EDCh */ int field_EDC; + /* EE0h */ int field_EE0; + /* EE4h */ int field_EE4; + /* EE8h */ int field_EE8; + /* EECh */ int field_EEC; + /* EF0h */ int field_EF0; + /* EF4h */ int field_EF4; + /* EF8h */ int field_EF8; + /* EFCh */ int field_EFC; + /* F00h */ int field_F00; + /* F04h */ int field_F04; + /* F08h */ int field_F08; + /* F0Ch */ int field_F0C; + /* F10h */ int field_F10; + /* F14h */ int field_F14; + /* F18h */ int field_F18; + /* F1Ch */ int field_F1C; + /* F20h */ int field_F20; + /* F24h */ int field_F24; + /* F28h */ int field_F28; + /* F2Ch */ int field_F2C; + /* F30h */ int field_F30; + /* F34h */ int field_F34; + /* F38h */ int field_F38; + /* F3Ch */ int field_F3C; + /* F40h */ int field_F40; + /* F44h */ int field_F44; + /* F48h */ int field_F48; + /* F4Ch */ int field_F4C; + /* F50h */ int field_F50; + /* F54h */ int field_F54; + /* F58h */ int field_F58; + /* F5Ch */ int field_F5C; + /* F60h */ int field_F60; + /* F64h */ int field_F64; + /* F68h */ int field_F68; + /* F6Ch */ int field_F6C; + /* F70h */ int field_F70; + /* F74h */ int field_F74; + /* F78h */ int field_F78; + /* F7Ch */ int field_F7C; + /* F80h */ int field_F80; + /* F84h */ int field_F84; + /* F88h */ int field_F88; + /* F8Ch */ int field_F8C; + /* F90h */ int field_F90; + /* F94h */ int field_F94; + /* F98h */ int field_F98; + /* F9Ch */ int field_F9C; + /* FA0h */ int field_FA0; + /* FA4h */ int field_FA4; + /* FA8h */ int field_FA8; + /* FACh */ int field_FAC; + /* FB0h */ int field_FB0; + /* FB4h */ int field_FB4; + /* FB8h */ int field_FB8; + /* FBCh */ int field_FBC; + /* FC0h */ int field_FC0; + /* FC4h */ int field_FC4; + /* FC8h */ int field_FC8; + /* FCCh */ int field_FCC; + /* FD0h */ int field_FD0; + /* FD4h */ int field_FD4; + /* FD8h */ int field_FD8; + /* FDCh */ int field_FDC; + /* FE0h */ int field_FE0; + /* FE4h */ int field_FE4; + /* FE8h */ int field_FE8; + /* FECh */ int field_FEC; + /* FF0h */ int field_FF0; + /* FF4h */ int field_FF4; + /* FF8h */ int field_FF8; + /* FFCh */ int field_FFC; + /* 1000h */ int field_1000; + /* 1004h */ int field_1004; + /* 1008h */ ResourceKey field_1008; + /* 1014h */ int field_1014; + /* 1018h */ int field_1018; + /* 101Ch */ int field_101C; + /* 1020h */ int field_1020; + /* 1024h */ int field_1024; + /* 1028h */ int field_1028; + /* 102Ch */ int field_102C; + /* 1030h */ int field_1030; + /* 1034h */ int field_1034; + /* 1038h */ int field_1038; + /* 103Ch */ int field_103C; + /* 1040h */ int field_1040; + /* 1044h */ int field_1044; + /* 1048h */ int field_1048; + /* 104Ch */ int field_104C; + /* 1050h */ int field_1050; + /* 1054h */ int field_1054; + /* 1058h */ int field_1058; + /* 105Ch */ int field_105C; + /* 1060h */ int field_1060; + /* 1064h */ int field_1064; + /* 1068h */ int field_1068; + /* 106Ch */ int field_106C; + /* 1070h */ int field_1070; + /* 1074h */ int field_1074; + /* 1078h */ int field_1078; + /* 107Ch */ int field_107C; + /* 1080h */ int field_1080; + /* 1084h */ int field_1084; + /* 1088h */ int field_1088; + /* 108Ch */ int field_108C; + /* 1090h */ int field_1090; + /* 1094h */ int field_1094; + /* 1098h */ int field_1098; + /* 109Ch */ int field_109C; + /* 10A0h */ int field_10A0; + /* 10A4h */ int field_10A4; + /* 10A8h */ int field_10A8; + /* 10ACh */ int field_10AC; + /* 10B0h */ int field_10B0; + /* 10B4h */ int field_10B4; + /* 10B8h */ int field_10B8; + /* 10BCh */ int field_10BC; + /* 10C0h */ int field_10C0; + /* 10C4h */ int field_10C4; + /* 10C8h */ int field_10C8; + /* 10CCh */ int field_10CC; + /* 10D0h */ int field_10D0; + /* 10D4h */ int field_10D4; + /* 10D8h */ int field_10D8; + /* 10DCh */ int field_10DC; + /* 10E0h */ int field_10E0; + /* 10E4h */ int field_10E4; + /* 10E8h */ int field_10E8; + /* 10ECh */ int field_10EC; + /* 10F0h */ int field_10F0; + /* 10F4h */ int field_10F4; + /* 10F8h */ int field_10F8; + /* 10FCh */ int field_10FC; + /* 1100h */ int field_1100; + /* 1104h */ int field_1104; + /* 1108h */ int field_1108; + /* 110Ch */ int field_110C; + /* 1110h */ int field_1110; + /* 1114h */ int field_1114; + /* 1118h */ int field_1118; + /* 111Ch */ int field_111C; + /* 1120h */ int field_1120; + /* 1124h */ int field_1124; + /* 1128h */ int field_1128; + /* 112Ch */ int field_112C; + /* 1130h */ int field_1130; + /* 1134h */ int field_1134; + /* 1138h */ int field_1138; + /* 113Ch */ int field_113C; + /* 1140h */ int field_1140; + /* 1144h */ int field_1144; + /* 1148h */ int field_1148; + /* 114Ch */ int field_114C; + /* 1150h */ int field_1150; + /* 1154h */ int field_1154; + /* 1158h */ int field_1158; + /* 115Ch */ int field_115C; + /* 1160h */ int field_1160; + /* 1164h */ int field_1164; + /* 1168h */ int field_1168; + /* 116Ch */ int field_116C; + /* 1170h */ int field_1170; + /* 1174h */ int field_1174; + /* 1178h */ int field_1178; + /* 117Ch */ int field_117C; + /* 1180h */ int field_1180; + /* 1184h */ int field_1184; + /* 1188h */ int field_1188; + /* 118Ch */ int field_118C; + /* 1190h */ int field_1190; + /* 1194h */ int field_1194; + /* 1198h */ int field_1198; + /* 119Ch */ int field_119C; + /* 11A0h */ int field_11A0; + /* 11A4h */ int field_11A4; + /* 11A8h */ int field_11A8; + /* 11ACh */ int field_11AC; + /* 11B0h */ int field_11B0; + /* 11B4h */ int field_11B4; + /* 11B8h */ int field_11B8; + /* 11BCh */ int field_11BC; + /* 11C0h */ int field_11C0; + /* 11C4h */ int field_11C4; + /* 11C8h */ int field_11C8; + /* 11CCh */ int field_11CC; + /* 11D0h */ int field_11D0; + /* 11D4h */ int field_11D4; + /* 11D8h */ int field_11D8; + /* 11DCh */ int field_11DC; + /* 11E0h */ int field_11E0; + /* 11E4h */ int field_11E4; + /* 11E8h */ int field_11E8; + /* 11ECh */ int field_11EC; + /* 11F0h */ int field_11F0; + /* 11F4h */ int field_11F4; + /* 11F8h */ int field_11F8; + /* 11FCh */ int field_11FC; + /* 1200h */ int field_1200; + /* 1204h */ int field_1204; + /* 1208h */ int field_1208; + /* 120Ch */ int field_120C; + /* 1210h */ int field_1210; + /* 1214h */ int field_1214; + /* 1218h */ int field_1218; + /* 121Ch */ int field_121C; + /* 1220h */ int field_1220; + /* 1224h */ int field_1224; + /* 1228h */ int field_1228; + /* 122Ch */ int field_122C; + /* 1230h */ int field_1230; + /* 1234h */ int field_1234; + /* 1238h */ int field_1238; + /* 123Ch */ int field_123C; + /* 1240h */ int field_1240; + /* 1244h */ int field_1244; }; + ASSERT_SIZE(IBakeManager, 0x1248); namespace Addresses(IBakeManager) { DeclareAddress(Get); } - inline BakeParameters::BakeParameters(int16_t _field_04, int16_t _field_06, uint32_t defaultID) - : field_04(_field_04) - , field_06(_field_06) - , mDefaultID(defaultID) + inline BakeParameters::BakeParameters(int16_t _mFlag, int16_t _mPriority, uint32_t mTag) + : mFlag(_mFlag) + , mPriority(_mPriority) + , mTag(mTag) { } diff --git a/Spore ModAPI/Spore/Editors/Editor.h b/Spore ModAPI/Spore/Editors/Editor.h index 99e4af96..2ab34a24 100644 --- a/Spore ModAPI/Spore/Editors/Editor.h +++ b/Spore ModAPI/Spore/Editors/Editor.h @@ -216,6 +216,8 @@ namespace Editors static uint32_t GetTypeIDForAssetType(uint32_t assetTypeID); + static void ComputeCreatureVerbIcons(cCreatureDataResource* creatureData, int VerbTrayCollection, int brainLevel, float param_4); + public: int vftable_1C; @@ -287,9 +289,9 @@ namespace Editors /* CCh */ EditorRigblockPtr mpActivePart; /* D0h */ EditorRigblockPtr mpMovingPart; // the part that is being moved, only when mouse is being clicked /* D4h */ EditorRigblockPtr mpSelectedPart; // also valid for spines - /* D8h */ EditorRigblockPtr field_D8; - /* DCh */ EditorRigblockPtr field_DC; - /* E0h */ bool field_E0; + /* D8h */ EditorRigblockPtr mPreviousSelectedBlock; + /* DCh */ EditorRigblockPtr mToBeSelectedBlock; + /* E0h */ bool mToBeSelectedTorso; /* E4h */ EditorBaseHandle* mpActiveHandle; // morph handles /// Is the mouse over the skin of the creature? /* E8h */ bool mbMouseIsInSkin; @@ -393,18 +395,18 @@ namespace Editors /* 290h */ int field_290; /* 294h */ IShadowWorldPtr mpShadowWorld; /* 298h */ Graphics::ShadowMapInfo* mpShadowMapInfo; - /* 29Ch */ int field_29C; - /* 2A0h */ int field_2A0; - /* 2A4h */ int field_2A4; + /* 29Ch */ int mDefaultPaintTheme; + /* 2A0h */ int mCurrentPaintTheme; + /* 2A4h */ int mVerbIconTray; /// The save extension key which will be parsed both into a key and a three letter extension. /* 2A8h */ uint32_t mSaveExtension; /// The save directory key, Resource::SaveAreaID /* 2ACh */ uint32_t mSaveDirectory; /* 2B0h */ bool mIsActive; - /* 2B1h */ char field_2B1; // not initialized + /* 2B1h */ bool mManipulatedBlockFromPalette; // not initialized /* 2B2h */ bool mbShowVertebrae; // true - /* 2B3h */ char field_2B3; - /* 2B4h */ char field_2B4; + /* 2B3h */ bool mIgnoreMouseMove; + /* 2B4h */ bool mUnselectCurrentBlock; /* 2B5h */ bool mbDisableCreatureAnimIK; // not initialized /// The width of the space that the model skin is constrained to. /* 2B8h */ float mBoundSize; // 2.0 @@ -643,6 +645,7 @@ namespace Editors DeclareAddress(GetEditorForAssetType); DeclareAddress(GetNameForAssetType); DeclareAddress(GetTypeIDForAssetType); + DeclareAddress(ComputeCreatureVerbIcons); } #ifdef SDK_TO_GHIDRA diff --git a/Spore ModAPI/Spore/Editors/EditorModel.h b/Spore ModAPI/Spore/Editors/EditorModel.h index fc6baf4e..8c780140 100644 --- a/Spore ModAPI/Spore/Editors/EditorModel.h +++ b/Spore ModAPI/Spore/Editors/EditorModel.h @@ -70,20 +70,20 @@ namespace Editors public: /* 0Ch */ ResourceKey mKey; /* 18h */ eastl::vector mRigblocks; - /* 2Ch */ bool field_2C; - /* 30h */ int field_30; // intrusive_ptr, but not to an Object - /* 34h */ bool field_34; - /* 38h */ float field_38; - /* 3Ch */ float field_3C; - /* 40h */ float field_40; // -2.0 - /* 44h */ float field_44; // 2.0 - /* 48h */ float field_48; - /* 4Ch */ bool field_4C; - /* 4Dh */ bool field_4D; - /* 4Eh */ bool field_4E; // true - /* 4Fh */ bool field_4F; //TODO allows symmetry? - /* 50h */ bool field_50; - /* 51h */ bool field_51; + /* 2Ch */ bool mbAllBlocksLoaded; + /* 30h */ int mPhysicsWorld; // intrusive_ptr, but not to an Object + /* 34h */ bool mUseDynamics; + /* 38h */ float mBounds; + /* 3Ch */ float mFeetBounds; + /* 40h */ float mMinHeight; // -2.0 + /* 44h */ float mMaxHeight; // 2.0 + /* 48h */ float mMinimumLeglessCreatureHeight; + /* 4Ch */ bool mShowHiddenHandles; + /* 4Dh */ bool mShowBoneLengthHandles; + /* 4Eh */ bool mUseBoundsForDelete; // true + /* 4Fh */ bool mUsingSymmetry; //TODO allows symmetry? + /* 50h */ bool mSkinNeedsUpdating; + /* 51h */ bool mChanged; /* 54h */ int mTranslationOptions; /* 58h */ uint32_t mModelType; /* 5Ch */ eastl::string16 mName; @@ -92,7 +92,7 @@ namespace Editors /* 8Ch */ uint32_t mSkinEffectIDs[3]; // Skinpaint IDs /* 98h */ int mSkinEffectSeeds[3]; // 1234 /* A4h */ ColorRGB mColors[3]; // Skinpaint Colors - /* C8h */ eastl::vector field_C8; + /* C8h */ eastl::vector mBBoxesOverride; /* DCh */ int mZCorpScore; // not initialized }; ASSERT_SIZE(EditorModel, 0xE0); diff --git a/Spore ModAPI/Spore/Editors/EditorRigblock.h b/Spore ModAPI/Spore/Editors/EditorRigblock.h index 83275bf4..9d1cc4b8 100644 --- a/Spore ModAPI/Spore/Editors/EditorRigblock.h +++ b/Spore ModAPI/Spore/Editors/EditorRigblock.h @@ -41,6 +41,126 @@ namespace Editors class EditorRigblock; class EditorModel; + enum modelCapability + { + kModelCapabilityPerch = 0x0551bf16, + kModelCapabilitySpine = 0x100f0f5a, + kModelCapabilityLimb = 0xb00f0fdf, + kModelCapabilityNoStretch = 0x06F079DF, + kModelCapabilityGrasper = 0xb00f0fe2, + kModelCapabilityEar = 0xb00f0fe5, + kModelCapabilityEye = 0xb00f0fe9, + kModelCapabilityMouth = 0xb00f0fec, + kModelCapabilityFoot = 0xb00f0fef, + kModelCapabilitySlash = 0xb00f0ff2, + kModelCapabilityPoke = 0xb00f0ff4, + kModelCapabilityBash = 0xb00f0ff7, + kModelCapabilityFruit = 0xd00f0ffb, + kModelCapabilityFin = 0xd00f0ffe, + kModelCapabilityLiquid = 0x02294de1, + kModelCapabilityDayVision = 0x022e7977, + kModelCapabilityNightVision = 0x022e7777, + kModelCapabilityCarnivorous = 0x022e7847, + kModelCapabilityHerbivorous = 0x022e785c, + kModelCapabilityDetail = 0x025c6878, + kModelCapabilitySocial = 0x91a570ba, + kModelCapabilityHealth = 0x31c3e5b2, + kModelCapabilityStealth = 0x51c3e5b4, + kModelCapabilityCuteness = 0xb1c3e5b5, + kModelCapabilityJump = 0x330c117a, + kModelCapabilityBlock = 0xf354a879, + kModelCapabilityCall = 0xf354a87a, + kModelCapabilityCreatureSpeed = 0xb354a87c, + kModelCapabilitySprint = 0x3386c531, + kModelCapabilityWing = 0x04f4d188, + kModelCapabilitySense = 0xb3e30313, + + kModelCapabilityMean = 0xb1c3e5b6, + kModelCapabilityBite = 0xb1c3e5b7, + kModelCapabilityCharge = 0xb1c3e5b8, + kModelCapabilitySpit = 0xb1c3e5b9, + kModelCapabilityStrike = 0xb1c3e5c0, + kModelCapabilityDance = 0xb1c3e5c1, + kModelCapabilityVocalize = 0xb1c3e5c2, + kModelCapabilityFlaunt = 0xb1c3e5c3, + kModelCapabilityPosture = 0xb1c3e5c4, + kModelCapabilityGlide = 0x04f4e1b4, + + kModelCapabilityTribeAttack = 0x055d370e, + kModelCapabilityTribeSocial = 0x055d3747, + kModelCapabilityTribeArmor = 0x055d374c, + kModelCapabilityTribeGather = 0x055d3750, + kModelCapabilityTribeFishing = 0x055d3754, + + kModelCapabilityEnergyRegen = 0x073ce5dd, + kModelCapabilityAdventurerMissile = 0x0732c356, + kModelCapabilityAdventurerEnergyBlade = 0x073930ea, + kModelCapabilityAdventurerShieldGenerator = 0x073e33c7, + kModelCapabilityAdventurerHoloCharm = 0x074260ec, + kModelCapabilityAdventurerLightningSword = 0x075f5ba0, + kModelCapabilityAdventurerPulseGun = 0x075f5ba6, + kModelCapabilityAdventurerBattleArmor = 0x075f5bab, + kModelCapabilityAdventurerPoweredArmor = 0x075f5baf, + kModelCapabilityAdventurerAbsorptionShield = 0x075f5bb4, + kModelCapabilityAdventurerHealthRegen = 0x075f5bb7, + kModelCapabilityAdventurerHealthBonus = 0x075f5bbc, + kModelCapabilityAdventurerSummonSwarm = 0x075f5bbf, + kModelCapabilityAdventurerMindMeld = 0x075f5bc3, + kModelCapabilityAdventurerPoisonBlade = 0x075f5bc8, + kModelCapabilityAdventurerFreeze = 0x075f5bcb, + kModelCapabilityAdventurerGracefulWaltz = 0x075f5bcf, + kModelCapabilityAdventurerHarmoniousSong = 0x075f5bd2, + kModelCapabilityAdventurerRoyalCharm = 0x075f5bd6, + kModelCapabilityAdventurerRadiantPose = 0x075f5bda, + kModelCapabilityAdventurerSprintBurst = 0x075f5bde, + kModelCapabilityAdventurerHover = 0x075f5be3, + kModelCapabilityAdventurerStealthField = 0x075f5be6, + kModelCapabilityAdventurerJumpJet = 0x075f5bea, + kModelCapabilityAdventurerInspiringSong = 0x075f5bee, + kModelCapabilityAdventurerStunningDance = 0x075f5bf2, + kModelCapabilityAdventurerConfettiPose = 0x075f5bf7, + kModelCapabilityAdventurerEnergyStorage = 0x075f5bfa, + + kModelCapabilityVehicleSpeed = 0x11b78a70, + kModelCapabilityVehicleDefense = 0x11b78a71, + kModelCapabilityVehiclePower = 0x11b78a72, + kModelCapabilityVehicleMilitaryPower = 0x06329468, + kModelCapabilityVehicleReligiousPower = 0x06329469, + kModelCapabilityVehicleEconomicPower = 0x0632946a, + + kModelCapabilityCellFilter = 0x11b79a70, + kModelCapabilityCellSpike = 0x11b79a71, + kModelCapabilityCellJet = 0x11b79a72, + kModelCapabilityCellFlagella = 0x032f92e6, + kModelCapabilityCellJaw = 0x11b79a74, + kModelCapabilityCellElectric = 0x11b79a75, + kModelCapabilityCellPoison = 0x11b79a76, + kModelCapabilityCellCilia = 0x11b79a77, + kModelCapabilityCellPoker = 0x11b79a78, + + kModelCapabilityCellEye = 0x11b79a73, + kModelCapabilityCellMouth = 0x11b79301, + kModelCapabilityCellMovement = 0x11b79302, + kModelCapabilityCellWeapon = 0x11b79303, + kModelCapabilityCellWeaponCharging = 0x11b79304, + kModelCapabilityCellGameSpeed = 0x066783b4, + + kModelCapabilityCellCarnivore = 0x4d192a1, + kModelCapabilityCellOmnivore = 0x4d18972, + kModelCapabilityCellStarvivore = 0x4d18c4c, + kModelCapabilityCellStarvivore2 = 0x4d192a14, + kModelCapabilityCellHealth = 0x4d18efd, + kModelCapabilityCellHerbivore = 0x4d192a2, + kModelCapabilityCellProboscis = 0x4d192a3, + + kModelCapabilityCell_herbivore_carnivore_proboscis = 0x50c34699, + kModelCapabilityCell_herbivore_carnivore = 0x177209ee, + kModelCapabilityCell_herbivore_proboscis = 0x64e7222b, + kModelCapabilityCell_carnivore_proboscis = 0xf613df04, + + kModelCapabilityEyeOverlayEffect = 0xF354A870, + }; + struct EditorRigblockCapability { /// Property ID used to check the capability, such as `modelCapabilityAdventurerMissile` @@ -79,6 +199,17 @@ namespace Editors }; ASSERT_SIZE(UnkEditorRigblockStruct1, 0x38); + + enum eBlockUIState + { + kSPUIStateDefault = 0, + kSPUIStateInvalid = 1, + kSPUIStateGhost = 2, + kSPUIStatePaintMode = 3, + kSPUIStateBadLocation = 4, + kSPUIStatePrevent = 5, + }; + //TODO related with display? check SetShadedDisplay() struct UnkEditorRigblockStruct2 { @@ -215,26 +346,26 @@ namespace Editors /* 2Ch */ int field_2C; /* 30h */ float field_30; /* 34h */ bool field_34; // true - /* 38h */ UnkEditorRigblockStruct2 field_38; - /* 40h */ UnkEditorRigblockStruct2 field_40; + /* 38h */ UnkEditorRigblockStruct2 mUIState; + /* 40h */ UnkEditorRigblockStruct2 mLastUIState; /* 48h */ Vector3 mPosition; - /* 54h */ Vector3 lastPos; // updated when the part is clicked + /* 54h */ Vector3 mHistoryPosition; // updated when the part is clicked /// Combination of mUserOrientation and mOrientation /* 60h */ Matrix3 mTotalOrientation; - /* 84h */ Matrix3 field_84; + /* 84h */ Matrix3 mHistoryTotalOrientation; /* A8h */ Matrix3 mOrientation; - /* CCh */ Matrix3 field_CC; + /* CCh */ Matrix3 mHistoryBaseOrientation; /* F0h */ Matrix3 mUserOrientation; - /* 114h */ Matrix3 field_114; - /* 138h */ Vector3 field_138; // position relative to parent? - /* 144h */ Vector3 field_144; - /* 150h */ int field_150; // -2 + /* 114h */ Matrix3 mHistoryUserOrientation; + /* 138h */ Vector3 mSurfaceNormal; // position relative to parent? + /* 144h */ Vector3 mReplacePartDisplacement; + /* 150h */ int mSnapType; // -2 /* 154h */ EditorBaseHandlePtr mAxisHandles[3]; //TODO sub_483CE0 /* 160h */ EditorBaseHandlePtr mpRotationBallHandle; //TODO a handle, sub_482F30 - /* 164h */ int field_164; - /* 168h */ int field_168; - /* 16Ch */ float field_16C; - /* 170h */ Clock field_170; + /* 164h */ int mRotationRingHandleAnimID; + /* 168h */ int mVertebraAnimID; + /* 16Ch */ float mRotationRingHandleCurrentUnscaledRadius; + /* 170h */ Clock mTimer; /* 188h */ int field_188; /* 18Ch */ int field_18C; /* 190h */ int field_190; diff --git a/Spore ModAPI/Spore/Editors/VerbIconData.h b/Spore ModAPI/Spore/Editors/VerbIconData.h index d4398441..ca1ca929 100644 --- a/Spore ModAPI/Spore/Editors/VerbIconData.h +++ b/Spore ModAPI/Spore/Editors/VerbIconData.h @@ -96,7 +96,7 @@ namespace Editors /* 11h */ bool mVerbIconShowZeroLevel; /* 14h */ int mVerbIconTriggerKey; // -1 /* 18h */ float mVerbIconLevel; // not initialized - /* 1Ch */ float mVerbIconMaxLevel; + /* 1Ch */ eVerbIconCategory mVerbIconMaxLevel; /* 20h */ int field_20; // not initialized /* 24h */ eVerbIconCategory mVerbIconCategory; /* 28h */ uint32_t mVerbIconRepresentativeAnimation; // -1 diff --git a/Spore ModAPI/Spore/Simulator/SubSystem/GameViewManager.h b/Spore ModAPI/Spore/Simulator/SubSystem/GameViewManager.h index c43ee10b..7657f01e 100644 --- a/Spore ModAPI/Spore/Simulator/SubSystem/GameViewManager.h +++ b/Spore ModAPI/Spore/Simulator/SubSystem/GameViewManager.h @@ -137,6 +137,8 @@ namespace Simulator /* ACh */ eastl::vector field_AC; /* C0h */ bool field_C0; /* C1h */ bool field_C1; // visible? + /* C2h */ bool field_C2; + /* C3h */ bool field_C3; /* C4h */ eastl::intrusive_ptr field_C4; // release at 8 /* C8h */ eastl::map field_C8; // actually might be a set, of object TYPEs that are not visible? /* E4h */ IModelWorldPtr field_E4; // IModelWorld? diff --git a/Spore ModAPI/Spore/Simulator/SubSystem/ObstacleManager.h b/Spore ModAPI/Spore/Simulator/SubSystem/ObstacleManager.h index bb35fd8d..c4c0f2a4 100644 --- a/Spore ModAPI/Spore/Simulator/SubSystem/ObstacleManager.h +++ b/Spore ModAPI/Spore/Simulator/SubSystem/ObstacleManager.h @@ -20,7 +20,7 @@ namespace Simulator static cObstacleManager* Get(); public: - /* 20h */ int mFlags; + /* 20h */ uint32_t mFlags; /* 24h */ int field_24; /* 28h */ int field_28; /* 2Ch */ int field_2C; @@ -41,17 +41,18 @@ namespace Simulator /* 5498h */ float field_5498; /* 549Ch */ float field_549C; /* 54A0h */ float field_54A0; - /* 54A4h */ float field_54A4; + /* 54A4h */ float field_54A4; //the ptr? /* 54A8h */ eastl::hash_map field_54A8; /* 54C8h */ eastl::hash_map field_54C8; /* 54E8h */ eastl::hash_map field_54E8; /* 5508h */ eastl::fixed_vector field_5508; + /* 550ch */ eastl::fixed_vector field_550C; //i am not sure /* 55A0h */ uint32_t mPickObstacleTypes; /* 55A4h */ int field_55A4; /* 55A8h */ eastl::fixed_vector mObstaclesToAdd; /* 56C0h */ eastl::hash_map mTerrainModelReplacements; }; - ASSERT_SIZE(cObstacleManager, 0x56E0); + ASSERT_SIZE(cObstacleManager, 0x5778); namespace Addresses(cObstacleManager) { DeclareAddress(Get); // 0xB3D320 0xB3D4C0 diff --git a/Spore ModAPI/Spore/Simulator/cCreatureAbility.h b/Spore ModAPI/Spore/Simulator/cCreatureAbility.h index 627dd07c..01a1b8cf 100644 --- a/Spore ModAPI/Spore/Simulator/cCreatureAbility.h +++ b/Spore ModAPI/Spore/Simulator/cCreatureAbility.h @@ -38,10 +38,11 @@ namespace Simulator enum AbilityTypes { + kNone = 0, kTribeHorn = 5, kTribeMaraca = 6, kTribeDidgeridoo = 7, - kAutoAttack = 8, + kWeakBite = 8, kStealth = 13, kSpeed = 14, kBlock = 15, @@ -62,7 +63,7 @@ namespace Simulator kSprint = 39, kSight = 40, kStomp = 41, - kTribeAttackUnk = 42, + kTribeWeaponAttack = 42, kTribeSpear = 43, kTribeAttack = 44, kTribeSocial = 45, @@ -109,6 +110,15 @@ namespace Simulator kEnergyStorage = 87, }; + enum AbilityCategory + { + kCategorySocial = 0, + kCategoryAttack = 1, + kCategoryNeutral = 2, + kCategoryPassive = 3, + kCategorySuperPower = 4, + }; + //PLACEHOLDER loc_D1E9D0 uses ability type? /// Returns the animation ID at the given index, or 0x4330667 if there are no animation IDs in this ability or @@ -116,7 +126,7 @@ namespace Simulator /// @param uint32_t GetAnimationID(int index); - /* 08h */ int mType; + /* 08h */ AbilityTypes mType; /* 0Ch */ int mCategory; /* 10h */ int mSocialCategory; /* 14h */ LocalizedString nName; diff --git a/Spore ModAPI/Spore/Simulator/cSimulatorSpaceGame.h b/Spore ModAPI/Spore/Simulator/cSimulatorSpaceGame.h index 23d41446..290622f2 100644 --- a/Spore ModAPI/Spore/Simulator/cSimulatorSpaceGame.h +++ b/Spore ModAPI/Spore/Simulator/cSimulatorSpaceGame.h @@ -63,10 +63,10 @@ namespace Simulator /* 18h */ int field_18; //TODO space trading UI /* 1Ch */ int field_1C; // -1 /* 20h */ int mpCommunityEditor; //TODO cCommunityEditor - /* 24h */ int field_24; - /* 28h */ int field_28; - /* 2Ch */ int field_2C; // not initialized - /* 30h */ int field_30; // a class + /* 24h */ int mEditorResult; + /* 28h */ int mpCityHallPieMenu; + /* 2Ch */ int mpSelectedBuilding; // not initialized + /* 30h */ int mCachedEventData; // a class /* 34h */ float mSpacePhiOffsetGalaxy; /* 38h */ float mSpacePhiOffsetSolar; /* 3Ch */ float mPlanetCameraMouseRotationSpeed; // not initialized @@ -76,11 +76,11 @@ namespace Simulator /* 4Ch */ bool field_4C; /* 4Dh */ bool field_4D; /* 4Eh */ bool field_4E; - /* 4Fh */ bool field_4F; - /* 50h */ int field_50; + /* 4Fh */ short _padding_; + /* 50h */ eastl::bitset<5> mTransitioning; /* 54h */ cSimPlanetHighLODPtr mpHighLODPlanetSim; /* 58h */ App::MessageListenerData mMessageListenerData; - /* 6Ch */ bool field_6C; + /* 6Ch */ bool mSavePlanetOnDeactivate; /* 70h */ cBadgeManagerPtr mpBadgeManager; /* 74h */ bool field_74; /* 75h */ bool field_75; // true diff --git a/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h b/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h index 6af589fb..1693bce4 100644 --- a/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h +++ b/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h @@ -49,45 +49,65 @@ namespace Simulator typedef eastl::sp_fixed_hash_map UnkStructPool; ASSERT_SIZE(UnkStructPool, 0x4E0); - /* 00h */ UnkStructPool field_0; - /* 4E0h */ ResourceKey field_4E0[3]; //what is this? - /* 504h */ ResourceKey mSpeciesKey; + enum HuntingStyle + { + kSolo = 0, + kPack = 1, + }; + + enum StrafeMode + { + kNoStrafe = 0, + kScaledStrafe = 1, + kFullStrafe = 3, + }; + + enum DominantAbilityType + { + kAbilityTypeEqual = 0, + kAbilityTypeSocial = 1, + kAbilityTypeAttack = 2, + }; + + /* 00h */ UnkStructPool capsInfos; + /* 4E0h */ ResourceKey mSkinColors[3]; //what is this? + /* 504h */ ResourceKey mCreatureKey; /* 510h */ ResourceKey mBabyKey; - /* 51Ch */ eastl::string16 mName; - /* 52Ch */ eastl::string16 field_52C; - /* 53Ch */ int field_53C; + /* 51Ch */ eastl::string16 mCreatureName; + /* 52Ch */ eastl::string16 mCreatureDesc; + /* 53Ch */ uint32_t creatureSeq; /* 540h */ int mCost; - /* 544h */ int field_544; + /* 544h */ int mCreatureBaseSpeedGear; /* 548h */ float mCreatureAbilityJumping; /* 54Ch */ float mCreatureAbilityGliding; /* 550h */ float mCreatureAbilityFlapping; /* 554h */ Math::Vector3 mBoundingBoxUpper; /* 560h */ Math::Vector3 mBoundingBoxLower; /* 56Ch */ float mAdditionalHealth; // 100.0 - /* 570h */ float field_570; // 200.0 - /* 574h */ float field_574; //CreatureSize? + /* 570h */ float mSatiety; // 200.0 + /* 574h */ float mCreatureMass; /* 578h */ bool mHasPlantRoot; /* 57Ch */ ModelTypes mModelType; - /* 580h */ int field_580; // not initialized + /* 580h */ HuntingStyle mHuntingStyle; // not initialized /* 584h */ int field_584; // not initialized - /* 588h */ int field_588; // 1 - /* 58Ch */ float mNumFoot; - /* 590h */ float mNumGrasper; - /* 594h */ float mNumMouth; - /* 598h */ float mNumEar; + /* 588h */ StrafeMode field_588; // 1 //need check it + /* 58Ch */ float mNumFeet; + /* 590h */ float mNumGraspers; + /* 594h */ float mNumMouths; + /* 598h */ float mNumEars; /* 59Ch */ float mNumEye; - /* 5A0h */ float mCuteness1; - /* 5A4h */ float mCuteness2; - /* 5A8h */ float field_5A8; + /* 5A0h */ float mSumCutenessParts; + /* 5A4h */ float mNumCutenessParts; + /* 5A8h */ float mCutenessSum; /* 5ACh */ float mSocialSum; /* 5B0h */ float mAttackSum; /* 5B4h */ float mAttackMaxLevel; /* 5B8h */ float mSocialMaxLevel; /* 5BCh */ float mMeanness; - /* 5C0h */ float field_5C0; //itemUnlockLevel? - /* 5C4h */ float field_5C4; //itemUnlockLevel? - /* 5C8h */ int mDuration; // 5000 - /* 5CCh */ float mRefillAbilityBars; // 1.0 cCreatureAbility->mDuration / cCreatureAbility->mRecharge + /* 5C0h */ float mMaxPartLevel; + /* 5C4h */ float mAveragePartLevel; + /* 5C8h */ int mAbilityTime; // 5000 + /* 5CCh */ float mAbilityRecharge; // 1.0 cCreatureAbility->mDuration / cCreatureAbility->mRecharge /* 5D0h */ int mSprintBuff; // 2 /* 5D4h */ int mBiteLevel; /* 5D8h */ int mChargeLevel; @@ -98,7 +118,7 @@ namespace Simulator /* 5ECh */ int mCharmLevel; /* 5F0h */ int mPoseLevel; /* 5F4h */ int mStealthLevel; - /* 5F8h */ int field_5F8; + /* 5F8h */ int mBlockLevel; /* 5FCh */ int mMatingCall; /* 600h */ int mCreatureSpeedLevel; /* 604h */ int mHealthLevel; @@ -108,14 +128,14 @@ namespace Simulator /* 614h */ int mSprintLevel; /* 618h */ int mSight; //Sense /* 61Ch */ int mGlideLevel; - /* 620h */ int field_620; - /* 624h */ int field_624; + /* 620h */ int mPreferredSocialType; + /* 624h */ int mPreferredCombatType; /* 628h */ int mTribeAttackLevel; /* 62Ch */ int mTribeSocialLevel; /* 630h */ int mTribeArmorLevel; /* 634h */ int mTribeGatherLevel; /* 638h */ int mTribeFishingLevel; - /* 63Ch */ float mDamage; + /* 63Ch */ float mAdditionalDamage; /* 640h */ float mEnergyRecoveryRate; /* 644h */ float mMaxEnergy; /* 648h */ int mShieldGenerator; @@ -145,20 +165,20 @@ namespace Simulator /* 6A8h */ int mStunningDanceLevel; /* 6ACh */ int mConfettiPoseLevel; /* 6B0h */ float mAdventurerEnergyCost; - /* 6B4h */ int field_6B4; - /* 6B8h */ eastl::vector mFruits; //unk type + /* 6B4h */ DominantAbilityType mDominantAbilityType; + /* 6B8h */ eastl::vector mFruits; /* 6CCh */ bool mIsGameMode; //true if cSpeciesProfile was called in gameMode, false otherwise /* 6D0h */ uint32_t mFootWeaponOrMouthType; /* 6D4h */ eastl::fixed_vector mActiveAbilities; //TODO abilities /* 73Ch */ eastl::fixed_vector mPassiveAbilities; - /* 7A4h */ eastl::fixed_vector mSocialAbilityIndexes; - /* 80Ch */ bool field_80C; - /* 80Dh */ bool field_80D; - /* 810h */ eastl::fixed_vector mFruitIndexes; - /* 878h */ eastl::fixed_vector mMouthIndexes; - /* 8E0h */ eastl::fixed_vector mGraspersIndexes; - /* 948h */ eastl::fixed_vector mMouthsIndexes2; - /* 9B0h */ eastl::fixed_vector mGraspersIndexes2; + /* 7A4h */ eastl::fixed_vector mSocialAbilityIndexes; + /* 80Ch */ bool mIsPlant; //need check it + /* 80Dh */ bool mBIndexesConverted; //need check it + /* 810h */ eastl::fixed_vector mFruitIndexes; + /* 878h */ eastl::fixed_vector mMouthIndexes; + /* 8E0h */ eastl::fixed_vector mGraspersIndexes; + /* 948h */ eastl::fixed_vector mMouthsIndexes2; + /* 9B0h */ eastl::fixed_vector mGraspersIndexes2; }; ASSERT_SIZE(cSpeciesProfile, 0xA18); diff --git a/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h b/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h index 45f5bf38..a4225a2e 100644 --- a/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h +++ b/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h @@ -4,6 +4,7 @@ #define ObjectTemplateDB (*Sporepedia::OTDB::cObjectTemplateDB::Get()) + namespace Sporepedia { namespace OTDB @@ -19,43 +20,219 @@ namespace Sporepedia /* 20h */ virtual bool SetParameters(const ResourceKey& key, eastl::vector& dst) = 0; }; + enum InterfaceId + { + + }; + class cObjectTemplateDB : public Object { public: - /* 10h */ virtual bool Initialize(); - /* 14h */ virtual bool Dispose(); + static cObjectTemplateDB* Get(); + + /* 00h */ virtual int AddRef(); + /* 04h */ virtual int Release(); + /* 08h */ virtual void* Dispose(); + /* 0Ch */ virtual void* AsInterface(InterfaceId mID); + /* 10h */ virtual bool Init(); + /* 14h */ virtual bool Shutdown(); /* 18h */ virtual bool Write(bool, bool writeSummarizers); /* 1Ch */ virtual bool func1Ch(); /* 20h */ virtual void func20h(); - /* 24h */ virtual bool func24h(eastl::vector& dstKeys, int, const eastl::vector& parameters); - /* 28h */ virtual bool func28h(eastl::vector& dstKeys, int, const eastl::vector& parameters); - /* 2Ch */ virtual void FindObjects(eastl::vector& dst, const eastl::vector& parameters); + /* 24h */ virtual bool func24h(eastl::vector& creation, int, const eastl::vector& parameters); + /* 28h */ virtual bool func28h(eastl::vector& dstKeys);//, int, const eastl::vector& parameters); + /* 2Ch */ virtual void FindObjects(eastl::vector& dst, const eastl::vector& parameters); //TODO thse functions are placeholders - /* 30h */ virtual int func30h(); - /* 34h */ virtual int func34h(); - /* 38h */ virtual int func38h(); - /* 3Ch */ virtual int func3Ch(); - /* 40h */ virtual int func40h(); - /* 44h */ virtual int func44h(); - /* 48h */ virtual int func48h(); - /* 4Ch */ virtual int func4Ch(); - /* 50h */ virtual int func50h(); - /* 54h */ virtual int func54h(); - /* 58h */ virtual int func58h(); - /* 5Ch */ virtual int func5Ch(); - /* 60h */ virtual int func60h(); - /* 64h */ virtual int func64h(); - /* 68h */ virtual int func68h(); - /* 6Ch */ virtual int func6Ch(); - /* 70h */ virtual int func70h(); - /* 74h */ virtual int func74h(); - /* 78h */ virtual int func78h(); + /* 30h */ virtual bool func30h(eastl::vector& creations, uint32_t param_2, const eastl::vector& parameters); + /* 34h */ virtual bool func34h(eastl::vector& creations); + /* 38h */ virtual void func38h(eastl::vector& creations, const eastl::vector& parameters); + /* 3Ch */ virtual bool func3Ch(eastl::vector& creations, uint32_t param_2, const ResourceKey& creation, const eastl::vector& parameters); + /* 40h */ virtual bool func40h(uint32_t param1, int* param2); + /* 44h */ virtual bool func44h(uint32_t param1, int* param2); + /* 48h */ virtual bool func48h(uint32_t param1, int* param2, eastl::vector& creations); + /* 4Ch */ virtual bool func4Ch(uint32_t param1, int* param2, eastl::vector& creations); + /* 50h */ virtual void func50h(int param); + /* 54h */ virtual void func54h(); + /* 58h */ virtual bool func58h(const ResourceKey& creation, bool param);//ResourceKey* + /* 5Ch */ virtual bool func5Ch(const ResourceKey& creation); + /* 60h */ virtual bool func60h(const ResourceKey& creation); + /* 64h */ virtual void func64h(uint32_t param1, eastl::vector& creations, int param); + /* 68h */ virtual void func68h(); + /* 6Ch */ virtual void func6Ch(uint32_t param_1, uint32_t param_2); //App::Property + /* 70h */ virtual bool func70h(const ResourceKey& creation); + /* 74h */ virtual bool DeleteCreationSummary(const ResourceKey& creation, bool param); + /* 78h */ virtual void DeleteCreation(const ResourceKey& creation, bool param); - /* 7Ch */ virtual void AddSummarizer(ISummarizer* pSummarizer); + /* 7Ch */ virtual bool AddSummarizer(ISummarizer* pSummarizer); - static cObjectTemplateDB* Get(); + /* 80h */ virtual bool func80h(const ResourceKey& creation, int* param); + /* 84h */ virtual bool func84h(const ResourceKey& creation, uint32_t* param_2); + /* 88h */ virtual void func88h(); + + public: + + /* 04h */ int field_04; + /* 08h */ int field_08; + /* 0Ch */ int field_0C; + /* 10h */ int field_10; + /* 14h */ int field_14; + /* 18h */ int field_18; + /* 1Ch */ int field_1C; + /* 20h */ int field_20; + /* 24h */ int field_24; + /* 28h */ int field_28; + /* 2Ch */ int field_2C; + /* 30h */ int field_30; + /* 34h */ int field_34; + /* 38h */ int field_38; + /* 3Ch */ int field_3C; + /* 40h */ bool field_40; + /* 41h */ bool field_41; + /* 42h */ bool field_42; + /* 43h */ bool field_43; + /* 44h */ int field_44; + /* 48h */ int field_48; + /* 4Ch */ int field_4C; + /* 50h */ int field_50; + /* 54h */ int field_54; + /* 58h */ int field_58; + /* 5Ch */ int field_5C; + /* 60h */ int field_60; + /* 64h */ int field_64; + /* 68h */ int field_68; + /* 6Ch */ int field_6C; + /* 70h */ int field_70; + /* 74h */ int field_74; + /* 78h */ int field_78; + /* 7Ch */ int field_7C; + /* 80h */ int field_80; + /* 84h */ int field_84; + /* 88h */ int field_88; + /* 8Ch */ int field_8C; + /* 90h */ int field_90; + /* 94h */ int field_94; + /* 98h */ int field_98; + /* 9Ch */ int field_9C; + /* A0h */ int field_A0; + /* A4h */ int field_A4; + /* A8h */ int field_A8; + /* ACh */ int field_AC; + /* B0h */ int field_B0; + /* B4h */ int field_B4; + /* B8h */ int field_B8; + /* BCh */ int field_BC; + /* C0h */ int field_C0; + /* C4h */ int field_C4; + /* C8h */ int field_C8; + /* CCh */ int field_CC; + /* D0h */ int field_D0; + /* D4h */ int field_D4; + /* D8h */ int field_D8; + /* DCh */ int field_DC; + /* E0h */ int field_E0; + /* E4h */ int field_E4; + /* E8h */ int field_E8; + /* ECh */ int field_EC; + /* F0h */ int field_F0; + /* F4h */ int field_F4; + /* F8h */ int field_F8; + /* FCh */ int field_FC; + /* 100h */ int field_100; + /* 104h */ int field_104; + /* 108h */ int field_108; + /* 10Ch */ int field_10C; + /* 110h */ int field_110; + /* 114h */ int field_114; + /* 118h */ int field_118; + /* 11Ch */ int field_11C; + /* 120h */ int field_120; + /* 124h */ int field_124; + /* 128h */ int field_128; + /* 12Ch */ int field_12C; + /* 130h */ int field_130; + /* 134h */ int field_134; + /* 138h */ int field_138; + /* 13Ch */ int field_13C; + /* 140h */ int field_140; + /* 144h */ int field_144; + /* 148h */ int field_148; + /* 14Ch */ int field_14C; + /* 150h */ int field_150; + /* 154h */ int field_154; + /* 158h */ int field_158; + /* 15Ch */ int field_15C; + /* 160h */ int field_160; + /* 164h */ int field_164; + /* 168h */ int field_168; + /* 16Ch */ int field_16C; + /* 170h */ int field_170; + /* 174h */ int field_174; + /* 178h */ int field_178; + /* 17Ch */ int field_17C; + /* 180h */ int field_180; + /* 184h */ int field_184; + /* 188h */ int field_188; + /* 18Ch */ int field_18C; + /* 190h */ int field_190; + /* 194h */ int field_194; + /* 198h */ int field_198; + /* 19Ch */ int field_19C; + /* 1A0h */ int field_1A0; + /* 1A4h */ int field_1A4; + /* 1A8h */ int field_1A8; + /* 1ACh */ int field_1AC; + /* 1B0h */ int field_1B0; + /* 1B4h */ int field_1B4; + /* 1B8h */ int field_1B8; + /* 1BCh */ int field_1BC; + /* 1C0h */ int field_1C0; + /* 1C4h */ int field_1C4; + /* 1C8h */ int field_1C8; + /* 1CCh */ int field_1CC; + /* 1D0h */ int field_1D0; + /* 1D4h */ int field_1D4; + /* 1D8h */ int field_1D8; + /* 1DCh */ int field_1DC; + /* 1E0h */ int field_1E0; + /* 1E4h */ int field_1E4; + /* 1E8h */ int field_1E8; + /* 1ECh */ int field_1EC; + /* 1F0h */ int field_1F0; + /* 1F4h */ int field_1F4; + /* 1F8h */ int field_1F8; + /* 1FCh */ int field_1FC; + /* 200h */ int field_200; + /* 204h */ int field_204; + /* 208h */ int field_208; + /* 20Ch */ int field_20C; + /* 210h */ int field_210; + /* 214h */ int field_214; + /* 218h */ int field_218; + /* 21Ch */ int field_21C; + /* 220h */ int field_220; + /* 224h */ int field_224; + /* 228h */ int field_228; + /* 22Ch */ int field_22C; + /* 230h */ int field_230; + /* 234h */ int field_234; + /* 238h */ int field_238; + /* 23Ch */ int field_23C; + /* 240h */ int field_240; + /* 244h */ int field_244; + /* 248h */ int field_248; + /* 24Ch */ int field_24C; + /* 250h */ int field_250; + /* 254h */ int field_254; + /* 258h */ int field_258; + /* 25Ch */ int field_25C; + /* 260h */ int field_260; + /* 264h */ int field_264; + /* 268h */ int field_268; + /* 26Ch */ int field_26C; + /* 270h */ int field_270; }; + ASSERT_SIZE(cObjectTemplateDB, 0x274); namespace Addresses(cObjectTemplateDB) { diff --git a/Spore ModAPI/Spore/Swarm/IVisualEffect.h b/Spore ModAPI/Spore/Swarm/IVisualEffect.h index 4c2d7d3e..d3d6502c 100644 --- a/Spore ModAPI/Spore/Swarm/IVisualEffect.h +++ b/Spore ModAPI/Spore/Swarm/IVisualEffect.h @@ -146,7 +146,7 @@ namespace Swarm /* 58h */ virtual const int* GetIntParams(IntParams param, int* dstCount = nullptr) = 0; /* 5Ch */ virtual Object* GetUnknownParam(ObjectParams params) = 0; - /* 60h */ virtual ResourceID GetEffectID() = 0; + /* 60h */ virtual uint32_t GetEffectID() = 0; /* 64h */ virtual void SetNotifyMessage(int, int) = 0; }; diff --git a/Spore ModAPI/Spore/Swarm/cVisualEffect.h b/Spore ModAPI/Spore/Swarm/cVisualEffect.h index 83a7ee47..c8a6c6fc 100644 --- a/Spore ModAPI/Spore/Swarm/cVisualEffect.h +++ b/Spore ModAPI/Spore/Swarm/cVisualEffect.h @@ -77,7 +77,7 @@ namespace Swarm /* 170h */ float field_170; /* 174h */ int field_174; /* 178h */ int field_178; - /* 17Ch */ int field_17C; + /* 17Ch */ int field_17C; //EffectParams* /* 180h */ int32_t mnSeed; /* 184h */ int field_184; // not initialized }; From 18e868189bd3496cad5c39f411ad326f128f730c Mon Sep 17 00:00:00 2001 From: A-xeset Date: Wed, 7 Jan 2026 01:08:43 +0700 Subject: [PATCH 09/12] Revert "modAPI folder update" This reverts commit 7da2ada106f411efe12a4b935be21ce20ce418ba. --- .../SourceCode/DLL/AddressesEditors.cpp | 16 - Spore ModAPI/SourceCode/Editors/Editor.cpp | 36 +- Spore ModAPI/Spore ModAPI.vcxproj | 5 +- Spore ModAPI/Spore/Editors/BakeManager.h | 1262 +---------------- Spore ModAPI/Spore/Editors/Editor.h | 21 +- Spore ModAPI/Spore/Editors/EditorModel.h | 30 +- Spore ModAPI/Spore/Editors/EditorRigblock.h | 157 +- Spore ModAPI/Spore/Editors/VerbIconData.h | 2 +- .../Simulator/SubSystem/GameViewManager.h | 2 - .../Simulator/SubSystem/ObstacleManager.h | 7 +- .../Spore/Simulator/cCreatureAbility.h | 16 +- .../Spore/Simulator/cSimulatorSpaceGame.h | 14 +- .../Spore/Simulator/cSpeciesProfile.h | 92 +- .../Spore/Sporepedia/ObjectTemplateDB.h | 229 +-- Spore ModAPI/Spore/Swarm/IVisualEffect.h | 2 +- Spore ModAPI/Spore/Swarm/cVisualEffect.h | 2 +- 16 files changed, 164 insertions(+), 1729 deletions(-) diff --git a/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp b/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp index 6726d251..412de716 100644 --- a/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp +++ b/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp @@ -21,7 +21,6 @@ #include #include #include -#include #ifdef SDK_TO_GHIDRA namespace Editors @@ -86,7 +85,6 @@ namespace Editors DefineAddress(GetEditorForAssetType, SelectAddress(0x00433010, 0x004333e0)); DefineAddress(GetNameForAssetType, SelectAddress(0x004badc0, 0x004bba50)); DefineAddress(GetTypeIDForAssetType, SelectAddress(0x004bb110, 0x004bbda0)); - DefineAddress(ComputeCreatureVerbIcons, SelectAddress(0x004e8860, 0x004e8860)); } namespace Addresses(EditorCamera) @@ -252,19 +250,5 @@ namespace Editors DefineAddress(SetWindowVisible, SelectAddress(0x635450, 0x635750)); DefineAddress(FindWindowByID, SelectAddress(0x634AB0, 0x634DB0)); } - - namespace Addresses(VerbIconData) - { - DefineAddress(AddRef, SelectAddress(0xc6ab00, 0xc6ab00)); - DefineAddress(Release, SelectAddress(0x7b87b0, 0x7b87b0)); - DefineAddress(Dispose, SelectAddress(0x59eff0, 0x59eff0)); - DefineAddress(AsInterface, SelectAddress(0x5e4d70, 0x5e4d70)); - DefineAddress(Init, SelectAddress(0x5e54a0, 0x5e54a0)); - DefineAddress(Shutdown, SelectAddress(0x5e5920, 0x5e5920)); - DefineAddress(SetArrayIndex, SelectAddress(0x5e4d90, 0x5e4d90)); - DefineAddress(SetHotKey, SelectAddress(0x5e5c30, 0x5e5c30)); - DefineAddress(GetIconName, SelectAddress(0x5e5cb0, 0x5e5cb0)); - DefineAddress(GetIconDescription, SelectAddress(0x5e5d70, 0x5e5d70)); - } } #endif diff --git a/Spore ModAPI/SourceCode/Editors/Editor.cpp b/Spore ModAPI/SourceCode/Editors/Editor.cpp index 7a167ed3..59b16a00 100644 --- a/Spore ModAPI/SourceCode/Editors/Editor.cpp +++ b/Spore ModAPI/SourceCode/Editors/Editor.cpp @@ -59,20 +59,20 @@ namespace Editors : mnRefCount(0) , mKey() , mRigblocks() - , mbAllBlocksLoaded() - , mPhysicsWorld() - , mUseDynamics() - , mBounds() - , mFeetBounds() - , mMinHeight(-2.0f) - , mMaxHeight(2.0f) - , mMinimumLeglessCreatureHeight() - , mShowHiddenHandles() - , mShowBoneLengthHandles() - , mUseBoundsForDelete(true) - , mUsingSymmetry() - , mSkinNeedsUpdating() - , mChanged() + , field_2C() + , field_30() + , field_34() + , field_38() + , field_3C() + , field_40(-2.0f) + , field_44(2.0f) + , field_48() + , field_4C() + , field_4D() + , field_4E(true) + , field_4F() + , field_50() + , field_51() , mTranslationOptions() , mModelType() , mName() @@ -81,7 +81,7 @@ namespace Editors , mSkinEffectIDs() , mSkinEffectSeeds{1234, 1234, 1234} , mColors {ColorRGB(1.0f, 1.0f, 1.0f), ColorRGB(1.0f, 1.0f, 1.0f), ColorRGB(1.0f, 1.0f, 1.0f)} - , mBBoxesOverride() + , field_C8() { } @@ -90,8 +90,8 @@ namespace Editors Dispose(); // field_30 is a pointer, but I don't know what kind so we manually Release it - if (mPhysicsWorld != 0) { - int* pointer = (int*)mPhysicsWorld; + if (field_30 != 0) { + int* pointer = (int*)field_30; pointer[1]--; if (pointer[1] == 0) { pointer[1] = 1; @@ -198,7 +198,5 @@ namespace Editors auto_STATIC_METHOD(cEditor, uint32_t, GetTypeIDForAssetType, Args(uint32_t assetTypeID), Args(assetTypeID)); auto_STATIC_METHOD(cEditor, const char16_t*, GetNameForAssetType, Args(uint32_t assetTypeID), Args(assetTypeID)); - - auto_STATIC_METHOD(cEditor, void, ComputeCreatureVerbIcons, Args(cCreatureDataResource* creatureData, int VerbTrayCollection, int brainLevel, float param_4), Args(creatureData, VerbTrayCollection, brainLevel, param_4)); } #endif diff --git a/Spore ModAPI/Spore ModAPI.vcxproj b/Spore ModAPI/Spore ModAPI.vcxproj index b1c4266e..6c361101 100644 --- a/Spore ModAPI/Spore ModAPI.vcxproj +++ b/Spore ModAPI/Spore ModAPI.vcxproj @@ -327,8 +327,8 @@ - - + + @@ -974,7 +974,6 @@ - diff --git a/Spore ModAPI/Spore/Editors/BakeManager.h b/Spore ModAPI/Spore/Editors/BakeManager.h index 17c7d427..087401fa 100644 --- a/Spore ModAPI/Spore/Editors/BakeManager.h +++ b/Spore ModAPI/Spore/Editors/BakeManager.h @@ -20,9 +20,6 @@ #pragma once #include -#include -#include -#include /// Access the active bake manager. #define BakeManager (*Editors::IBakeManager::Get()) @@ -33,1249 +30,50 @@ namespace Editors { BakeParameters(int16_t field_04, int16_t field_06 = 4, uint32_t defaultID = 0x2EA8FB98); - uint32_t mTag; - int16_t mFlag; - int16_t mPriority; - }; - - struct cBakeStats - { - int mQueuedBakes; - bool mCurrentlyBaking; - struct ResourceKey mCurrentKey; - int mNumBakes; - float mLastBakeTime; - float mAverageBakeTime; - int mNumCCFBakes; - float mTotalCCFTime; - float mLastCCFTime; - int mNumBVUBakes; - float mTotalBVUTime; - float mLastBVUTime; + uint32_t mDefaultID; + int16_t field_04; + int16_t field_06; }; class IBakeManager { public: - static IBakeManager* Get(); - - /* 00h */ virtual int AddRef(); - /* 04h */ virtual void Release(); - /* 08h */ virtual bool Init(); - /* 0Ch */ virtual void Shutdown(); - /* 10h */ virtual void PreShutdown(); - /* 14h */ virtual void Update(); - /* 18h */ virtual bool IsBakingOrBaked(const ResourceKey& nameKey); - /* 1Ch */ virtual bool IsBaked(const ResourceKey& nameKey, bool param); - /* 20h */ virtual void SetQueueEnabled(bool QueueEnabled); - /* 24h */ virtual int GetQueueSize(uint32_t unk); //InterruptForEditorPaintRequest? - /* 28h */ virtual int GetQueueSize(); //FinishCreature? ReloadMuscleData? - /* 2Ch */ virtual bool GetCurrentKey(const ResourceKey& nameKey); - /* 30h */ virtual void GetQueue(eastl::vector>* unk);//Set swarm parameters? or HandleMessage? - /* 34h */ virtual bool IsBaking(uint32_t mTag); - /* 38h */ virtual bool IsBaking(const ResourceKey& nameKey, uint32_t mTag); - /* 3Ch */ virtual bool IsBaking(const ResourceKey& nameKey); - /* 40h */ virtual bool Cancel(uint32_t mTag); - /* 44h */ virtual bool Cancel(const ResourceKey& nameKey, uint32_t mTag); - /* 48h */ virtual bool Cancel(const ResourceKey& nameKey); - /* 4Ch */ virtual bool BakeModel(const ResourceKey& nameKey, const BakeParameters& params); - /* 50h */ virtual bool QueueBake(const ResourceKey& nameKey, const ResourceKey& nameKey2); - /* 54h */ virtual bool GetBlockApproximation(uint32_t mInstanceID, uint32_t mGroupID, float param3, int param4, Math::Vector3* BoundingBox, Math::Vector3* BoundingBox_upper); - /* 58h */ virtual App::PropertyList* GetBlockPropertyList(uint32_t instanceID, uint32_t groupID); - /* 5Ch */ virtual bool GetBlockRuntimeModelKey(uint32_t mInstanceID, uint32_t mGroupID, ResourceKey* nameKey); - /* 60h */ virtual Graphics::IModelWorld* GetCreatureModelWorld(); - /* 64h */ virtual bool InterruptForEditorPaintRequest(int paintRequest);//cPaintRequest* - /* 68h */ virtual bool TessellateSkin(int skin, float param2); //cSkinObject - /* 6Ch */ virtual bool GetTools(const ResourceKey& nameKey, int);//eastl::vector*); //TessellateSkinInternalSetup? - /* 70h */ virtual void PromoteToData(const ResourceKey& nameKey, bool param1, wchar_t* flag); - /* 74h */ virtual cBakeStats* GetBakeStats(); - /* 78h */ virtual wchar_t* GetStatsString(); - public: + /* 00h */ virtual void func00h(); + /* 04h */ virtual void func04h(); + /* 08h */ virtual void func08h(); + /* 0Ch */ virtual void func0Ch(); + /* 10h */ virtual void func10h(); + /* 14h */ virtual void func14h(); + /* 18h */ virtual void func18h(); + /* 1Ch */ virtual void func1Ch(); + /* 20h */ virtual void func20h(); + /* 24h */ virtual void func24h(); + /* 28h */ virtual void func28h(); + /* 2Ch */ virtual void func2Ch(); + /* 30h */ virtual void func30h(); + /* 34h */ virtual void func34h(); + /* 38h */ virtual void func38h(); + /* 3Ch */ virtual void func3Ch(); + /* 40h */ virtual void func40h(); + /* 44h */ virtual void func44h(); + /* 48h */ virtual void func48h(); + /* 4Ch */ virtual void Bake(const ResourceKey& nameKey, const BakeParameters& params); + + // 60h returns IModelWorld - ///* 00h */ int field_00; - /* 04h */ int field_04; - /* 08h */ int field_08; - /* 0Ch */ int field_0C; - /* 10h */ int field_10; - /* 14h */ int field_14; - /* 18h */ int field_18; - /* 1Ch */ int field_1C; - /* 20h */ int field_20; - /* 24h */ int field_24; - /* 28h */ int field_28; - /* 2Ch */ int field_2C; - /* 30h */ int field_30; - /* 34h */ int field_34; - /* 38h */ int field_38; - /* 3Ch */ int field_3C; - /* 40h */ int field_40; - /* 44h */ int field_44; - /* 48h */ int field_48; - /* 4Ch */ int field_4C; - /* 50h */ int field_50; - /* 54h */ int field_54; - /* 58h */ int field_58; - /* 5Ch */ int field_5C; - /* 60h */ int field_60; - /* 64h */ int field_64; - /* 68h */ int field_68; - /* 6Ch */ int field_6C; - /* 70h */ int field_70; - /* 74h */ Graphics::IModelWorld* field_74; - /* 78h */ Graphics::IModelWorld* mIModelWorld; - /* 7Ch */ int field_7C; - /* 80h */ int field_80; - /* 84h */ int field_84; - /* 88h */ int field_88; - /* 8Ch */ int field_8C; - /* 90h */ int field_90; - /* 94h */ int field_94; - /* 98h */ int field_98; - /* 9Ch */ int field_9C; - /* A0h */ int field_A0; - /* A4h */ int field_A4; - /* A8h */ int field_A8; - /* ACh */ int field_AC; - /* B0h */ int field_B0; - /* B4h */ int field_B4; - /* B8h */ int field_B8; - /* BCh */ int field_BC; - /* C0h */ bool field_C0; - /* C1h */ bool field_C1; - /* C2h */ bool field_C2; - /* C3h */ bool field_C3; - /* C4h */ int field_C4; - /* C8h */ int field_C8; - /* CCh */ int field_CC; - /* D0h */ int field_D0; - /* D4h */ int field_D4; - /* D8h */ int field_D8; - /* DCh */ int field_DC; - /* E0h */ int field_E0; - /* E4h */ int field_E4; - /* E8h */ int field_E8; - /* ECh */ int field_EC; - /* F0h */ int field_F0; - /* F4h */ int field_F4; - /* F8h */ int field_F8; - /* FCh */ int field_FC; - /* 100h */ int field_100; - /* 104h */ int field_104; - /* 108h */ int field_108; - /* 10Ch */ int field_10C; - /* 110h */ int field_110; - /* 114h */ int field_114; - /* 118h */ int field_118; - /* 11Ch */ int field_11C; - /* 120h */ int field_120; - /* 124h */ int field_124; - /* 128h */ int field_128; - /* 12Ch */ int field_12C; - /* 130h */ int field_130; - /* 134h */ int field_134; - /* 138h */ int field_138; - /* 13Ch */ int field_13C; - /* 140h */ int field_140; - /* 144h */ int field_144; - /* 148h */ int field_148; - /* 14Ch */ int field_14C; - /* 150h */ int field_150; - /* 154h */ int field_154; - /* 158h */ int field_158; - /* 15Ch */ int field_15C; - /* 160h */ int field_160; - /* 164h */ int field_164; - /* 168h */ int field_168; - /* 16Ch */ int field_16C; - /* 170h */ int field_170; - /* 174h */ int field_174; - /* 178h */ int field_178; - /* 17Ch */ int field_17C; - /* 180h */ int field_180; - /* 184h */ int field_184; - /* 188h */ int field_188; - /* 18Ch */ int field_18C; - /* 190h */ int field_190; - /* 194h */ int field_194; - /* 198h */ int field_198; - /* 19Ch */ int field_19C; - /* 1A0h */ int field_1A0; - /* 1A4h */ int field_1A4; - /* 1A8h */ int field_1A8; - /* 1ACh */ int field_1AC; - /* 1B0h */ int field_1B0; - /* 1B4h */ int field_1B4; - /* 1B8h */ int field_1B8; - /* 1BCh */ int field_1BC; - /* 1C0h */ int field_1C0; - /* 1C4h */ int field_1C4; - /* 1C8h */ int field_1C8; - /* 1CCh */ int field_1CC; - /* 1D0h */ int field_1D0; - /* 1D4h */ int field_1D4; - /* 1D8h */ int field_1D8; - /* 1DCh */ int field_1DC; - /* 1E0h */ int field_1E0; - /* 1E4h */ int field_1E4; - /* 1E8h */ int field_1E8; - /* 1ECh */ int field_1EC; - /* 1F0h */ int field_1F0; - /* 1F4h */ int field_1F4; - /* 1F8h */ int field_1F8; - /* 1FCh */ int field_1FC; - /* 200h */ int field_200; - /* 204h */ int field_204; - /* 208h */ int field_208; - /* 20Ch */ int field_20C; - /* 210h */ int field_210; - /* 214h */ int field_214; - /* 218h */ int field_218; - /* 21Ch */ int field_21C; - /* 220h */ int field_220; - /* 224h */ int field_224; - /* 228h */ ResourceKey mBakeCreation; - /* 234h */ BakeParameters mBakeParameters; - /* 23Ch */ int field_23C; - /* 240h */ int field_240; - /* 244h */ int field_244; - /* 248h */ int field_248; - /* 24Ch */ int field_24C; - /* 250h */ int field_250; - /* 254h */ int field_254; - /* 258h */ bool field_258; - /* 259h */ bool field_259; - /* 25Ah */ bool field_25A; - /* 25Bh */ bool field_25B; - /* 25Ch */ int field_25C; - /* 260h */ int field_260; - /* 264h */ int field_264; - /* 268h */ int field_268; - /* 26Ch */ int field_26C; - /* 270h */ int field_270; - /* 274h */ int field_274; - /* 278h */ int field_278; - /* 27Ch */ int field_27C; - /* 280h */ int field_280; - /* 284h */ int field_284; - /* 288h */ int field_288; - /* 28Ch */ int field_28C; - /* 290h */ int field_290; - /* 294h */ int field_294; - /* 298h */ int field_298; - /* 29Ch */ int field_29C; - /* 2A0h */ int field_2A0; - /* 2A4h */ int field_2A4; - /* 2A8h */ int field_2A8; - /* 2ACh */ int field_2AC; - /* 2B0h */ int field_2B0; - /* 2B4h */ int field_2B4; - /* 2B8h */ int field_2B8; - /* 2BCh */ int field_2BC; - /* 2C0h */ int field_2C0; - /* 2C4h */ int field_2C4; - /* 2C8h */ int field_2C8; - /* 2CCh */ int field_2CC; - /* 2D0h */ int field_2D0; - /* 2D4h */ int field_2D4; - /* 2D8h */ int field_2D8; - /* 2DCh */ int field_2DC; - /* 2E0h */ int field_2E0; - /* 2E4h */ int field_2E4; - /* 2E8h */ int field_2E8; - /* 2ECh */ int field_2EC; - /* 2F0h */ int field_2F0; - /* 2F4h */ int field_2F4; - /* 2F8h */ int field_2F8; - /* 2FCh */ int field_2FC; - /* 300h */ int field_300; - /* 304h */ int field_304; - /* 308h */ int field_308; - /* 30Ch */ int field_30C; - /* 310h */ int field_310; - /* 314h */ int field_314; - /* 318h */ int field_318; - /* 31Ch */ int field_31C; - /* 320h */ int field_320; - /* 324h */ int field_324; - /* 328h */ int field_328; - /* 32Ch */ int field_32C; - /* 330h */ int field_330; - /* 334h */ int field_334; - /* 338h */ int field_338; - /* 33Ch */ int field_33C; - /* 340h */ int field_340; - /* 344h */ int field_344; - /* 348h */ int field_348; - /* 34Ch */ int field_34C; - /* 350h */ int field_350; - /* 354h */ int field_354; - /* 358h */ int field_358; - /* 35Ch */ int field_35C; - /* 360h */ int field_360; - /* 364h */ int field_364; - /* 368h */ int field_368; - /* 36Ch */ int field_36C; - /* 370h */ int field_370; - /* 374h */ int field_374; - /* 378h */ int field_378; - /* 37Ch */ int field_37C; - /* 380h */ int field_380; - /* 384h */ int field_384; - /* 388h */ int field_388; - /* 38Ch */ int field_38C; - /* 390h */ int field_390; - /* 394h */ int field_394; - /* 398h */ int field_398; - /* 39Ch */ int field_39C; - /* 3A0h */ int field_3A0; - /* 3A4h */ int field_3A4; - /* 3A8h */ int field_3A8; - /* 3ACh */ int field_3AC; - /* 3B0h */ int field_3B0; - /* 3B4h */ int field_3B4; - /* 3B8h */ int field_3B8; - /* 3BCh */ int field_3BC; - /* 3C0h */ int field_3C0; - /* 3C4h */ int field_3C4; - /* 3C8h */ int field_3C8; - /* 3CCh */ int field_3CC; - /* 3D0h */ int field_3D0; - /* 3D4h */ int field_3D4; - /* 3D8h */ int field_3D8; - /* 3DCh */ int field_3DC; - /* 3E0h */ int field_3E0; - /* 3E4h */ int field_3E4; - /* 3E8h */ int field_3E8; - /* 3ECh */ int field_3EC; - /* 3F0h */ int field_3F0; - /* 3F4h */ int field_3F4; - /* 3F8h */ int field_3F8; - /* 3FCh */ int field_3FC; - /* 400h */ int field_400; - /* 404h */ int field_404; - /* 408h */ int field_408; - /* 40Ch */ int field_40C; - /* 410h */ int field_410; - /* 414h */ int field_414; - /* 418h */ int field_418; - /* 41Ch */ int field_41C; - /* 420h */ int field_420; - /* 424h */ int field_424; - /* 428h */ int field_428; - /* 42Ch */ int field_42C; - /* 430h */ int field_430; - /* 434h */ int field_434; - /* 438h */ int field_438; - /* 43Ch */ int field_43C; - /* 440h */ int field_440; - /* 444h */ int field_444; - /* 448h */ int field_448; - /* 44Ch */ int field_44C; - /* 450h */ int field_450; - /* 454h */ int field_454; - /* 458h */ int field_458; - /* 45Ch */ int field_45C; - /* 460h */ int field_460; - /* 464h */ int field_464; - /* 468h */ int field_468; - /* 46Ch */ int field_46C; - /* 470h */ int field_470; - /* 474h */ int field_474; - /* 478h */ int field_478; - /* 47Ch */ int field_47C; - /* 480h */ int field_480; - /* 484h */ int field_484; - /* 488h */ int field_488; - /* 48Ch */ int field_48C; - /* 490h */ int field_490; - /* 494h */ int field_494; - /* 498h */ int field_498; - /* 49Ch */ int field_49C; - /* 4A0h */ int field_4A0; - /* 4A4h */ int field_4A4; - /* 4A8h */ int field_4A8; - /* 4ACh */ int field_4AC; - /* 4B0h */ int field_4B0; - /* 4B4h */ int field_4B4; - /* 4B8h */ int field_4B8; - /* 4BCh */ int field_4BC; - /* 4C0h */ int field_4C0; - /* 4C4h */ int field_4C4; - /* 4C8h */ int field_4C8; - /* 4CCh */ int field_4CC; - /* 4D0h */ int field_4D0; - /* 4D4h */ int field_4D4; - /* 4D8h */ int field_4D8; - /* 4DCh */ int field_4DC; - /* 4E0h */ int field_4E0; - /* 4E4h */ int field_4E4; - /* 4E8h */ int field_4E8; - /* 4ECh */ int field_4EC; - /* 4F0h */ int field_4F0; - /* 4F4h */ int field_4F4; - /* 4F8h */ int field_4F8; - /* 4FCh */ int field_4FC; - /* 500h */ int field_500; - /* 504h */ int field_504; - /* 508h */ int field_508; - /* 50Ch */ int field_50C; - /* 510h */ int field_510; - /* 514h */ int field_514; - /* 518h */ int field_518; - /* 51Ch */ int field_51C; - /* 520h */ int field_520; - /* 524h */ int field_524; - /* 528h */ int field_528; - /* 52Ch */ int field_52C; - /* 530h */ int field_530; - /* 534h */ int field_534; - /* 538h */ int field_538; - /* 53Ch */ int field_53C; - /* 540h */ int field_540; - /* 544h */ int field_544; - /* 548h */ int field_548; - /* 54Ch */ int field_54C; - /* 550h */ int field_550; - /* 554h */ int field_554; - /* 558h */ int field_558; - /* 55Ch */ int field_55C; - /* 560h */ int field_560; - /* 564h */ int field_564; - /* 568h */ int field_568; - /* 56Ch */ int field_56C; - /* 570h */ int field_570; - /* 574h */ int field_574; - /* 578h */ int field_578; - /* 57Ch */ int field_57C; - /* 580h */ int field_580; - /* 584h */ int field_584; - /* 588h */ int field_588; - /* 58Ch */ int field_58C; - /* 590h */ int field_590; - /* 594h */ int field_594; - /* 598h */ int field_598; - /* 59Ch */ int field_59C; - /* 5A0h */ int field_5A0; - /* 5A4h */ int field_5A4; - /* 5A8h */ int field_5A8; - /* 5ACh */ int field_5AC; - /* 5B0h */ int field_5B0; - /* 5B4h */ int field_5B4; - /* 5B8h */ int field_5B8; - /* 5BCh */ int field_5BC; - /* 5C0h */ int field_5C0; - /* 5C4h */ int field_5C4; - /* 5C8h */ int field_5C8; - /* 5CCh */ int field_5CC; - /* 5D0h */ int field_5D0; - /* 5D4h */ int field_5D4; - /* 5D8h */ int field_5D8; - /* 5DCh */ int field_5DC; - /* 5E0h */ int field_5E0; - /* 5E4h */ int field_5E4; - /* 5E8h */ int field_5E8; - /* 5ECh */ int field_5EC; - /* 5F0h */ int field_5F0; - /* 5F4h */ int field_5F4; - /* 5F8h */ int field_5F8; - /* 5FCh */ int field_5FC; - /* 600h */ int field_600; - /* 604h */ int field_604; - /* 608h */ int field_608; - /* 60Ch */ int field_60C; - /* 610h */ int field_610; - /* 614h */ int field_614; - /* 618h */ int field_618; - /* 61Ch */ int field_61C; - /* 620h */ int field_620; - /* 624h */ int field_624; - /* 628h */ int field_628; - /* 62Ch */ int field_62C; - /* 630h */ int field_630; - /* 634h */ int field_634; - /* 638h */ int field_638; - /* 63Ch */ int field_63C; - /* 640h */ int field_640; - /* 644h */ int field_644; - /* 648h */ int field_648; - /* 64Ch */ int field_64C; - /* 650h */ int field_650; - /* 654h */ int field_654; - /* 658h */ int field_658; - /* 65Ch */ int field_65C; - /* 660h */ int field_660; - /* 664h */ int field_664; - /* 668h */ int field_668; - /* 66Ch */ int field_66C; - /* 670h */ int field_670; - /* 674h */ int field_674; - /* 678h */ int field_678; - /* 67Ch */ int field_67C; - /* 680h */ int field_680; - /* 684h */ int field_684; - /* 688h */ int field_688; - /* 68Ch */ int field_68C; - /* 690h */ int field_690; - /* 694h */ int field_694; - /* 698h */ int field_698; - /* 69Ch */ int field_69C; - /* 6A0h */ int field_6A0; - /* 6A4h */ int field_6A4; - /* 6A8h */ int field_6A8; - /* 6ACh */ int field_6AC; - /* 6B0h */ int field_6B0; - /* 6B4h */ int field_6B4; - /* 6B8h */ int field_6B8; - /* 6BCh */ int field_6BC; - /* 6C0h */ int field_6C0; - /* 6C4h */ int field_6C4; - /* 6C8h */ int field_6C8; - /* 6CCh */ int field_6CC; - /* 6D0h */ int field_6D0; - /* 6D4h */ int field_6D4; - /* 6D8h */ int field_6D8; - /* 6DCh */ int field_6DC; - /* 6E0h */ int field_6E0; - /* 6E4h */ int field_6E4; - /* 6E8h */ int field_6E8; - /* 6ECh */ int field_6EC; - /* 6F0h */ int field_6F0; - /* 6F4h */ int field_6F4; - /* 6F8h */ int field_6F8; - /* 6FCh */ int field_6FC; - /* 700h */ int field_700; - /* 704h */ int field_704; - /* 708h */ int field_708; - /* 70Ch */ int field_70C; - /* 710h */ int field_710; - /* 714h */ int field_714; - /* 718h */ int field_718; - /* 71Ch */ int field_71C; - /* 720h */ int field_720; - /* 724h */ int field_724; - /* 728h */ int field_728; - /* 72Ch */ int field_72C; - /* 730h */ int field_730; - /* 734h */ int field_734; - /* 738h */ int field_738; - /* 73Ch */ int field_73C; - /* 740h */ int field_740; - /* 744h */ int field_744; - /* 748h */ int field_748; - /* 74Ch */ int field_74C; - /* 750h */ int field_750; - /* 754h */ int field_754; - /* 758h */ int field_758; - /* 75Ch */ int field_75C; - /* 760h */ int field_760; - /* 764h */ int field_764; - /* 768h */ int field_768; - /* 76Ch */ int field_76C; - /* 770h */ int field_770; - /* 774h */ int field_774; - /* 778h */ int field_778; - /* 77Ch */ int field_77C; - /* 780h */ int field_780; - /* 784h */ int field_784; - /* 788h */ int field_788; - /* 78Ch */ int field_78C; - /* 790h */ int field_790; - /* 794h */ int field_794; - /* 798h */ int field_798; - /* 79Ch */ int field_79C; - /* 7A0h */ int field_7A0; - /* 7A4h */ int field_7A4; - /* 7A8h */ int field_7A8; - /* 7ACh */ int field_7AC; - /* 7B0h */ int field_7B0; - /* 7B4h */ int field_7B4; - /* 7B8h */ int field_7B8; - /* 7BCh */ int field_7BC; - /* 7C0h */ int field_7C0; - /* 7C4h */ int field_7C4; - /* 7C8h */ int field_7C8; - /* 7CCh */ int field_7CC; - /* 7D0h */ int field_7D0; - /* 7D4h */ int field_7D4; - /* 7D8h */ int field_7D8; - /* 7DCh */ int field_7DC; - /* 7E0h */ int field_7E0; - /* 7E4h */ int field_7E4; - /* 7E8h */ int field_7E8; - /* 7ECh */ int field_7EC; - /* 7F0h */ int field_7F0; - /* 7F4h */ int field_7F4; - /* 7F8h */ int field_7F8; - /* 7FCh */ int field_7FC; - /* 800h */ int field_800; - /* 804h */ int field_804; - /* 808h */ int field_808; - /* 80Ch */ int field_80C; - /* 810h */ int field_810; - /* 814h */ int field_814; - /* 818h */ int field_818; - /* 81Ch */ int field_81C; - /* 820h */ int field_820; - /* 824h */ int field_824; - /* 828h */ int field_828; - /* 82Ch */ int field_82C; - /* 830h */ int field_830; - /* 834h */ int field_834; - /* 838h */ int field_838; - /* 83Ch */ int field_83C; - /* 840h */ int field_840; - /* 844h */ int field_844; - /* 848h */ int field_848; - /* 84Ch */ int field_84C; - /* 850h */ int field_850; - /* 854h */ int field_854; - /* 858h */ int field_858; - /* 85Ch */ int field_85C; - /* 860h */ int field_860; - /* 864h */ int field_864; - /* 868h */ int field_868; - /* 86Ch */ int field_86C; - /* 870h */ int field_870; - /* 874h */ int field_874; - /* 878h */ int field_878; - /* 87Ch */ int field_87C; - /* 880h */ int field_880; - /* 884h */ int field_884; - /* 888h */ int field_888; - /* 88Ch */ int field_88C; - /* 890h */ int field_890; - /* 894h */ int field_894; - /* 898h */ int field_898; - /* 89Ch */ int field_89C; - /* 8A0h */ int field_8A0; - /* 8A4h */ int field_8A4; - /* 8A8h */ int field_8A8; - /* 8ACh */ int field_8AC; - /* 8B0h */ int field_8B0; - /* 8B4h */ int field_8B4; - /* 8B8h */ int field_8B8; - /* 8BCh */ int field_8BC; - /* 8C0h */ int field_8C0; - /* 8C4h */ int field_8C4; - /* 8C8h */ int field_8C8; - /* 8CCh */ int field_8CC; - /* 8D0h */ int field_8D0; - /* 8D4h */ int field_8D4; - /* 8D8h */ int field_8D8; - /* 8DCh */ int field_8DC; - /* 8E0h */ int field_8E0; - /* 8E4h */ int field_8E4; - /* 8E8h */ int field_8E8; - /* 8ECh */ int field_8EC; - /* 8F0h */ int field_8F0; - /* 8F4h */ int field_8F4; - /* 8F8h */ int field_8F8; - /* 8FCh */ int field_8FC; - /* 900h */ int field_900; - /* 904h */ int field_904; - /* 908h */ int field_908; - /* 90Ch */ int field_90C; - /* 910h */ int field_910; - /* 914h */ int field_914; - /* 918h */ int field_918; - /* 91Ch */ int field_91C; - /* 920h */ int field_920; - /* 924h */ int field_924; - /* 928h */ int field_928; - /* 92Ch */ int field_92C; - /* 930h */ int field_930; - /* 934h */ int field_934; - /* 938h */ int field_938; - /* 93Ch */ int field_93C; - /* 940h */ int field_940; - /* 944h */ int field_944; - /* 948h */ int field_948; - /* 94Ch */ int field_94C; - /* 950h */ int field_950; - /* 954h */ int field_954; - /* 958h */ int field_958; - /* 95Ch */ int field_95C; - /* 960h */ int field_960; - /* 964h */ int field_964; - /* 968h */ int field_968; - /* 96Ch */ int field_96C; - /* 970h */ int field_970; - /* 974h */ int field_974; - /* 978h */ int field_978; - /* 97Ch */ int field_97C; - /* 980h */ int field_980; - /* 984h */ int field_984; - /* 988h */ int field_988; - /* 98Ch */ int field_98C; - /* 990h */ int field_990; - /* 994h */ int field_994; - /* 998h */ int field_998; - /* 99Ch */ int field_99C; - /* 9A0h */ int field_9A0; - /* 9A4h */ int field_9A4; - /* 9A8h */ int field_9A8; - /* 9ACh */ int field_9AC; - /* 9B0h */ int field_9B0; - /* 9B4h */ int field_9B4; - /* 9B8h */ int field_9B8; - /* 9BCh */ int field_9BC; - /* 9C0h */ int field_9C0; - /* 9C4h */ int field_9C4; - /* 9C8h */ int field_9C8; - /* 9CCh */ int field_9CC; - /* 9D0h */ int field_9D0; - /* 9D4h */ int field_9D4; - /* 9D8h */ int field_9D8; - /* 9DCh */ int field_9DC; - /* 9E0h */ int field_9E0; - /* 9E4h */ int field_9E4; - /* 9E8h */ int field_9E8; - /* 9ECh */ int field_9EC; - /* 9F0h */ int field_9F0; - /* 9F4h */ int field_9F4; - /* 9F8h */ int field_9F8; - /* 9FCh */ int field_9FC; - /* A00h */ int field_A00; - /* A04h */ int field_A04; - /* A08h */ int field_A08; - /* A0Ch */ int field_A0C; - /* A10h */ int field_A10; - /* A14h */ int field_A14; - /* A18h */ int field_A18; - /* A1Ch */ int field_A1C; - /* A20h */ int field_A20; - /* A24h */ int field_A24; - /* A28h */ int field_A28; - /* A2Ch */ int field_A2C; - /* A30h */ int field_A30; - /* A34h */ int field_A34; - /* A38h */ int field_A38; - /* A3Ch */ int field_A3C; - /* A40h */ int field_A40; - /* A44h */ int field_A44; - /* A48h */ int field_A48; - /* A4Ch */ int field_A4C; - /* A50h */ int field_A50; - /* A54h */ int field_A54; - /* A58h */ int field_A58; - /* A5Ch */ int field_A5C; - /* A60h */ int field_A60; - /* A64h */ int field_A64; - /* A68h */ int field_A68; - /* A6Ch */ int field_A6C; - /* A70h */ int field_A70; - /* A74h */ int field_A74; - /* A78h */ int field_A78; - /* A7Ch */ int field_A7C; - /* A80h */ int field_A80; - /* A84h */ int field_A84; - /* A88h */ int field_A88; - /* A8Ch */ int field_A8C; - /* A90h */ int field_A90; - /* A94h */ int field_A94; - /* A98h */ int field_A98; - /* A9Ch */ int field_A9C; - /* AA0h */ int field_AA0; - /* AA4h */ int field_AA4; - /* AA8h */ int field_AA8; - /* AACh */ int field_AAC; - /* AB0h */ int field_AB0; - /* AB4h */ int field_AB4; - /* AB8h */ int field_AB8; - /* ABCh */ int field_ABC; - /* AC0h */ int field_AC0; - /* AC4h */ int field_AC4; - /* AC8h */ int field_AC8; - /* ACCh */ int field_ACC; - /* AD0h */ int field_AD0; - /* AD4h */ int field_AD4; - /* AD8h */ int field_AD8; - /* ADCh */ int field_ADC; - /* AE0h */ int field_AE0; - /* AE4h */ int field_AE4; - /* AE8h */ int field_AE8; - /* AECh */ int field_AEC; - /* AF0h */ int field_AF0; - /* AF4h */ int field_AF4; - /* AF8h */ int field_AF8; - /* AFCh */ int field_AFC; - /* B00h */ int field_B00; - /* B04h */ int field_B04; - /* B08h */ int field_B08; - /* B0Ch */ int field_B0C; - /* B10h */ int field_B10; - /* B14h */ int field_B14; - /* B18h */ int field_B18; - /* B1Ch */ int field_B1C; - /* B20h */ int field_B20; - /* B24h */ int field_B24; - /* B28h */ int field_B28; - /* B2Ch */ int field_B2C; - /* B30h */ int field_B30; - /* B34h */ int field_B34; - /* B38h */ int field_B38; - /* B3Ch */ int field_B3C; - /* B40h */ int field_B40; - /* B44h */ int field_B44; - /* B48h */ int field_B48; - /* B4Ch */ int field_B4C; - /* B50h */ int field_B50; - /* B54h */ int field_B54; - /* B58h */ int field_B58; - /* B5Ch */ int field_B5C; - /* B60h */ int field_B60; - /* B64h */ int field_B64; - /* B68h */ int field_B68; - /* B6Ch */ int field_B6C; - /* B70h */ int field_B70; - /* B74h */ int field_B74; - /* B78h */ int field_B78; - /* B7Ch */ int field_B7C; - /* B80h */ int field_B80; - /* B84h */ int field_B84; - /* B88h */ int field_B88; - /* B8Ch */ int field_B8C; - /* B90h */ int field_B90; - /* B94h */ int field_B94; - /* B98h */ int field_B98; - /* B9Ch */ int field_B9C; - /* BA0h */ int field_BA0; - /* BA4h */ int field_BA4; - /* BA8h */ int field_BA8; - /* BACh */ int field_BAC; - /* BB0h */ int field_BB0; - /* BB4h */ int field_BB4; - /* BB8h */ int field_BB8; - /* BBCh */ int field_BBC; - /* BC0h */ int field_BC0; - /* BC4h */ int field_BC4; - /* BC8h */ int field_BC8; - /* BCCh */ int field_BCC; - /* BD0h */ int field_BD0; - /* BD4h */ int field_BD4; - /* BD8h */ int field_BD8; - /* BDCh */ int field_BDC; - /* BE0h */ int field_BE0; - /* BE4h */ int field_BE4; - /* BE8h */ int field_BE8; - /* BECh */ int field_BEC; - /* BF0h */ int field_BF0; - /* BF4h */ int field_BF4; - /* BF8h */ int field_BF8; - /* BFCh */ int field_BFC; - /* C00h */ int field_C00; - /* C04h */ int field_C04; - /* C08h */ int field_C08; - /* C0Ch */ int field_C0C; - /* C10h */ int field_C10; - /* C14h */ int field_C14; - /* C18h */ int field_C18; - /* C1Ch */ int field_C1C; - /* C20h */ int field_C20; - /* C24h */ int field_C24; - /* C28h */ int field_C28; - /* C2Ch */ int field_C2C; - /* C30h */ int field_C30; - /* C34h */ int field_C34; - /* C38h */ int field_C38; - /* C3Ch */ int field_C3C; - /* C40h */ int field_C40; - /* C44h */ int field_C44; - /* C48h */ int field_C48; - /* C4Ch */ int field_C4C; - /* C50h */ int field_C50; - /* C54h */ int field_C54; - /* C58h */ int field_C58; - /* C5Ch */ int field_C5C; - /* C60h */ int field_C60; - /* C64h */ int field_C64; - /* C68h */ int field_C68; - /* C6Ch */ int field_C6C; - /* C70h */ int field_C70; - /* C74h */ int field_C74; - /* C78h */ int field_C78; - /* C7Ch */ int field_C7C; - /* C80h */ int field_C80; - /* C84h */ int field_C84; - /* C88h */ int field_C88; - /* C8Ch */ int field_C8C; - /* C90h */ int field_C90; - /* C94h */ int field_C94; - /* C98h */ int field_C98; - /* C9Ch */ int field_C9C; - /* CA0h */ int field_CA0; - /* CA4h */ int field_CA4; - /* CA8h */ int field_CA8; - /* CACh */ int field_CAC; - /* CB0h */ int field_CB0; - /* CB4h */ int field_CB4; - /* CB8h */ int field_CB8; - /* CBCh */ int field_CBC; - /* CC0h */ int field_CC0; - /* CC4h */ int field_CC4; - /* CC8h */ int field_CC8; - /* CCCh */ int field_CCC; - /* CD0h */ int field_CD0; - /* CD4h */ int field_CD4; - /* CD8h */ int field_CD8; - /* CDCh */ int field_CDC; - /* CE0h */ int field_CE0; - /* CE4h */ int field_CE4; - /* CE8h */ int field_CE8; - /* CECh */ int field_CEC; - /* CF0h */ int field_CF0; - /* CF4h */ int field_CF4; - /* CF8h */ int field_CF8; - /* CFCh */ int field_CFC; - /* D00h */ int field_D00; - /* D04h */ int field_D04; - /* D08h */ int field_D08; - /* D0Ch */ int field_D0C; - /* D10h */ int field_D10; - /* D14h */ int field_D14; - /* D18h */ int field_D18; - /* D1Ch */ int field_D1C; - /* D20h */ int field_D20; - /* D24h */ int field_D24; - /* D28h */ int field_D28; - /* D2Ch */ int field_D2C; - /* D30h */ int field_D30; - /* D34h */ int field_D34; - /* D38h */ int field_D38; - /* D3Ch */ int field_D3C; - /* D40h */ int field_D40; - /* D44h */ int field_D44; - /* D48h */ int field_D48; - /* D4Ch */ int field_D4C; - /* D50h */ int field_D50; - /* D54h */ int field_D54; - /* D58h */ int field_D58; - /* D5Ch */ int field_D5C; - /* D60h */ int field_D60; - /* D64h */ int field_D64; - /* D68h */ int field_D68; - /* D6Ch */ int field_D6C; - /* D70h */ int field_D70; - /* D74h */ int field_D74; - /* D78h */ int field_D78; - /* D7Ch */ int field_D7C; - /* D80h */ int field_D80; - /* D84h */ int field_D84; - /* D88h */ int field_D88; - /* D8Ch */ int field_D8C; - /* D90h */ int field_D90; - /* D94h */ int field_D94; - /* D98h */ int field_D98; - /* D9Ch */ int field_D9C; - /* DA0h */ int field_DA0; - /* DA4h */ int field_DA4; - /* DA8h */ int field_DA8; - /* DACh */ int field_DAC; - /* DB0h */ int field_DB0; - /* DB4h */ int field_DB4; - /* DB8h */ int field_DB8; - /* DBCh */ int field_DBC; - /* DC0h */ int field_DC0; - /* DC4h */ int field_DC4; - /* DC8h */ int field_DC8; - /* DCCh */ int field_DCC; - /* DD0h */ int field_DD0; - /* DD4h */ int field_DD4; - /* DD8h */ int field_DD8; - /* DDCh */ int field_DDC; - /* DE0h */ int field_DE0; - /* DE4h */ int field_DE4; - /* DE8h */ int field_DE8; - /* DECh */ int field_DEC; - /* DF0h */ int field_DF0; - /* DF4h */ int field_DF4; - /* DF8h */ int field_DF8; - /* DFCh */ int field_DFC; - /* E00h */ int field_E00; - /* E04h */ int field_E04; - /* E08h */ int field_E08; - /* E0Ch */ int field_E0C; - /* E10h */ int field_E10; - /* E14h */ int field_E14; - /* E18h */ int field_E18; - /* E1Ch */ int field_E1C; - /* E20h */ int field_E20; - /* E24h */ int field_E24; - /* E28h */ int field_E28; - /* E2Ch */ int field_E2C; - /* E30h */ int field_E30; - /* E34h */ int field_E34; - /* E38h */ int field_E38; - /* E3Ch */ int field_E3C; - /* E40h */ int field_E40; - /* E44h */ int field_E44; - /* E48h */ int field_E48; - /* E4Ch */ int field_E4C; - /* E50h */ int field_E50; - /* E54h */ int field_E54; - /* E58h */ int field_E58; - /* E5Ch */ int field_E5C; - /* E60h */ int field_E60; - /* E64h */ int field_E64; - /* E68h */ int field_E68; - /* E6Ch */ int field_E6C; - /* E70h */ int field_E70; - /* E74h */ int field_E74; - /* E78h */ int field_E78; - /* E7Ch */ int field_E7C; - /* E80h */ int field_E80; - /* E84h */ int field_E84; - /* E88h */ int field_E88; - /* E8Ch */ int field_E8C; - /* E90h */ int field_E90; - /* E94h */ int field_E94; - /* E98h */ int field_E98; - /* E9Ch */ int field_E9C; - /* EA0h */ int field_EA0; - /* EA4h */ int field_EA4; - /* EA8h */ int field_EA8; - /* EACh */ int field_EAC; - /* EB0h */ int field_EB0; - /* EB4h */ int field_EB4; - /* EB8h */ int field_EB8; - /* EBCh */ int field_EBC; - /* EC0h */ int field_EC0; - /* EC4h */ int field_EC4; - /* EC8h */ int field_EC8; - /* ECCh */ int field_ECC; - /* ED0h */ int field_ED0; - /* ED4h */ int field_ED4; - /* ED8h */ int field_ED8; - /* EDCh */ int field_EDC; - /* EE0h */ int field_EE0; - /* EE4h */ int field_EE4; - /* EE8h */ int field_EE8; - /* EECh */ int field_EEC; - /* EF0h */ int field_EF0; - /* EF4h */ int field_EF4; - /* EF8h */ int field_EF8; - /* EFCh */ int field_EFC; - /* F00h */ int field_F00; - /* F04h */ int field_F04; - /* F08h */ int field_F08; - /* F0Ch */ int field_F0C; - /* F10h */ int field_F10; - /* F14h */ int field_F14; - /* F18h */ int field_F18; - /* F1Ch */ int field_F1C; - /* F20h */ int field_F20; - /* F24h */ int field_F24; - /* F28h */ int field_F28; - /* F2Ch */ int field_F2C; - /* F30h */ int field_F30; - /* F34h */ int field_F34; - /* F38h */ int field_F38; - /* F3Ch */ int field_F3C; - /* F40h */ int field_F40; - /* F44h */ int field_F44; - /* F48h */ int field_F48; - /* F4Ch */ int field_F4C; - /* F50h */ int field_F50; - /* F54h */ int field_F54; - /* F58h */ int field_F58; - /* F5Ch */ int field_F5C; - /* F60h */ int field_F60; - /* F64h */ int field_F64; - /* F68h */ int field_F68; - /* F6Ch */ int field_F6C; - /* F70h */ int field_F70; - /* F74h */ int field_F74; - /* F78h */ int field_F78; - /* F7Ch */ int field_F7C; - /* F80h */ int field_F80; - /* F84h */ int field_F84; - /* F88h */ int field_F88; - /* F8Ch */ int field_F8C; - /* F90h */ int field_F90; - /* F94h */ int field_F94; - /* F98h */ int field_F98; - /* F9Ch */ int field_F9C; - /* FA0h */ int field_FA0; - /* FA4h */ int field_FA4; - /* FA8h */ int field_FA8; - /* FACh */ int field_FAC; - /* FB0h */ int field_FB0; - /* FB4h */ int field_FB4; - /* FB8h */ int field_FB8; - /* FBCh */ int field_FBC; - /* FC0h */ int field_FC0; - /* FC4h */ int field_FC4; - /* FC8h */ int field_FC8; - /* FCCh */ int field_FCC; - /* FD0h */ int field_FD0; - /* FD4h */ int field_FD4; - /* FD8h */ int field_FD8; - /* FDCh */ int field_FDC; - /* FE0h */ int field_FE0; - /* FE4h */ int field_FE4; - /* FE8h */ int field_FE8; - /* FECh */ int field_FEC; - /* FF0h */ int field_FF0; - /* FF4h */ int field_FF4; - /* FF8h */ int field_FF8; - /* FFCh */ int field_FFC; - /* 1000h */ int field_1000; - /* 1004h */ int field_1004; - /* 1008h */ ResourceKey field_1008; - /* 1014h */ int field_1014; - /* 1018h */ int field_1018; - /* 101Ch */ int field_101C; - /* 1020h */ int field_1020; - /* 1024h */ int field_1024; - /* 1028h */ int field_1028; - /* 102Ch */ int field_102C; - /* 1030h */ int field_1030; - /* 1034h */ int field_1034; - /* 1038h */ int field_1038; - /* 103Ch */ int field_103C; - /* 1040h */ int field_1040; - /* 1044h */ int field_1044; - /* 1048h */ int field_1048; - /* 104Ch */ int field_104C; - /* 1050h */ int field_1050; - /* 1054h */ int field_1054; - /* 1058h */ int field_1058; - /* 105Ch */ int field_105C; - /* 1060h */ int field_1060; - /* 1064h */ int field_1064; - /* 1068h */ int field_1068; - /* 106Ch */ int field_106C; - /* 1070h */ int field_1070; - /* 1074h */ int field_1074; - /* 1078h */ int field_1078; - /* 107Ch */ int field_107C; - /* 1080h */ int field_1080; - /* 1084h */ int field_1084; - /* 1088h */ int field_1088; - /* 108Ch */ int field_108C; - /* 1090h */ int field_1090; - /* 1094h */ int field_1094; - /* 1098h */ int field_1098; - /* 109Ch */ int field_109C; - /* 10A0h */ int field_10A0; - /* 10A4h */ int field_10A4; - /* 10A8h */ int field_10A8; - /* 10ACh */ int field_10AC; - /* 10B0h */ int field_10B0; - /* 10B4h */ int field_10B4; - /* 10B8h */ int field_10B8; - /* 10BCh */ int field_10BC; - /* 10C0h */ int field_10C0; - /* 10C4h */ int field_10C4; - /* 10C8h */ int field_10C8; - /* 10CCh */ int field_10CC; - /* 10D0h */ int field_10D0; - /* 10D4h */ int field_10D4; - /* 10D8h */ int field_10D8; - /* 10DCh */ int field_10DC; - /* 10E0h */ int field_10E0; - /* 10E4h */ int field_10E4; - /* 10E8h */ int field_10E8; - /* 10ECh */ int field_10EC; - /* 10F0h */ int field_10F0; - /* 10F4h */ int field_10F4; - /* 10F8h */ int field_10F8; - /* 10FCh */ int field_10FC; - /* 1100h */ int field_1100; - /* 1104h */ int field_1104; - /* 1108h */ int field_1108; - /* 110Ch */ int field_110C; - /* 1110h */ int field_1110; - /* 1114h */ int field_1114; - /* 1118h */ int field_1118; - /* 111Ch */ int field_111C; - /* 1120h */ int field_1120; - /* 1124h */ int field_1124; - /* 1128h */ int field_1128; - /* 112Ch */ int field_112C; - /* 1130h */ int field_1130; - /* 1134h */ int field_1134; - /* 1138h */ int field_1138; - /* 113Ch */ int field_113C; - /* 1140h */ int field_1140; - /* 1144h */ int field_1144; - /* 1148h */ int field_1148; - /* 114Ch */ int field_114C; - /* 1150h */ int field_1150; - /* 1154h */ int field_1154; - /* 1158h */ int field_1158; - /* 115Ch */ int field_115C; - /* 1160h */ int field_1160; - /* 1164h */ int field_1164; - /* 1168h */ int field_1168; - /* 116Ch */ int field_116C; - /* 1170h */ int field_1170; - /* 1174h */ int field_1174; - /* 1178h */ int field_1178; - /* 117Ch */ int field_117C; - /* 1180h */ int field_1180; - /* 1184h */ int field_1184; - /* 1188h */ int field_1188; - /* 118Ch */ int field_118C; - /* 1190h */ int field_1190; - /* 1194h */ int field_1194; - /* 1198h */ int field_1198; - /* 119Ch */ int field_119C; - /* 11A0h */ int field_11A0; - /* 11A4h */ int field_11A4; - /* 11A8h */ int field_11A8; - /* 11ACh */ int field_11AC; - /* 11B0h */ int field_11B0; - /* 11B4h */ int field_11B4; - /* 11B8h */ int field_11B8; - /* 11BCh */ int field_11BC; - /* 11C0h */ int field_11C0; - /* 11C4h */ int field_11C4; - /* 11C8h */ int field_11C8; - /* 11CCh */ int field_11CC; - /* 11D0h */ int field_11D0; - /* 11D4h */ int field_11D4; - /* 11D8h */ int field_11D8; - /* 11DCh */ int field_11DC; - /* 11E0h */ int field_11E0; - /* 11E4h */ int field_11E4; - /* 11E8h */ int field_11E8; - /* 11ECh */ int field_11EC; - /* 11F0h */ int field_11F0; - /* 11F4h */ int field_11F4; - /* 11F8h */ int field_11F8; - /* 11FCh */ int field_11FC; - /* 1200h */ int field_1200; - /* 1204h */ int field_1204; - /* 1208h */ int field_1208; - /* 120Ch */ int field_120C; - /* 1210h */ int field_1210; - /* 1214h */ int field_1214; - /* 1218h */ int field_1218; - /* 121Ch */ int field_121C; - /* 1220h */ int field_1220; - /* 1224h */ int field_1224; - /* 1228h */ int field_1228; - /* 122Ch */ int field_122C; - /* 1230h */ int field_1230; - /* 1234h */ int field_1234; - /* 1238h */ int field_1238; - /* 123Ch */ int field_123C; - /* 1240h */ int field_1240; - /* 1244h */ int field_1244; + static IBakeManager* Get(); }; - ASSERT_SIZE(IBakeManager, 0x1248); namespace Addresses(IBakeManager) { DeclareAddress(Get); } - inline BakeParameters::BakeParameters(int16_t _mFlag, int16_t _mPriority, uint32_t mTag) - : mFlag(_mFlag) - , mPriority(_mPriority) - , mTag(mTag) + inline BakeParameters::BakeParameters(int16_t _field_04, int16_t _field_06, uint32_t defaultID) + : field_04(_field_04) + , field_06(_field_06) + , mDefaultID(defaultID) { } diff --git a/Spore ModAPI/Spore/Editors/Editor.h b/Spore ModAPI/Spore/Editors/Editor.h index 2ab34a24..99e4af96 100644 --- a/Spore ModAPI/Spore/Editors/Editor.h +++ b/Spore ModAPI/Spore/Editors/Editor.h @@ -216,8 +216,6 @@ namespace Editors static uint32_t GetTypeIDForAssetType(uint32_t assetTypeID); - static void ComputeCreatureVerbIcons(cCreatureDataResource* creatureData, int VerbTrayCollection, int brainLevel, float param_4); - public: int vftable_1C; @@ -289,9 +287,9 @@ namespace Editors /* CCh */ EditorRigblockPtr mpActivePart; /* D0h */ EditorRigblockPtr mpMovingPart; // the part that is being moved, only when mouse is being clicked /* D4h */ EditorRigblockPtr mpSelectedPart; // also valid for spines - /* D8h */ EditorRigblockPtr mPreviousSelectedBlock; - /* DCh */ EditorRigblockPtr mToBeSelectedBlock; - /* E0h */ bool mToBeSelectedTorso; + /* D8h */ EditorRigblockPtr field_D8; + /* DCh */ EditorRigblockPtr field_DC; + /* E0h */ bool field_E0; /* E4h */ EditorBaseHandle* mpActiveHandle; // morph handles /// Is the mouse over the skin of the creature? /* E8h */ bool mbMouseIsInSkin; @@ -395,18 +393,18 @@ namespace Editors /* 290h */ int field_290; /* 294h */ IShadowWorldPtr mpShadowWorld; /* 298h */ Graphics::ShadowMapInfo* mpShadowMapInfo; - /* 29Ch */ int mDefaultPaintTheme; - /* 2A0h */ int mCurrentPaintTheme; - /* 2A4h */ int mVerbIconTray; + /* 29Ch */ int field_29C; + /* 2A0h */ int field_2A0; + /* 2A4h */ int field_2A4; /// The save extension key which will be parsed both into a key and a three letter extension. /* 2A8h */ uint32_t mSaveExtension; /// The save directory key, Resource::SaveAreaID /* 2ACh */ uint32_t mSaveDirectory; /* 2B0h */ bool mIsActive; - /* 2B1h */ bool mManipulatedBlockFromPalette; // not initialized + /* 2B1h */ char field_2B1; // not initialized /* 2B2h */ bool mbShowVertebrae; // true - /* 2B3h */ bool mIgnoreMouseMove; - /* 2B4h */ bool mUnselectCurrentBlock; + /* 2B3h */ char field_2B3; + /* 2B4h */ char field_2B4; /* 2B5h */ bool mbDisableCreatureAnimIK; // not initialized /// The width of the space that the model skin is constrained to. /* 2B8h */ float mBoundSize; // 2.0 @@ -645,7 +643,6 @@ namespace Editors DeclareAddress(GetEditorForAssetType); DeclareAddress(GetNameForAssetType); DeclareAddress(GetTypeIDForAssetType); - DeclareAddress(ComputeCreatureVerbIcons); } #ifdef SDK_TO_GHIDRA diff --git a/Spore ModAPI/Spore/Editors/EditorModel.h b/Spore ModAPI/Spore/Editors/EditorModel.h index 8c780140..fc6baf4e 100644 --- a/Spore ModAPI/Spore/Editors/EditorModel.h +++ b/Spore ModAPI/Spore/Editors/EditorModel.h @@ -70,20 +70,20 @@ namespace Editors public: /* 0Ch */ ResourceKey mKey; /* 18h */ eastl::vector mRigblocks; - /* 2Ch */ bool mbAllBlocksLoaded; - /* 30h */ int mPhysicsWorld; // intrusive_ptr, but not to an Object - /* 34h */ bool mUseDynamics; - /* 38h */ float mBounds; - /* 3Ch */ float mFeetBounds; - /* 40h */ float mMinHeight; // -2.0 - /* 44h */ float mMaxHeight; // 2.0 - /* 48h */ float mMinimumLeglessCreatureHeight; - /* 4Ch */ bool mShowHiddenHandles; - /* 4Dh */ bool mShowBoneLengthHandles; - /* 4Eh */ bool mUseBoundsForDelete; // true - /* 4Fh */ bool mUsingSymmetry; //TODO allows symmetry? - /* 50h */ bool mSkinNeedsUpdating; - /* 51h */ bool mChanged; + /* 2Ch */ bool field_2C; + /* 30h */ int field_30; // intrusive_ptr, but not to an Object + /* 34h */ bool field_34; + /* 38h */ float field_38; + /* 3Ch */ float field_3C; + /* 40h */ float field_40; // -2.0 + /* 44h */ float field_44; // 2.0 + /* 48h */ float field_48; + /* 4Ch */ bool field_4C; + /* 4Dh */ bool field_4D; + /* 4Eh */ bool field_4E; // true + /* 4Fh */ bool field_4F; //TODO allows symmetry? + /* 50h */ bool field_50; + /* 51h */ bool field_51; /* 54h */ int mTranslationOptions; /* 58h */ uint32_t mModelType; /* 5Ch */ eastl::string16 mName; @@ -92,7 +92,7 @@ namespace Editors /* 8Ch */ uint32_t mSkinEffectIDs[3]; // Skinpaint IDs /* 98h */ int mSkinEffectSeeds[3]; // 1234 /* A4h */ ColorRGB mColors[3]; // Skinpaint Colors - /* C8h */ eastl::vector mBBoxesOverride; + /* C8h */ eastl::vector field_C8; /* DCh */ int mZCorpScore; // not initialized }; ASSERT_SIZE(EditorModel, 0xE0); diff --git a/Spore ModAPI/Spore/Editors/EditorRigblock.h b/Spore ModAPI/Spore/Editors/EditorRigblock.h index 9d1cc4b8..83275bf4 100644 --- a/Spore ModAPI/Spore/Editors/EditorRigblock.h +++ b/Spore ModAPI/Spore/Editors/EditorRigblock.h @@ -41,126 +41,6 @@ namespace Editors class EditorRigblock; class EditorModel; - enum modelCapability - { - kModelCapabilityPerch = 0x0551bf16, - kModelCapabilitySpine = 0x100f0f5a, - kModelCapabilityLimb = 0xb00f0fdf, - kModelCapabilityNoStretch = 0x06F079DF, - kModelCapabilityGrasper = 0xb00f0fe2, - kModelCapabilityEar = 0xb00f0fe5, - kModelCapabilityEye = 0xb00f0fe9, - kModelCapabilityMouth = 0xb00f0fec, - kModelCapabilityFoot = 0xb00f0fef, - kModelCapabilitySlash = 0xb00f0ff2, - kModelCapabilityPoke = 0xb00f0ff4, - kModelCapabilityBash = 0xb00f0ff7, - kModelCapabilityFruit = 0xd00f0ffb, - kModelCapabilityFin = 0xd00f0ffe, - kModelCapabilityLiquid = 0x02294de1, - kModelCapabilityDayVision = 0x022e7977, - kModelCapabilityNightVision = 0x022e7777, - kModelCapabilityCarnivorous = 0x022e7847, - kModelCapabilityHerbivorous = 0x022e785c, - kModelCapabilityDetail = 0x025c6878, - kModelCapabilitySocial = 0x91a570ba, - kModelCapabilityHealth = 0x31c3e5b2, - kModelCapabilityStealth = 0x51c3e5b4, - kModelCapabilityCuteness = 0xb1c3e5b5, - kModelCapabilityJump = 0x330c117a, - kModelCapabilityBlock = 0xf354a879, - kModelCapabilityCall = 0xf354a87a, - kModelCapabilityCreatureSpeed = 0xb354a87c, - kModelCapabilitySprint = 0x3386c531, - kModelCapabilityWing = 0x04f4d188, - kModelCapabilitySense = 0xb3e30313, - - kModelCapabilityMean = 0xb1c3e5b6, - kModelCapabilityBite = 0xb1c3e5b7, - kModelCapabilityCharge = 0xb1c3e5b8, - kModelCapabilitySpit = 0xb1c3e5b9, - kModelCapabilityStrike = 0xb1c3e5c0, - kModelCapabilityDance = 0xb1c3e5c1, - kModelCapabilityVocalize = 0xb1c3e5c2, - kModelCapabilityFlaunt = 0xb1c3e5c3, - kModelCapabilityPosture = 0xb1c3e5c4, - kModelCapabilityGlide = 0x04f4e1b4, - - kModelCapabilityTribeAttack = 0x055d370e, - kModelCapabilityTribeSocial = 0x055d3747, - kModelCapabilityTribeArmor = 0x055d374c, - kModelCapabilityTribeGather = 0x055d3750, - kModelCapabilityTribeFishing = 0x055d3754, - - kModelCapabilityEnergyRegen = 0x073ce5dd, - kModelCapabilityAdventurerMissile = 0x0732c356, - kModelCapabilityAdventurerEnergyBlade = 0x073930ea, - kModelCapabilityAdventurerShieldGenerator = 0x073e33c7, - kModelCapabilityAdventurerHoloCharm = 0x074260ec, - kModelCapabilityAdventurerLightningSword = 0x075f5ba0, - kModelCapabilityAdventurerPulseGun = 0x075f5ba6, - kModelCapabilityAdventurerBattleArmor = 0x075f5bab, - kModelCapabilityAdventurerPoweredArmor = 0x075f5baf, - kModelCapabilityAdventurerAbsorptionShield = 0x075f5bb4, - kModelCapabilityAdventurerHealthRegen = 0x075f5bb7, - kModelCapabilityAdventurerHealthBonus = 0x075f5bbc, - kModelCapabilityAdventurerSummonSwarm = 0x075f5bbf, - kModelCapabilityAdventurerMindMeld = 0x075f5bc3, - kModelCapabilityAdventurerPoisonBlade = 0x075f5bc8, - kModelCapabilityAdventurerFreeze = 0x075f5bcb, - kModelCapabilityAdventurerGracefulWaltz = 0x075f5bcf, - kModelCapabilityAdventurerHarmoniousSong = 0x075f5bd2, - kModelCapabilityAdventurerRoyalCharm = 0x075f5bd6, - kModelCapabilityAdventurerRadiantPose = 0x075f5bda, - kModelCapabilityAdventurerSprintBurst = 0x075f5bde, - kModelCapabilityAdventurerHover = 0x075f5be3, - kModelCapabilityAdventurerStealthField = 0x075f5be6, - kModelCapabilityAdventurerJumpJet = 0x075f5bea, - kModelCapabilityAdventurerInspiringSong = 0x075f5bee, - kModelCapabilityAdventurerStunningDance = 0x075f5bf2, - kModelCapabilityAdventurerConfettiPose = 0x075f5bf7, - kModelCapabilityAdventurerEnergyStorage = 0x075f5bfa, - - kModelCapabilityVehicleSpeed = 0x11b78a70, - kModelCapabilityVehicleDefense = 0x11b78a71, - kModelCapabilityVehiclePower = 0x11b78a72, - kModelCapabilityVehicleMilitaryPower = 0x06329468, - kModelCapabilityVehicleReligiousPower = 0x06329469, - kModelCapabilityVehicleEconomicPower = 0x0632946a, - - kModelCapabilityCellFilter = 0x11b79a70, - kModelCapabilityCellSpike = 0x11b79a71, - kModelCapabilityCellJet = 0x11b79a72, - kModelCapabilityCellFlagella = 0x032f92e6, - kModelCapabilityCellJaw = 0x11b79a74, - kModelCapabilityCellElectric = 0x11b79a75, - kModelCapabilityCellPoison = 0x11b79a76, - kModelCapabilityCellCilia = 0x11b79a77, - kModelCapabilityCellPoker = 0x11b79a78, - - kModelCapabilityCellEye = 0x11b79a73, - kModelCapabilityCellMouth = 0x11b79301, - kModelCapabilityCellMovement = 0x11b79302, - kModelCapabilityCellWeapon = 0x11b79303, - kModelCapabilityCellWeaponCharging = 0x11b79304, - kModelCapabilityCellGameSpeed = 0x066783b4, - - kModelCapabilityCellCarnivore = 0x4d192a1, - kModelCapabilityCellOmnivore = 0x4d18972, - kModelCapabilityCellStarvivore = 0x4d18c4c, - kModelCapabilityCellStarvivore2 = 0x4d192a14, - kModelCapabilityCellHealth = 0x4d18efd, - kModelCapabilityCellHerbivore = 0x4d192a2, - kModelCapabilityCellProboscis = 0x4d192a3, - - kModelCapabilityCell_herbivore_carnivore_proboscis = 0x50c34699, - kModelCapabilityCell_herbivore_carnivore = 0x177209ee, - kModelCapabilityCell_herbivore_proboscis = 0x64e7222b, - kModelCapabilityCell_carnivore_proboscis = 0xf613df04, - - kModelCapabilityEyeOverlayEffect = 0xF354A870, - }; - struct EditorRigblockCapability { /// Property ID used to check the capability, such as `modelCapabilityAdventurerMissile` @@ -199,17 +79,6 @@ namespace Editors }; ASSERT_SIZE(UnkEditorRigblockStruct1, 0x38); - - enum eBlockUIState - { - kSPUIStateDefault = 0, - kSPUIStateInvalid = 1, - kSPUIStateGhost = 2, - kSPUIStatePaintMode = 3, - kSPUIStateBadLocation = 4, - kSPUIStatePrevent = 5, - }; - //TODO related with display? check SetShadedDisplay() struct UnkEditorRigblockStruct2 { @@ -346,26 +215,26 @@ namespace Editors /* 2Ch */ int field_2C; /* 30h */ float field_30; /* 34h */ bool field_34; // true - /* 38h */ UnkEditorRigblockStruct2 mUIState; - /* 40h */ UnkEditorRigblockStruct2 mLastUIState; + /* 38h */ UnkEditorRigblockStruct2 field_38; + /* 40h */ UnkEditorRigblockStruct2 field_40; /* 48h */ Vector3 mPosition; - /* 54h */ Vector3 mHistoryPosition; // updated when the part is clicked + /* 54h */ Vector3 lastPos; // updated when the part is clicked /// Combination of mUserOrientation and mOrientation /* 60h */ Matrix3 mTotalOrientation; - /* 84h */ Matrix3 mHistoryTotalOrientation; + /* 84h */ Matrix3 field_84; /* A8h */ Matrix3 mOrientation; - /* CCh */ Matrix3 mHistoryBaseOrientation; + /* CCh */ Matrix3 field_CC; /* F0h */ Matrix3 mUserOrientation; - /* 114h */ Matrix3 mHistoryUserOrientation; - /* 138h */ Vector3 mSurfaceNormal; // position relative to parent? - /* 144h */ Vector3 mReplacePartDisplacement; - /* 150h */ int mSnapType; // -2 + /* 114h */ Matrix3 field_114; + /* 138h */ Vector3 field_138; // position relative to parent? + /* 144h */ Vector3 field_144; + /* 150h */ int field_150; // -2 /* 154h */ EditorBaseHandlePtr mAxisHandles[3]; //TODO sub_483CE0 /* 160h */ EditorBaseHandlePtr mpRotationBallHandle; //TODO a handle, sub_482F30 - /* 164h */ int mRotationRingHandleAnimID; - /* 168h */ int mVertebraAnimID; - /* 16Ch */ float mRotationRingHandleCurrentUnscaledRadius; - /* 170h */ Clock mTimer; + /* 164h */ int field_164; + /* 168h */ int field_168; + /* 16Ch */ float field_16C; + /* 170h */ Clock field_170; /* 188h */ int field_188; /* 18Ch */ int field_18C; /* 190h */ int field_190; diff --git a/Spore ModAPI/Spore/Editors/VerbIconData.h b/Spore ModAPI/Spore/Editors/VerbIconData.h index ca1ca929..d4398441 100644 --- a/Spore ModAPI/Spore/Editors/VerbIconData.h +++ b/Spore ModAPI/Spore/Editors/VerbIconData.h @@ -96,7 +96,7 @@ namespace Editors /* 11h */ bool mVerbIconShowZeroLevel; /* 14h */ int mVerbIconTriggerKey; // -1 /* 18h */ float mVerbIconLevel; // not initialized - /* 1Ch */ eVerbIconCategory mVerbIconMaxLevel; + /* 1Ch */ float mVerbIconMaxLevel; /* 20h */ int field_20; // not initialized /* 24h */ eVerbIconCategory mVerbIconCategory; /* 28h */ uint32_t mVerbIconRepresentativeAnimation; // -1 diff --git a/Spore ModAPI/Spore/Simulator/SubSystem/GameViewManager.h b/Spore ModAPI/Spore/Simulator/SubSystem/GameViewManager.h index 7657f01e..c43ee10b 100644 --- a/Spore ModAPI/Spore/Simulator/SubSystem/GameViewManager.h +++ b/Spore ModAPI/Spore/Simulator/SubSystem/GameViewManager.h @@ -137,8 +137,6 @@ namespace Simulator /* ACh */ eastl::vector field_AC; /* C0h */ bool field_C0; /* C1h */ bool field_C1; // visible? - /* C2h */ bool field_C2; - /* C3h */ bool field_C3; /* C4h */ eastl::intrusive_ptr field_C4; // release at 8 /* C8h */ eastl::map field_C8; // actually might be a set, of object TYPEs that are not visible? /* E4h */ IModelWorldPtr field_E4; // IModelWorld? diff --git a/Spore ModAPI/Spore/Simulator/SubSystem/ObstacleManager.h b/Spore ModAPI/Spore/Simulator/SubSystem/ObstacleManager.h index c4c0f2a4..bb35fd8d 100644 --- a/Spore ModAPI/Spore/Simulator/SubSystem/ObstacleManager.h +++ b/Spore ModAPI/Spore/Simulator/SubSystem/ObstacleManager.h @@ -20,7 +20,7 @@ namespace Simulator static cObstacleManager* Get(); public: - /* 20h */ uint32_t mFlags; + /* 20h */ int mFlags; /* 24h */ int field_24; /* 28h */ int field_28; /* 2Ch */ int field_2C; @@ -41,18 +41,17 @@ namespace Simulator /* 5498h */ float field_5498; /* 549Ch */ float field_549C; /* 54A0h */ float field_54A0; - /* 54A4h */ float field_54A4; //the ptr? + /* 54A4h */ float field_54A4; /* 54A8h */ eastl::hash_map field_54A8; /* 54C8h */ eastl::hash_map field_54C8; /* 54E8h */ eastl::hash_map field_54E8; /* 5508h */ eastl::fixed_vector field_5508; - /* 550ch */ eastl::fixed_vector field_550C; //i am not sure /* 55A0h */ uint32_t mPickObstacleTypes; /* 55A4h */ int field_55A4; /* 55A8h */ eastl::fixed_vector mObstaclesToAdd; /* 56C0h */ eastl::hash_map mTerrainModelReplacements; }; - ASSERT_SIZE(cObstacleManager, 0x5778); + ASSERT_SIZE(cObstacleManager, 0x56E0); namespace Addresses(cObstacleManager) { DeclareAddress(Get); // 0xB3D320 0xB3D4C0 diff --git a/Spore ModAPI/Spore/Simulator/cCreatureAbility.h b/Spore ModAPI/Spore/Simulator/cCreatureAbility.h index 01a1b8cf..627dd07c 100644 --- a/Spore ModAPI/Spore/Simulator/cCreatureAbility.h +++ b/Spore ModAPI/Spore/Simulator/cCreatureAbility.h @@ -38,11 +38,10 @@ namespace Simulator enum AbilityTypes { - kNone = 0, kTribeHorn = 5, kTribeMaraca = 6, kTribeDidgeridoo = 7, - kWeakBite = 8, + kAutoAttack = 8, kStealth = 13, kSpeed = 14, kBlock = 15, @@ -63,7 +62,7 @@ namespace Simulator kSprint = 39, kSight = 40, kStomp = 41, - kTribeWeaponAttack = 42, + kTribeAttackUnk = 42, kTribeSpear = 43, kTribeAttack = 44, kTribeSocial = 45, @@ -110,15 +109,6 @@ namespace Simulator kEnergyStorage = 87, }; - enum AbilityCategory - { - kCategorySocial = 0, - kCategoryAttack = 1, - kCategoryNeutral = 2, - kCategoryPassive = 3, - kCategorySuperPower = 4, - }; - //PLACEHOLDER loc_D1E9D0 uses ability type? /// Returns the animation ID at the given index, or 0x4330667 if there are no animation IDs in this ability or @@ -126,7 +116,7 @@ namespace Simulator /// @param uint32_t GetAnimationID(int index); - /* 08h */ AbilityTypes mType; + /* 08h */ int mType; /* 0Ch */ int mCategory; /* 10h */ int mSocialCategory; /* 14h */ LocalizedString nName; diff --git a/Spore ModAPI/Spore/Simulator/cSimulatorSpaceGame.h b/Spore ModAPI/Spore/Simulator/cSimulatorSpaceGame.h index 290622f2..23d41446 100644 --- a/Spore ModAPI/Spore/Simulator/cSimulatorSpaceGame.h +++ b/Spore ModAPI/Spore/Simulator/cSimulatorSpaceGame.h @@ -63,10 +63,10 @@ namespace Simulator /* 18h */ int field_18; //TODO space trading UI /* 1Ch */ int field_1C; // -1 /* 20h */ int mpCommunityEditor; //TODO cCommunityEditor - /* 24h */ int mEditorResult; - /* 28h */ int mpCityHallPieMenu; - /* 2Ch */ int mpSelectedBuilding; // not initialized - /* 30h */ int mCachedEventData; // a class + /* 24h */ int field_24; + /* 28h */ int field_28; + /* 2Ch */ int field_2C; // not initialized + /* 30h */ int field_30; // a class /* 34h */ float mSpacePhiOffsetGalaxy; /* 38h */ float mSpacePhiOffsetSolar; /* 3Ch */ float mPlanetCameraMouseRotationSpeed; // not initialized @@ -76,11 +76,11 @@ namespace Simulator /* 4Ch */ bool field_4C; /* 4Dh */ bool field_4D; /* 4Eh */ bool field_4E; - /* 4Fh */ short _padding_; - /* 50h */ eastl::bitset<5> mTransitioning; + /* 4Fh */ bool field_4F; + /* 50h */ int field_50; /* 54h */ cSimPlanetHighLODPtr mpHighLODPlanetSim; /* 58h */ App::MessageListenerData mMessageListenerData; - /* 6Ch */ bool mSavePlanetOnDeactivate; + /* 6Ch */ bool field_6C; /* 70h */ cBadgeManagerPtr mpBadgeManager; /* 74h */ bool field_74; /* 75h */ bool field_75; // true diff --git a/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h b/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h index 1693bce4..6af589fb 100644 --- a/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h +++ b/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h @@ -49,65 +49,45 @@ namespace Simulator typedef eastl::sp_fixed_hash_map UnkStructPool; ASSERT_SIZE(UnkStructPool, 0x4E0); - enum HuntingStyle - { - kSolo = 0, - kPack = 1, - }; - - enum StrafeMode - { - kNoStrafe = 0, - kScaledStrafe = 1, - kFullStrafe = 3, - }; - - enum DominantAbilityType - { - kAbilityTypeEqual = 0, - kAbilityTypeSocial = 1, - kAbilityTypeAttack = 2, - }; - - /* 00h */ UnkStructPool capsInfos; - /* 4E0h */ ResourceKey mSkinColors[3]; //what is this? - /* 504h */ ResourceKey mCreatureKey; + /* 00h */ UnkStructPool field_0; + /* 4E0h */ ResourceKey field_4E0[3]; //what is this? + /* 504h */ ResourceKey mSpeciesKey; /* 510h */ ResourceKey mBabyKey; - /* 51Ch */ eastl::string16 mCreatureName; - /* 52Ch */ eastl::string16 mCreatureDesc; - /* 53Ch */ uint32_t creatureSeq; + /* 51Ch */ eastl::string16 mName; + /* 52Ch */ eastl::string16 field_52C; + /* 53Ch */ int field_53C; /* 540h */ int mCost; - /* 544h */ int mCreatureBaseSpeedGear; + /* 544h */ int field_544; /* 548h */ float mCreatureAbilityJumping; /* 54Ch */ float mCreatureAbilityGliding; /* 550h */ float mCreatureAbilityFlapping; /* 554h */ Math::Vector3 mBoundingBoxUpper; /* 560h */ Math::Vector3 mBoundingBoxLower; /* 56Ch */ float mAdditionalHealth; // 100.0 - /* 570h */ float mSatiety; // 200.0 - /* 574h */ float mCreatureMass; + /* 570h */ float field_570; // 200.0 + /* 574h */ float field_574; //CreatureSize? /* 578h */ bool mHasPlantRoot; /* 57Ch */ ModelTypes mModelType; - /* 580h */ HuntingStyle mHuntingStyle; // not initialized + /* 580h */ int field_580; // not initialized /* 584h */ int field_584; // not initialized - /* 588h */ StrafeMode field_588; // 1 //need check it - /* 58Ch */ float mNumFeet; - /* 590h */ float mNumGraspers; - /* 594h */ float mNumMouths; - /* 598h */ float mNumEars; + /* 588h */ int field_588; // 1 + /* 58Ch */ float mNumFoot; + /* 590h */ float mNumGrasper; + /* 594h */ float mNumMouth; + /* 598h */ float mNumEar; /* 59Ch */ float mNumEye; - /* 5A0h */ float mSumCutenessParts; - /* 5A4h */ float mNumCutenessParts; - /* 5A8h */ float mCutenessSum; + /* 5A0h */ float mCuteness1; + /* 5A4h */ float mCuteness2; + /* 5A8h */ float field_5A8; /* 5ACh */ float mSocialSum; /* 5B0h */ float mAttackSum; /* 5B4h */ float mAttackMaxLevel; /* 5B8h */ float mSocialMaxLevel; /* 5BCh */ float mMeanness; - /* 5C0h */ float mMaxPartLevel; - /* 5C4h */ float mAveragePartLevel; - /* 5C8h */ int mAbilityTime; // 5000 - /* 5CCh */ float mAbilityRecharge; // 1.0 cCreatureAbility->mDuration / cCreatureAbility->mRecharge + /* 5C0h */ float field_5C0; //itemUnlockLevel? + /* 5C4h */ float field_5C4; //itemUnlockLevel? + /* 5C8h */ int mDuration; // 5000 + /* 5CCh */ float mRefillAbilityBars; // 1.0 cCreatureAbility->mDuration / cCreatureAbility->mRecharge /* 5D0h */ int mSprintBuff; // 2 /* 5D4h */ int mBiteLevel; /* 5D8h */ int mChargeLevel; @@ -118,7 +98,7 @@ namespace Simulator /* 5ECh */ int mCharmLevel; /* 5F0h */ int mPoseLevel; /* 5F4h */ int mStealthLevel; - /* 5F8h */ int mBlockLevel; + /* 5F8h */ int field_5F8; /* 5FCh */ int mMatingCall; /* 600h */ int mCreatureSpeedLevel; /* 604h */ int mHealthLevel; @@ -128,14 +108,14 @@ namespace Simulator /* 614h */ int mSprintLevel; /* 618h */ int mSight; //Sense /* 61Ch */ int mGlideLevel; - /* 620h */ int mPreferredSocialType; - /* 624h */ int mPreferredCombatType; + /* 620h */ int field_620; + /* 624h */ int field_624; /* 628h */ int mTribeAttackLevel; /* 62Ch */ int mTribeSocialLevel; /* 630h */ int mTribeArmorLevel; /* 634h */ int mTribeGatherLevel; /* 638h */ int mTribeFishingLevel; - /* 63Ch */ float mAdditionalDamage; + /* 63Ch */ float mDamage; /* 640h */ float mEnergyRecoveryRate; /* 644h */ float mMaxEnergy; /* 648h */ int mShieldGenerator; @@ -165,20 +145,20 @@ namespace Simulator /* 6A8h */ int mStunningDanceLevel; /* 6ACh */ int mConfettiPoseLevel; /* 6B0h */ float mAdventurerEnergyCost; - /* 6B4h */ DominantAbilityType mDominantAbilityType; - /* 6B8h */ eastl::vector mFruits; + /* 6B4h */ int field_6B4; + /* 6B8h */ eastl::vector mFruits; //unk type /* 6CCh */ bool mIsGameMode; //true if cSpeciesProfile was called in gameMode, false otherwise /* 6D0h */ uint32_t mFootWeaponOrMouthType; /* 6D4h */ eastl::fixed_vector mActiveAbilities; //TODO abilities /* 73Ch */ eastl::fixed_vector mPassiveAbilities; - /* 7A4h */ eastl::fixed_vector mSocialAbilityIndexes; - /* 80Ch */ bool mIsPlant; //need check it - /* 80Dh */ bool mBIndexesConverted; //need check it - /* 810h */ eastl::fixed_vector mFruitIndexes; - /* 878h */ eastl::fixed_vector mMouthIndexes; - /* 8E0h */ eastl::fixed_vector mGraspersIndexes; - /* 948h */ eastl::fixed_vector mMouthsIndexes2; - /* 9B0h */ eastl::fixed_vector mGraspersIndexes2; + /* 7A4h */ eastl::fixed_vector mSocialAbilityIndexes; + /* 80Ch */ bool field_80C; + /* 80Dh */ bool field_80D; + /* 810h */ eastl::fixed_vector mFruitIndexes; + /* 878h */ eastl::fixed_vector mMouthIndexes; + /* 8E0h */ eastl::fixed_vector mGraspersIndexes; + /* 948h */ eastl::fixed_vector mMouthsIndexes2; + /* 9B0h */ eastl::fixed_vector mGraspersIndexes2; }; ASSERT_SIZE(cSpeciesProfile, 0xA18); diff --git a/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h b/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h index a4225a2e..45f5bf38 100644 --- a/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h +++ b/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h @@ -4,7 +4,6 @@ #define ObjectTemplateDB (*Sporepedia::OTDB::cObjectTemplateDB::Get()) - namespace Sporepedia { namespace OTDB @@ -20,219 +19,43 @@ namespace Sporepedia /* 20h */ virtual bool SetParameters(const ResourceKey& key, eastl::vector& dst) = 0; }; - enum InterfaceId - { - - }; - class cObjectTemplateDB : public Object { public: - static cObjectTemplateDB* Get(); - - /* 00h */ virtual int AddRef(); - /* 04h */ virtual int Release(); - /* 08h */ virtual void* Dispose(); - /* 0Ch */ virtual void* AsInterface(InterfaceId mID); - /* 10h */ virtual bool Init(); - /* 14h */ virtual bool Shutdown(); + /* 10h */ virtual bool Initialize(); + /* 14h */ virtual bool Dispose(); /* 18h */ virtual bool Write(bool, bool writeSummarizers); /* 1Ch */ virtual bool func1Ch(); /* 20h */ virtual void func20h(); - /* 24h */ virtual bool func24h(eastl::vector& creation, int, const eastl::vector& parameters); - /* 28h */ virtual bool func28h(eastl::vector& dstKeys);//, int, const eastl::vector& parameters); - /* 2Ch */ virtual void FindObjects(eastl::vector& dst, const eastl::vector& parameters); + /* 24h */ virtual bool func24h(eastl::vector& dstKeys, int, const eastl::vector& parameters); + /* 28h */ virtual bool func28h(eastl::vector& dstKeys, int, const eastl::vector& parameters); + /* 2Ch */ virtual void FindObjects(eastl::vector& dst, const eastl::vector& parameters); //TODO thse functions are placeholders - /* 30h */ virtual bool func30h(eastl::vector& creations, uint32_t param_2, const eastl::vector& parameters); - /* 34h */ virtual bool func34h(eastl::vector& creations); - /* 38h */ virtual void func38h(eastl::vector& creations, const eastl::vector& parameters); - /* 3Ch */ virtual bool func3Ch(eastl::vector& creations, uint32_t param_2, const ResourceKey& creation, const eastl::vector& parameters); - /* 40h */ virtual bool func40h(uint32_t param1, int* param2); - /* 44h */ virtual bool func44h(uint32_t param1, int* param2); - /* 48h */ virtual bool func48h(uint32_t param1, int* param2, eastl::vector& creations); - /* 4Ch */ virtual bool func4Ch(uint32_t param1, int* param2, eastl::vector& creations); - /* 50h */ virtual void func50h(int param); - /* 54h */ virtual void func54h(); - /* 58h */ virtual bool func58h(const ResourceKey& creation, bool param);//ResourceKey* - /* 5Ch */ virtual bool func5Ch(const ResourceKey& creation); - /* 60h */ virtual bool func60h(const ResourceKey& creation); - /* 64h */ virtual void func64h(uint32_t param1, eastl::vector& creations, int param); - /* 68h */ virtual void func68h(); - /* 6Ch */ virtual void func6Ch(uint32_t param_1, uint32_t param_2); //App::Property - /* 70h */ virtual bool func70h(const ResourceKey& creation); - /* 74h */ virtual bool DeleteCreationSummary(const ResourceKey& creation, bool param); - /* 78h */ virtual void DeleteCreation(const ResourceKey& creation, bool param); - - /* 7Ch */ virtual bool AddSummarizer(ISummarizer* pSummarizer); + /* 30h */ virtual int func30h(); + /* 34h */ virtual int func34h(); + /* 38h */ virtual int func38h(); + /* 3Ch */ virtual int func3Ch(); + /* 40h */ virtual int func40h(); + /* 44h */ virtual int func44h(); + /* 48h */ virtual int func48h(); + /* 4Ch */ virtual int func4Ch(); + /* 50h */ virtual int func50h(); + /* 54h */ virtual int func54h(); + /* 58h */ virtual int func58h(); + /* 5Ch */ virtual int func5Ch(); + /* 60h */ virtual int func60h(); + /* 64h */ virtual int func64h(); + /* 68h */ virtual int func68h(); + /* 6Ch */ virtual int func6Ch(); + /* 70h */ virtual int func70h(); + /* 74h */ virtual int func74h(); + /* 78h */ virtual int func78h(); - /* 80h */ virtual bool func80h(const ResourceKey& creation, int* param); - /* 84h */ virtual bool func84h(const ResourceKey& creation, uint32_t* param_2); - /* 88h */ virtual void func88h(); + /* 7Ch */ virtual void AddSummarizer(ISummarizer* pSummarizer); - public: - - /* 04h */ int field_04; - /* 08h */ int field_08; - /* 0Ch */ int field_0C; - /* 10h */ int field_10; - /* 14h */ int field_14; - /* 18h */ int field_18; - /* 1Ch */ int field_1C; - /* 20h */ int field_20; - /* 24h */ int field_24; - /* 28h */ int field_28; - /* 2Ch */ int field_2C; - /* 30h */ int field_30; - /* 34h */ int field_34; - /* 38h */ int field_38; - /* 3Ch */ int field_3C; - /* 40h */ bool field_40; - /* 41h */ bool field_41; - /* 42h */ bool field_42; - /* 43h */ bool field_43; - /* 44h */ int field_44; - /* 48h */ int field_48; - /* 4Ch */ int field_4C; - /* 50h */ int field_50; - /* 54h */ int field_54; - /* 58h */ int field_58; - /* 5Ch */ int field_5C; - /* 60h */ int field_60; - /* 64h */ int field_64; - /* 68h */ int field_68; - /* 6Ch */ int field_6C; - /* 70h */ int field_70; - /* 74h */ int field_74; - /* 78h */ int field_78; - /* 7Ch */ int field_7C; - /* 80h */ int field_80; - /* 84h */ int field_84; - /* 88h */ int field_88; - /* 8Ch */ int field_8C; - /* 90h */ int field_90; - /* 94h */ int field_94; - /* 98h */ int field_98; - /* 9Ch */ int field_9C; - /* A0h */ int field_A0; - /* A4h */ int field_A4; - /* A8h */ int field_A8; - /* ACh */ int field_AC; - /* B0h */ int field_B0; - /* B4h */ int field_B4; - /* B8h */ int field_B8; - /* BCh */ int field_BC; - /* C0h */ int field_C0; - /* C4h */ int field_C4; - /* C8h */ int field_C8; - /* CCh */ int field_CC; - /* D0h */ int field_D0; - /* D4h */ int field_D4; - /* D8h */ int field_D8; - /* DCh */ int field_DC; - /* E0h */ int field_E0; - /* E4h */ int field_E4; - /* E8h */ int field_E8; - /* ECh */ int field_EC; - /* F0h */ int field_F0; - /* F4h */ int field_F4; - /* F8h */ int field_F8; - /* FCh */ int field_FC; - /* 100h */ int field_100; - /* 104h */ int field_104; - /* 108h */ int field_108; - /* 10Ch */ int field_10C; - /* 110h */ int field_110; - /* 114h */ int field_114; - /* 118h */ int field_118; - /* 11Ch */ int field_11C; - /* 120h */ int field_120; - /* 124h */ int field_124; - /* 128h */ int field_128; - /* 12Ch */ int field_12C; - /* 130h */ int field_130; - /* 134h */ int field_134; - /* 138h */ int field_138; - /* 13Ch */ int field_13C; - /* 140h */ int field_140; - /* 144h */ int field_144; - /* 148h */ int field_148; - /* 14Ch */ int field_14C; - /* 150h */ int field_150; - /* 154h */ int field_154; - /* 158h */ int field_158; - /* 15Ch */ int field_15C; - /* 160h */ int field_160; - /* 164h */ int field_164; - /* 168h */ int field_168; - /* 16Ch */ int field_16C; - /* 170h */ int field_170; - /* 174h */ int field_174; - /* 178h */ int field_178; - /* 17Ch */ int field_17C; - /* 180h */ int field_180; - /* 184h */ int field_184; - /* 188h */ int field_188; - /* 18Ch */ int field_18C; - /* 190h */ int field_190; - /* 194h */ int field_194; - /* 198h */ int field_198; - /* 19Ch */ int field_19C; - /* 1A0h */ int field_1A0; - /* 1A4h */ int field_1A4; - /* 1A8h */ int field_1A8; - /* 1ACh */ int field_1AC; - /* 1B0h */ int field_1B0; - /* 1B4h */ int field_1B4; - /* 1B8h */ int field_1B8; - /* 1BCh */ int field_1BC; - /* 1C0h */ int field_1C0; - /* 1C4h */ int field_1C4; - /* 1C8h */ int field_1C8; - /* 1CCh */ int field_1CC; - /* 1D0h */ int field_1D0; - /* 1D4h */ int field_1D4; - /* 1D8h */ int field_1D8; - /* 1DCh */ int field_1DC; - /* 1E0h */ int field_1E0; - /* 1E4h */ int field_1E4; - /* 1E8h */ int field_1E8; - /* 1ECh */ int field_1EC; - /* 1F0h */ int field_1F0; - /* 1F4h */ int field_1F4; - /* 1F8h */ int field_1F8; - /* 1FCh */ int field_1FC; - /* 200h */ int field_200; - /* 204h */ int field_204; - /* 208h */ int field_208; - /* 20Ch */ int field_20C; - /* 210h */ int field_210; - /* 214h */ int field_214; - /* 218h */ int field_218; - /* 21Ch */ int field_21C; - /* 220h */ int field_220; - /* 224h */ int field_224; - /* 228h */ int field_228; - /* 22Ch */ int field_22C; - /* 230h */ int field_230; - /* 234h */ int field_234; - /* 238h */ int field_238; - /* 23Ch */ int field_23C; - /* 240h */ int field_240; - /* 244h */ int field_244; - /* 248h */ int field_248; - /* 24Ch */ int field_24C; - /* 250h */ int field_250; - /* 254h */ int field_254; - /* 258h */ int field_258; - /* 25Ch */ int field_25C; - /* 260h */ int field_260; - /* 264h */ int field_264; - /* 268h */ int field_268; - /* 26Ch */ int field_26C; - /* 270h */ int field_270; + static cObjectTemplateDB* Get(); }; - ASSERT_SIZE(cObjectTemplateDB, 0x274); namespace Addresses(cObjectTemplateDB) { diff --git a/Spore ModAPI/Spore/Swarm/IVisualEffect.h b/Spore ModAPI/Spore/Swarm/IVisualEffect.h index d3d6502c..4c2d7d3e 100644 --- a/Spore ModAPI/Spore/Swarm/IVisualEffect.h +++ b/Spore ModAPI/Spore/Swarm/IVisualEffect.h @@ -146,7 +146,7 @@ namespace Swarm /* 58h */ virtual const int* GetIntParams(IntParams param, int* dstCount = nullptr) = 0; /* 5Ch */ virtual Object* GetUnknownParam(ObjectParams params) = 0; - /* 60h */ virtual uint32_t GetEffectID() = 0; + /* 60h */ virtual ResourceID GetEffectID() = 0; /* 64h */ virtual void SetNotifyMessage(int, int) = 0; }; diff --git a/Spore ModAPI/Spore/Swarm/cVisualEffect.h b/Spore ModAPI/Spore/Swarm/cVisualEffect.h index c8a6c6fc..83a7ee47 100644 --- a/Spore ModAPI/Spore/Swarm/cVisualEffect.h +++ b/Spore ModAPI/Spore/Swarm/cVisualEffect.h @@ -77,7 +77,7 @@ namespace Swarm /* 170h */ float field_170; /* 174h */ int field_174; /* 178h */ int field_178; - /* 17Ch */ int field_17C; //EffectParams* + /* 17Ch */ int field_17C; /* 180h */ int32_t mnSeed; /* 184h */ int field_184; // not initialized }; From 2dd5e6057fa2abbc576a66f6ea79da9c00c12af9 Mon Sep 17 00:00:00 2001 From: A-xeset Date: Wed, 7 Jan 2026 01:09:01 +0700 Subject: [PATCH 10/12] Reapply "modAPI folder update" This reverts commit 18e868189bd3496cad5c39f411ad326f128f730c. --- .../SourceCode/DLL/AddressesEditors.cpp | 16 + Spore ModAPI/SourceCode/Editors/Editor.cpp | 36 +- Spore ModAPI/Spore ModAPI.vcxproj | 5 +- Spore ModAPI/Spore/Editors/BakeManager.h | 1262 ++++++++++++++++- Spore ModAPI/Spore/Editors/Editor.h | 21 +- Spore ModAPI/Spore/Editors/EditorModel.h | 30 +- Spore ModAPI/Spore/Editors/EditorRigblock.h | 157 +- Spore ModAPI/Spore/Editors/VerbIconData.h | 2 +- .../Simulator/SubSystem/GameViewManager.h | 2 + .../Simulator/SubSystem/ObstacleManager.h | 7 +- .../Spore/Simulator/cCreatureAbility.h | 16 +- .../Spore/Simulator/cSimulatorSpaceGame.h | 14 +- .../Spore/Simulator/cSpeciesProfile.h | 92 +- .../Spore/Sporepedia/ObjectTemplateDB.h | 229 ++- Spore ModAPI/Spore/Swarm/IVisualEffect.h | 2 +- Spore ModAPI/Spore/Swarm/cVisualEffect.h | 2 +- 16 files changed, 1729 insertions(+), 164 deletions(-) diff --git a/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp b/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp index 412de716..6726d251 100644 --- a/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp +++ b/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #ifdef SDK_TO_GHIDRA namespace Editors @@ -85,6 +86,7 @@ namespace Editors DefineAddress(GetEditorForAssetType, SelectAddress(0x00433010, 0x004333e0)); DefineAddress(GetNameForAssetType, SelectAddress(0x004badc0, 0x004bba50)); DefineAddress(GetTypeIDForAssetType, SelectAddress(0x004bb110, 0x004bbda0)); + DefineAddress(ComputeCreatureVerbIcons, SelectAddress(0x004e8860, 0x004e8860)); } namespace Addresses(EditorCamera) @@ -250,5 +252,19 @@ namespace Editors DefineAddress(SetWindowVisible, SelectAddress(0x635450, 0x635750)); DefineAddress(FindWindowByID, SelectAddress(0x634AB0, 0x634DB0)); } + + namespace Addresses(VerbIconData) + { + DefineAddress(AddRef, SelectAddress(0xc6ab00, 0xc6ab00)); + DefineAddress(Release, SelectAddress(0x7b87b0, 0x7b87b0)); + DefineAddress(Dispose, SelectAddress(0x59eff0, 0x59eff0)); + DefineAddress(AsInterface, SelectAddress(0x5e4d70, 0x5e4d70)); + DefineAddress(Init, SelectAddress(0x5e54a0, 0x5e54a0)); + DefineAddress(Shutdown, SelectAddress(0x5e5920, 0x5e5920)); + DefineAddress(SetArrayIndex, SelectAddress(0x5e4d90, 0x5e4d90)); + DefineAddress(SetHotKey, SelectAddress(0x5e5c30, 0x5e5c30)); + DefineAddress(GetIconName, SelectAddress(0x5e5cb0, 0x5e5cb0)); + DefineAddress(GetIconDescription, SelectAddress(0x5e5d70, 0x5e5d70)); + } } #endif diff --git a/Spore ModAPI/SourceCode/Editors/Editor.cpp b/Spore ModAPI/SourceCode/Editors/Editor.cpp index 59b16a00..7a167ed3 100644 --- a/Spore ModAPI/SourceCode/Editors/Editor.cpp +++ b/Spore ModAPI/SourceCode/Editors/Editor.cpp @@ -59,20 +59,20 @@ namespace Editors : mnRefCount(0) , mKey() , mRigblocks() - , field_2C() - , field_30() - , field_34() - , field_38() - , field_3C() - , field_40(-2.0f) - , field_44(2.0f) - , field_48() - , field_4C() - , field_4D() - , field_4E(true) - , field_4F() - , field_50() - , field_51() + , mbAllBlocksLoaded() + , mPhysicsWorld() + , mUseDynamics() + , mBounds() + , mFeetBounds() + , mMinHeight(-2.0f) + , mMaxHeight(2.0f) + , mMinimumLeglessCreatureHeight() + , mShowHiddenHandles() + , mShowBoneLengthHandles() + , mUseBoundsForDelete(true) + , mUsingSymmetry() + , mSkinNeedsUpdating() + , mChanged() , mTranslationOptions() , mModelType() , mName() @@ -81,7 +81,7 @@ namespace Editors , mSkinEffectIDs() , mSkinEffectSeeds{1234, 1234, 1234} , mColors {ColorRGB(1.0f, 1.0f, 1.0f), ColorRGB(1.0f, 1.0f, 1.0f), ColorRGB(1.0f, 1.0f, 1.0f)} - , field_C8() + , mBBoxesOverride() { } @@ -90,8 +90,8 @@ namespace Editors Dispose(); // field_30 is a pointer, but I don't know what kind so we manually Release it - if (field_30 != 0) { - int* pointer = (int*)field_30; + if (mPhysicsWorld != 0) { + int* pointer = (int*)mPhysicsWorld; pointer[1]--; if (pointer[1] == 0) { pointer[1] = 1; @@ -198,5 +198,7 @@ namespace Editors auto_STATIC_METHOD(cEditor, uint32_t, GetTypeIDForAssetType, Args(uint32_t assetTypeID), Args(assetTypeID)); auto_STATIC_METHOD(cEditor, const char16_t*, GetNameForAssetType, Args(uint32_t assetTypeID), Args(assetTypeID)); + + auto_STATIC_METHOD(cEditor, void, ComputeCreatureVerbIcons, Args(cCreatureDataResource* creatureData, int VerbTrayCollection, int brainLevel, float param_4), Args(creatureData, VerbTrayCollection, brainLevel, param_4)); } #endif diff --git a/Spore ModAPI/Spore ModAPI.vcxproj b/Spore ModAPI/Spore ModAPI.vcxproj index 6c361101..b1c4266e 100644 --- a/Spore ModAPI/Spore ModAPI.vcxproj +++ b/Spore ModAPI/Spore ModAPI.vcxproj @@ -327,8 +327,8 @@ - - + + @@ -974,6 +974,7 @@ + diff --git a/Spore ModAPI/Spore/Editors/BakeManager.h b/Spore ModAPI/Spore/Editors/BakeManager.h index 087401fa..17c7d427 100644 --- a/Spore ModAPI/Spore/Editors/BakeManager.h +++ b/Spore ModAPI/Spore/Editors/BakeManager.h @@ -20,6 +20,9 @@ #pragma once #include +#include +#include +#include /// Access the active bake manager. #define BakeManager (*Editors::IBakeManager::Get()) @@ -30,50 +33,1249 @@ namespace Editors { BakeParameters(int16_t field_04, int16_t field_06 = 4, uint32_t defaultID = 0x2EA8FB98); - uint32_t mDefaultID; - int16_t field_04; - int16_t field_06; + uint32_t mTag; + int16_t mFlag; + int16_t mPriority; + }; + + struct cBakeStats + { + int mQueuedBakes; + bool mCurrentlyBaking; + struct ResourceKey mCurrentKey; + int mNumBakes; + float mLastBakeTime; + float mAverageBakeTime; + int mNumCCFBakes; + float mTotalCCFTime; + float mLastCCFTime; + int mNumBVUBakes; + float mTotalBVUTime; + float mLastBVUTime; }; class IBakeManager { public: + static IBakeManager* Get(); + + /* 00h */ virtual int AddRef(); + /* 04h */ virtual void Release(); + /* 08h */ virtual bool Init(); + /* 0Ch */ virtual void Shutdown(); + /* 10h */ virtual void PreShutdown(); + /* 14h */ virtual void Update(); + /* 18h */ virtual bool IsBakingOrBaked(const ResourceKey& nameKey); + /* 1Ch */ virtual bool IsBaked(const ResourceKey& nameKey, bool param); + /* 20h */ virtual void SetQueueEnabled(bool QueueEnabled); + /* 24h */ virtual int GetQueueSize(uint32_t unk); //InterruptForEditorPaintRequest? + /* 28h */ virtual int GetQueueSize(); //FinishCreature? ReloadMuscleData? + /* 2Ch */ virtual bool GetCurrentKey(const ResourceKey& nameKey); + /* 30h */ virtual void GetQueue(eastl::vector>* unk);//Set swarm parameters? or HandleMessage? + /* 34h */ virtual bool IsBaking(uint32_t mTag); + /* 38h */ virtual bool IsBaking(const ResourceKey& nameKey, uint32_t mTag); + /* 3Ch */ virtual bool IsBaking(const ResourceKey& nameKey); + /* 40h */ virtual bool Cancel(uint32_t mTag); + /* 44h */ virtual bool Cancel(const ResourceKey& nameKey, uint32_t mTag); + /* 48h */ virtual bool Cancel(const ResourceKey& nameKey); + /* 4Ch */ virtual bool BakeModel(const ResourceKey& nameKey, const BakeParameters& params); + /* 50h */ virtual bool QueueBake(const ResourceKey& nameKey, const ResourceKey& nameKey2); + /* 54h */ virtual bool GetBlockApproximation(uint32_t mInstanceID, uint32_t mGroupID, float param3, int param4, Math::Vector3* BoundingBox, Math::Vector3* BoundingBox_upper); + /* 58h */ virtual App::PropertyList* GetBlockPropertyList(uint32_t instanceID, uint32_t groupID); + /* 5Ch */ virtual bool GetBlockRuntimeModelKey(uint32_t mInstanceID, uint32_t mGroupID, ResourceKey* nameKey); + /* 60h */ virtual Graphics::IModelWorld* GetCreatureModelWorld(); + /* 64h */ virtual bool InterruptForEditorPaintRequest(int paintRequest);//cPaintRequest* + /* 68h */ virtual bool TessellateSkin(int skin, float param2); //cSkinObject + /* 6Ch */ virtual bool GetTools(const ResourceKey& nameKey, int);//eastl::vector*); //TessellateSkinInternalSetup? + /* 70h */ virtual void PromoteToData(const ResourceKey& nameKey, bool param1, wchar_t* flag); + /* 74h */ virtual cBakeStats* GetBakeStats(); + /* 78h */ virtual wchar_t* GetStatsString(); - /* 00h */ virtual void func00h(); - /* 04h */ virtual void func04h(); - /* 08h */ virtual void func08h(); - /* 0Ch */ virtual void func0Ch(); - /* 10h */ virtual void func10h(); - /* 14h */ virtual void func14h(); - /* 18h */ virtual void func18h(); - /* 1Ch */ virtual void func1Ch(); - /* 20h */ virtual void func20h(); - /* 24h */ virtual void func24h(); - /* 28h */ virtual void func28h(); - /* 2Ch */ virtual void func2Ch(); - /* 30h */ virtual void func30h(); - /* 34h */ virtual void func34h(); - /* 38h */ virtual void func38h(); - /* 3Ch */ virtual void func3Ch(); - /* 40h */ virtual void func40h(); - /* 44h */ virtual void func44h(); - /* 48h */ virtual void func48h(); - /* 4Ch */ virtual void Bake(const ResourceKey& nameKey, const BakeParameters& params); - - // 60h returns IModelWorld + public: - static IBakeManager* Get(); + ///* 00h */ int field_00; + /* 04h */ int field_04; + /* 08h */ int field_08; + /* 0Ch */ int field_0C; + /* 10h */ int field_10; + /* 14h */ int field_14; + /* 18h */ int field_18; + /* 1Ch */ int field_1C; + /* 20h */ int field_20; + /* 24h */ int field_24; + /* 28h */ int field_28; + /* 2Ch */ int field_2C; + /* 30h */ int field_30; + /* 34h */ int field_34; + /* 38h */ int field_38; + /* 3Ch */ int field_3C; + /* 40h */ int field_40; + /* 44h */ int field_44; + /* 48h */ int field_48; + /* 4Ch */ int field_4C; + /* 50h */ int field_50; + /* 54h */ int field_54; + /* 58h */ int field_58; + /* 5Ch */ int field_5C; + /* 60h */ int field_60; + /* 64h */ int field_64; + /* 68h */ int field_68; + /* 6Ch */ int field_6C; + /* 70h */ int field_70; + /* 74h */ Graphics::IModelWorld* field_74; + /* 78h */ Graphics::IModelWorld* mIModelWorld; + /* 7Ch */ int field_7C; + /* 80h */ int field_80; + /* 84h */ int field_84; + /* 88h */ int field_88; + /* 8Ch */ int field_8C; + /* 90h */ int field_90; + /* 94h */ int field_94; + /* 98h */ int field_98; + /* 9Ch */ int field_9C; + /* A0h */ int field_A0; + /* A4h */ int field_A4; + /* A8h */ int field_A8; + /* ACh */ int field_AC; + /* B0h */ int field_B0; + /* B4h */ int field_B4; + /* B8h */ int field_B8; + /* BCh */ int field_BC; + /* C0h */ bool field_C0; + /* C1h */ bool field_C1; + /* C2h */ bool field_C2; + /* C3h */ bool field_C3; + /* C4h */ int field_C4; + /* C8h */ int field_C8; + /* CCh */ int field_CC; + /* D0h */ int field_D0; + /* D4h */ int field_D4; + /* D8h */ int field_D8; + /* DCh */ int field_DC; + /* E0h */ int field_E0; + /* E4h */ int field_E4; + /* E8h */ int field_E8; + /* ECh */ int field_EC; + /* F0h */ int field_F0; + /* F4h */ int field_F4; + /* F8h */ int field_F8; + /* FCh */ int field_FC; + /* 100h */ int field_100; + /* 104h */ int field_104; + /* 108h */ int field_108; + /* 10Ch */ int field_10C; + /* 110h */ int field_110; + /* 114h */ int field_114; + /* 118h */ int field_118; + /* 11Ch */ int field_11C; + /* 120h */ int field_120; + /* 124h */ int field_124; + /* 128h */ int field_128; + /* 12Ch */ int field_12C; + /* 130h */ int field_130; + /* 134h */ int field_134; + /* 138h */ int field_138; + /* 13Ch */ int field_13C; + /* 140h */ int field_140; + /* 144h */ int field_144; + /* 148h */ int field_148; + /* 14Ch */ int field_14C; + /* 150h */ int field_150; + /* 154h */ int field_154; + /* 158h */ int field_158; + /* 15Ch */ int field_15C; + /* 160h */ int field_160; + /* 164h */ int field_164; + /* 168h */ int field_168; + /* 16Ch */ int field_16C; + /* 170h */ int field_170; + /* 174h */ int field_174; + /* 178h */ int field_178; + /* 17Ch */ int field_17C; + /* 180h */ int field_180; + /* 184h */ int field_184; + /* 188h */ int field_188; + /* 18Ch */ int field_18C; + /* 190h */ int field_190; + /* 194h */ int field_194; + /* 198h */ int field_198; + /* 19Ch */ int field_19C; + /* 1A0h */ int field_1A0; + /* 1A4h */ int field_1A4; + /* 1A8h */ int field_1A8; + /* 1ACh */ int field_1AC; + /* 1B0h */ int field_1B0; + /* 1B4h */ int field_1B4; + /* 1B8h */ int field_1B8; + /* 1BCh */ int field_1BC; + /* 1C0h */ int field_1C0; + /* 1C4h */ int field_1C4; + /* 1C8h */ int field_1C8; + /* 1CCh */ int field_1CC; + /* 1D0h */ int field_1D0; + /* 1D4h */ int field_1D4; + /* 1D8h */ int field_1D8; + /* 1DCh */ int field_1DC; + /* 1E0h */ int field_1E0; + /* 1E4h */ int field_1E4; + /* 1E8h */ int field_1E8; + /* 1ECh */ int field_1EC; + /* 1F0h */ int field_1F0; + /* 1F4h */ int field_1F4; + /* 1F8h */ int field_1F8; + /* 1FCh */ int field_1FC; + /* 200h */ int field_200; + /* 204h */ int field_204; + /* 208h */ int field_208; + /* 20Ch */ int field_20C; + /* 210h */ int field_210; + /* 214h */ int field_214; + /* 218h */ int field_218; + /* 21Ch */ int field_21C; + /* 220h */ int field_220; + /* 224h */ int field_224; + /* 228h */ ResourceKey mBakeCreation; + /* 234h */ BakeParameters mBakeParameters; + /* 23Ch */ int field_23C; + /* 240h */ int field_240; + /* 244h */ int field_244; + /* 248h */ int field_248; + /* 24Ch */ int field_24C; + /* 250h */ int field_250; + /* 254h */ int field_254; + /* 258h */ bool field_258; + /* 259h */ bool field_259; + /* 25Ah */ bool field_25A; + /* 25Bh */ bool field_25B; + /* 25Ch */ int field_25C; + /* 260h */ int field_260; + /* 264h */ int field_264; + /* 268h */ int field_268; + /* 26Ch */ int field_26C; + /* 270h */ int field_270; + /* 274h */ int field_274; + /* 278h */ int field_278; + /* 27Ch */ int field_27C; + /* 280h */ int field_280; + /* 284h */ int field_284; + /* 288h */ int field_288; + /* 28Ch */ int field_28C; + /* 290h */ int field_290; + /* 294h */ int field_294; + /* 298h */ int field_298; + /* 29Ch */ int field_29C; + /* 2A0h */ int field_2A0; + /* 2A4h */ int field_2A4; + /* 2A8h */ int field_2A8; + /* 2ACh */ int field_2AC; + /* 2B0h */ int field_2B0; + /* 2B4h */ int field_2B4; + /* 2B8h */ int field_2B8; + /* 2BCh */ int field_2BC; + /* 2C0h */ int field_2C0; + /* 2C4h */ int field_2C4; + /* 2C8h */ int field_2C8; + /* 2CCh */ int field_2CC; + /* 2D0h */ int field_2D0; + /* 2D4h */ int field_2D4; + /* 2D8h */ int field_2D8; + /* 2DCh */ int field_2DC; + /* 2E0h */ int field_2E0; + /* 2E4h */ int field_2E4; + /* 2E8h */ int field_2E8; + /* 2ECh */ int field_2EC; + /* 2F0h */ int field_2F0; + /* 2F4h */ int field_2F4; + /* 2F8h */ int field_2F8; + /* 2FCh */ int field_2FC; + /* 300h */ int field_300; + /* 304h */ int field_304; + /* 308h */ int field_308; + /* 30Ch */ int field_30C; + /* 310h */ int field_310; + /* 314h */ int field_314; + /* 318h */ int field_318; + /* 31Ch */ int field_31C; + /* 320h */ int field_320; + /* 324h */ int field_324; + /* 328h */ int field_328; + /* 32Ch */ int field_32C; + /* 330h */ int field_330; + /* 334h */ int field_334; + /* 338h */ int field_338; + /* 33Ch */ int field_33C; + /* 340h */ int field_340; + /* 344h */ int field_344; + /* 348h */ int field_348; + /* 34Ch */ int field_34C; + /* 350h */ int field_350; + /* 354h */ int field_354; + /* 358h */ int field_358; + /* 35Ch */ int field_35C; + /* 360h */ int field_360; + /* 364h */ int field_364; + /* 368h */ int field_368; + /* 36Ch */ int field_36C; + /* 370h */ int field_370; + /* 374h */ int field_374; + /* 378h */ int field_378; + /* 37Ch */ int field_37C; + /* 380h */ int field_380; + /* 384h */ int field_384; + /* 388h */ int field_388; + /* 38Ch */ int field_38C; + /* 390h */ int field_390; + /* 394h */ int field_394; + /* 398h */ int field_398; + /* 39Ch */ int field_39C; + /* 3A0h */ int field_3A0; + /* 3A4h */ int field_3A4; + /* 3A8h */ int field_3A8; + /* 3ACh */ int field_3AC; + /* 3B0h */ int field_3B0; + /* 3B4h */ int field_3B4; + /* 3B8h */ int field_3B8; + /* 3BCh */ int field_3BC; + /* 3C0h */ int field_3C0; + /* 3C4h */ int field_3C4; + /* 3C8h */ int field_3C8; + /* 3CCh */ int field_3CC; + /* 3D0h */ int field_3D0; + /* 3D4h */ int field_3D4; + /* 3D8h */ int field_3D8; + /* 3DCh */ int field_3DC; + /* 3E0h */ int field_3E0; + /* 3E4h */ int field_3E4; + /* 3E8h */ int field_3E8; + /* 3ECh */ int field_3EC; + /* 3F0h */ int field_3F0; + /* 3F4h */ int field_3F4; + /* 3F8h */ int field_3F8; + /* 3FCh */ int field_3FC; + /* 400h */ int field_400; + /* 404h */ int field_404; + /* 408h */ int field_408; + /* 40Ch */ int field_40C; + /* 410h */ int field_410; + /* 414h */ int field_414; + /* 418h */ int field_418; + /* 41Ch */ int field_41C; + /* 420h */ int field_420; + /* 424h */ int field_424; + /* 428h */ int field_428; + /* 42Ch */ int field_42C; + /* 430h */ int field_430; + /* 434h */ int field_434; + /* 438h */ int field_438; + /* 43Ch */ int field_43C; + /* 440h */ int field_440; + /* 444h */ int field_444; + /* 448h */ int field_448; + /* 44Ch */ int field_44C; + /* 450h */ int field_450; + /* 454h */ int field_454; + /* 458h */ int field_458; + /* 45Ch */ int field_45C; + /* 460h */ int field_460; + /* 464h */ int field_464; + /* 468h */ int field_468; + /* 46Ch */ int field_46C; + /* 470h */ int field_470; + /* 474h */ int field_474; + /* 478h */ int field_478; + /* 47Ch */ int field_47C; + /* 480h */ int field_480; + /* 484h */ int field_484; + /* 488h */ int field_488; + /* 48Ch */ int field_48C; + /* 490h */ int field_490; + /* 494h */ int field_494; + /* 498h */ int field_498; + /* 49Ch */ int field_49C; + /* 4A0h */ int field_4A0; + /* 4A4h */ int field_4A4; + /* 4A8h */ int field_4A8; + /* 4ACh */ int field_4AC; + /* 4B0h */ int field_4B0; + /* 4B4h */ int field_4B4; + /* 4B8h */ int field_4B8; + /* 4BCh */ int field_4BC; + /* 4C0h */ int field_4C0; + /* 4C4h */ int field_4C4; + /* 4C8h */ int field_4C8; + /* 4CCh */ int field_4CC; + /* 4D0h */ int field_4D0; + /* 4D4h */ int field_4D4; + /* 4D8h */ int field_4D8; + /* 4DCh */ int field_4DC; + /* 4E0h */ int field_4E0; + /* 4E4h */ int field_4E4; + /* 4E8h */ int field_4E8; + /* 4ECh */ int field_4EC; + /* 4F0h */ int field_4F0; + /* 4F4h */ int field_4F4; + /* 4F8h */ int field_4F8; + /* 4FCh */ int field_4FC; + /* 500h */ int field_500; + /* 504h */ int field_504; + /* 508h */ int field_508; + /* 50Ch */ int field_50C; + /* 510h */ int field_510; + /* 514h */ int field_514; + /* 518h */ int field_518; + /* 51Ch */ int field_51C; + /* 520h */ int field_520; + /* 524h */ int field_524; + /* 528h */ int field_528; + /* 52Ch */ int field_52C; + /* 530h */ int field_530; + /* 534h */ int field_534; + /* 538h */ int field_538; + /* 53Ch */ int field_53C; + /* 540h */ int field_540; + /* 544h */ int field_544; + /* 548h */ int field_548; + /* 54Ch */ int field_54C; + /* 550h */ int field_550; + /* 554h */ int field_554; + /* 558h */ int field_558; + /* 55Ch */ int field_55C; + /* 560h */ int field_560; + /* 564h */ int field_564; + /* 568h */ int field_568; + /* 56Ch */ int field_56C; + /* 570h */ int field_570; + /* 574h */ int field_574; + /* 578h */ int field_578; + /* 57Ch */ int field_57C; + /* 580h */ int field_580; + /* 584h */ int field_584; + /* 588h */ int field_588; + /* 58Ch */ int field_58C; + /* 590h */ int field_590; + /* 594h */ int field_594; + /* 598h */ int field_598; + /* 59Ch */ int field_59C; + /* 5A0h */ int field_5A0; + /* 5A4h */ int field_5A4; + /* 5A8h */ int field_5A8; + /* 5ACh */ int field_5AC; + /* 5B0h */ int field_5B0; + /* 5B4h */ int field_5B4; + /* 5B8h */ int field_5B8; + /* 5BCh */ int field_5BC; + /* 5C0h */ int field_5C0; + /* 5C4h */ int field_5C4; + /* 5C8h */ int field_5C8; + /* 5CCh */ int field_5CC; + /* 5D0h */ int field_5D0; + /* 5D4h */ int field_5D4; + /* 5D8h */ int field_5D8; + /* 5DCh */ int field_5DC; + /* 5E0h */ int field_5E0; + /* 5E4h */ int field_5E4; + /* 5E8h */ int field_5E8; + /* 5ECh */ int field_5EC; + /* 5F0h */ int field_5F0; + /* 5F4h */ int field_5F4; + /* 5F8h */ int field_5F8; + /* 5FCh */ int field_5FC; + /* 600h */ int field_600; + /* 604h */ int field_604; + /* 608h */ int field_608; + /* 60Ch */ int field_60C; + /* 610h */ int field_610; + /* 614h */ int field_614; + /* 618h */ int field_618; + /* 61Ch */ int field_61C; + /* 620h */ int field_620; + /* 624h */ int field_624; + /* 628h */ int field_628; + /* 62Ch */ int field_62C; + /* 630h */ int field_630; + /* 634h */ int field_634; + /* 638h */ int field_638; + /* 63Ch */ int field_63C; + /* 640h */ int field_640; + /* 644h */ int field_644; + /* 648h */ int field_648; + /* 64Ch */ int field_64C; + /* 650h */ int field_650; + /* 654h */ int field_654; + /* 658h */ int field_658; + /* 65Ch */ int field_65C; + /* 660h */ int field_660; + /* 664h */ int field_664; + /* 668h */ int field_668; + /* 66Ch */ int field_66C; + /* 670h */ int field_670; + /* 674h */ int field_674; + /* 678h */ int field_678; + /* 67Ch */ int field_67C; + /* 680h */ int field_680; + /* 684h */ int field_684; + /* 688h */ int field_688; + /* 68Ch */ int field_68C; + /* 690h */ int field_690; + /* 694h */ int field_694; + /* 698h */ int field_698; + /* 69Ch */ int field_69C; + /* 6A0h */ int field_6A0; + /* 6A4h */ int field_6A4; + /* 6A8h */ int field_6A8; + /* 6ACh */ int field_6AC; + /* 6B0h */ int field_6B0; + /* 6B4h */ int field_6B4; + /* 6B8h */ int field_6B8; + /* 6BCh */ int field_6BC; + /* 6C0h */ int field_6C0; + /* 6C4h */ int field_6C4; + /* 6C8h */ int field_6C8; + /* 6CCh */ int field_6CC; + /* 6D0h */ int field_6D0; + /* 6D4h */ int field_6D4; + /* 6D8h */ int field_6D8; + /* 6DCh */ int field_6DC; + /* 6E0h */ int field_6E0; + /* 6E4h */ int field_6E4; + /* 6E8h */ int field_6E8; + /* 6ECh */ int field_6EC; + /* 6F0h */ int field_6F0; + /* 6F4h */ int field_6F4; + /* 6F8h */ int field_6F8; + /* 6FCh */ int field_6FC; + /* 700h */ int field_700; + /* 704h */ int field_704; + /* 708h */ int field_708; + /* 70Ch */ int field_70C; + /* 710h */ int field_710; + /* 714h */ int field_714; + /* 718h */ int field_718; + /* 71Ch */ int field_71C; + /* 720h */ int field_720; + /* 724h */ int field_724; + /* 728h */ int field_728; + /* 72Ch */ int field_72C; + /* 730h */ int field_730; + /* 734h */ int field_734; + /* 738h */ int field_738; + /* 73Ch */ int field_73C; + /* 740h */ int field_740; + /* 744h */ int field_744; + /* 748h */ int field_748; + /* 74Ch */ int field_74C; + /* 750h */ int field_750; + /* 754h */ int field_754; + /* 758h */ int field_758; + /* 75Ch */ int field_75C; + /* 760h */ int field_760; + /* 764h */ int field_764; + /* 768h */ int field_768; + /* 76Ch */ int field_76C; + /* 770h */ int field_770; + /* 774h */ int field_774; + /* 778h */ int field_778; + /* 77Ch */ int field_77C; + /* 780h */ int field_780; + /* 784h */ int field_784; + /* 788h */ int field_788; + /* 78Ch */ int field_78C; + /* 790h */ int field_790; + /* 794h */ int field_794; + /* 798h */ int field_798; + /* 79Ch */ int field_79C; + /* 7A0h */ int field_7A0; + /* 7A4h */ int field_7A4; + /* 7A8h */ int field_7A8; + /* 7ACh */ int field_7AC; + /* 7B0h */ int field_7B0; + /* 7B4h */ int field_7B4; + /* 7B8h */ int field_7B8; + /* 7BCh */ int field_7BC; + /* 7C0h */ int field_7C0; + /* 7C4h */ int field_7C4; + /* 7C8h */ int field_7C8; + /* 7CCh */ int field_7CC; + /* 7D0h */ int field_7D0; + /* 7D4h */ int field_7D4; + /* 7D8h */ int field_7D8; + /* 7DCh */ int field_7DC; + /* 7E0h */ int field_7E0; + /* 7E4h */ int field_7E4; + /* 7E8h */ int field_7E8; + /* 7ECh */ int field_7EC; + /* 7F0h */ int field_7F0; + /* 7F4h */ int field_7F4; + /* 7F8h */ int field_7F8; + /* 7FCh */ int field_7FC; + /* 800h */ int field_800; + /* 804h */ int field_804; + /* 808h */ int field_808; + /* 80Ch */ int field_80C; + /* 810h */ int field_810; + /* 814h */ int field_814; + /* 818h */ int field_818; + /* 81Ch */ int field_81C; + /* 820h */ int field_820; + /* 824h */ int field_824; + /* 828h */ int field_828; + /* 82Ch */ int field_82C; + /* 830h */ int field_830; + /* 834h */ int field_834; + /* 838h */ int field_838; + /* 83Ch */ int field_83C; + /* 840h */ int field_840; + /* 844h */ int field_844; + /* 848h */ int field_848; + /* 84Ch */ int field_84C; + /* 850h */ int field_850; + /* 854h */ int field_854; + /* 858h */ int field_858; + /* 85Ch */ int field_85C; + /* 860h */ int field_860; + /* 864h */ int field_864; + /* 868h */ int field_868; + /* 86Ch */ int field_86C; + /* 870h */ int field_870; + /* 874h */ int field_874; + /* 878h */ int field_878; + /* 87Ch */ int field_87C; + /* 880h */ int field_880; + /* 884h */ int field_884; + /* 888h */ int field_888; + /* 88Ch */ int field_88C; + /* 890h */ int field_890; + /* 894h */ int field_894; + /* 898h */ int field_898; + /* 89Ch */ int field_89C; + /* 8A0h */ int field_8A0; + /* 8A4h */ int field_8A4; + /* 8A8h */ int field_8A8; + /* 8ACh */ int field_8AC; + /* 8B0h */ int field_8B0; + /* 8B4h */ int field_8B4; + /* 8B8h */ int field_8B8; + /* 8BCh */ int field_8BC; + /* 8C0h */ int field_8C0; + /* 8C4h */ int field_8C4; + /* 8C8h */ int field_8C8; + /* 8CCh */ int field_8CC; + /* 8D0h */ int field_8D0; + /* 8D4h */ int field_8D4; + /* 8D8h */ int field_8D8; + /* 8DCh */ int field_8DC; + /* 8E0h */ int field_8E0; + /* 8E4h */ int field_8E4; + /* 8E8h */ int field_8E8; + /* 8ECh */ int field_8EC; + /* 8F0h */ int field_8F0; + /* 8F4h */ int field_8F4; + /* 8F8h */ int field_8F8; + /* 8FCh */ int field_8FC; + /* 900h */ int field_900; + /* 904h */ int field_904; + /* 908h */ int field_908; + /* 90Ch */ int field_90C; + /* 910h */ int field_910; + /* 914h */ int field_914; + /* 918h */ int field_918; + /* 91Ch */ int field_91C; + /* 920h */ int field_920; + /* 924h */ int field_924; + /* 928h */ int field_928; + /* 92Ch */ int field_92C; + /* 930h */ int field_930; + /* 934h */ int field_934; + /* 938h */ int field_938; + /* 93Ch */ int field_93C; + /* 940h */ int field_940; + /* 944h */ int field_944; + /* 948h */ int field_948; + /* 94Ch */ int field_94C; + /* 950h */ int field_950; + /* 954h */ int field_954; + /* 958h */ int field_958; + /* 95Ch */ int field_95C; + /* 960h */ int field_960; + /* 964h */ int field_964; + /* 968h */ int field_968; + /* 96Ch */ int field_96C; + /* 970h */ int field_970; + /* 974h */ int field_974; + /* 978h */ int field_978; + /* 97Ch */ int field_97C; + /* 980h */ int field_980; + /* 984h */ int field_984; + /* 988h */ int field_988; + /* 98Ch */ int field_98C; + /* 990h */ int field_990; + /* 994h */ int field_994; + /* 998h */ int field_998; + /* 99Ch */ int field_99C; + /* 9A0h */ int field_9A0; + /* 9A4h */ int field_9A4; + /* 9A8h */ int field_9A8; + /* 9ACh */ int field_9AC; + /* 9B0h */ int field_9B0; + /* 9B4h */ int field_9B4; + /* 9B8h */ int field_9B8; + /* 9BCh */ int field_9BC; + /* 9C0h */ int field_9C0; + /* 9C4h */ int field_9C4; + /* 9C8h */ int field_9C8; + /* 9CCh */ int field_9CC; + /* 9D0h */ int field_9D0; + /* 9D4h */ int field_9D4; + /* 9D8h */ int field_9D8; + /* 9DCh */ int field_9DC; + /* 9E0h */ int field_9E0; + /* 9E4h */ int field_9E4; + /* 9E8h */ int field_9E8; + /* 9ECh */ int field_9EC; + /* 9F0h */ int field_9F0; + /* 9F4h */ int field_9F4; + /* 9F8h */ int field_9F8; + /* 9FCh */ int field_9FC; + /* A00h */ int field_A00; + /* A04h */ int field_A04; + /* A08h */ int field_A08; + /* A0Ch */ int field_A0C; + /* A10h */ int field_A10; + /* A14h */ int field_A14; + /* A18h */ int field_A18; + /* A1Ch */ int field_A1C; + /* A20h */ int field_A20; + /* A24h */ int field_A24; + /* A28h */ int field_A28; + /* A2Ch */ int field_A2C; + /* A30h */ int field_A30; + /* A34h */ int field_A34; + /* A38h */ int field_A38; + /* A3Ch */ int field_A3C; + /* A40h */ int field_A40; + /* A44h */ int field_A44; + /* A48h */ int field_A48; + /* A4Ch */ int field_A4C; + /* A50h */ int field_A50; + /* A54h */ int field_A54; + /* A58h */ int field_A58; + /* A5Ch */ int field_A5C; + /* A60h */ int field_A60; + /* A64h */ int field_A64; + /* A68h */ int field_A68; + /* A6Ch */ int field_A6C; + /* A70h */ int field_A70; + /* A74h */ int field_A74; + /* A78h */ int field_A78; + /* A7Ch */ int field_A7C; + /* A80h */ int field_A80; + /* A84h */ int field_A84; + /* A88h */ int field_A88; + /* A8Ch */ int field_A8C; + /* A90h */ int field_A90; + /* A94h */ int field_A94; + /* A98h */ int field_A98; + /* A9Ch */ int field_A9C; + /* AA0h */ int field_AA0; + /* AA4h */ int field_AA4; + /* AA8h */ int field_AA8; + /* AACh */ int field_AAC; + /* AB0h */ int field_AB0; + /* AB4h */ int field_AB4; + /* AB8h */ int field_AB8; + /* ABCh */ int field_ABC; + /* AC0h */ int field_AC0; + /* AC4h */ int field_AC4; + /* AC8h */ int field_AC8; + /* ACCh */ int field_ACC; + /* AD0h */ int field_AD0; + /* AD4h */ int field_AD4; + /* AD8h */ int field_AD8; + /* ADCh */ int field_ADC; + /* AE0h */ int field_AE0; + /* AE4h */ int field_AE4; + /* AE8h */ int field_AE8; + /* AECh */ int field_AEC; + /* AF0h */ int field_AF0; + /* AF4h */ int field_AF4; + /* AF8h */ int field_AF8; + /* AFCh */ int field_AFC; + /* B00h */ int field_B00; + /* B04h */ int field_B04; + /* B08h */ int field_B08; + /* B0Ch */ int field_B0C; + /* B10h */ int field_B10; + /* B14h */ int field_B14; + /* B18h */ int field_B18; + /* B1Ch */ int field_B1C; + /* B20h */ int field_B20; + /* B24h */ int field_B24; + /* B28h */ int field_B28; + /* B2Ch */ int field_B2C; + /* B30h */ int field_B30; + /* B34h */ int field_B34; + /* B38h */ int field_B38; + /* B3Ch */ int field_B3C; + /* B40h */ int field_B40; + /* B44h */ int field_B44; + /* B48h */ int field_B48; + /* B4Ch */ int field_B4C; + /* B50h */ int field_B50; + /* B54h */ int field_B54; + /* B58h */ int field_B58; + /* B5Ch */ int field_B5C; + /* B60h */ int field_B60; + /* B64h */ int field_B64; + /* B68h */ int field_B68; + /* B6Ch */ int field_B6C; + /* B70h */ int field_B70; + /* B74h */ int field_B74; + /* B78h */ int field_B78; + /* B7Ch */ int field_B7C; + /* B80h */ int field_B80; + /* B84h */ int field_B84; + /* B88h */ int field_B88; + /* B8Ch */ int field_B8C; + /* B90h */ int field_B90; + /* B94h */ int field_B94; + /* B98h */ int field_B98; + /* B9Ch */ int field_B9C; + /* BA0h */ int field_BA0; + /* BA4h */ int field_BA4; + /* BA8h */ int field_BA8; + /* BACh */ int field_BAC; + /* BB0h */ int field_BB0; + /* BB4h */ int field_BB4; + /* BB8h */ int field_BB8; + /* BBCh */ int field_BBC; + /* BC0h */ int field_BC0; + /* BC4h */ int field_BC4; + /* BC8h */ int field_BC8; + /* BCCh */ int field_BCC; + /* BD0h */ int field_BD0; + /* BD4h */ int field_BD4; + /* BD8h */ int field_BD8; + /* BDCh */ int field_BDC; + /* BE0h */ int field_BE0; + /* BE4h */ int field_BE4; + /* BE8h */ int field_BE8; + /* BECh */ int field_BEC; + /* BF0h */ int field_BF0; + /* BF4h */ int field_BF4; + /* BF8h */ int field_BF8; + /* BFCh */ int field_BFC; + /* C00h */ int field_C00; + /* C04h */ int field_C04; + /* C08h */ int field_C08; + /* C0Ch */ int field_C0C; + /* C10h */ int field_C10; + /* C14h */ int field_C14; + /* C18h */ int field_C18; + /* C1Ch */ int field_C1C; + /* C20h */ int field_C20; + /* C24h */ int field_C24; + /* C28h */ int field_C28; + /* C2Ch */ int field_C2C; + /* C30h */ int field_C30; + /* C34h */ int field_C34; + /* C38h */ int field_C38; + /* C3Ch */ int field_C3C; + /* C40h */ int field_C40; + /* C44h */ int field_C44; + /* C48h */ int field_C48; + /* C4Ch */ int field_C4C; + /* C50h */ int field_C50; + /* C54h */ int field_C54; + /* C58h */ int field_C58; + /* C5Ch */ int field_C5C; + /* C60h */ int field_C60; + /* C64h */ int field_C64; + /* C68h */ int field_C68; + /* C6Ch */ int field_C6C; + /* C70h */ int field_C70; + /* C74h */ int field_C74; + /* C78h */ int field_C78; + /* C7Ch */ int field_C7C; + /* C80h */ int field_C80; + /* C84h */ int field_C84; + /* C88h */ int field_C88; + /* C8Ch */ int field_C8C; + /* C90h */ int field_C90; + /* C94h */ int field_C94; + /* C98h */ int field_C98; + /* C9Ch */ int field_C9C; + /* CA0h */ int field_CA0; + /* CA4h */ int field_CA4; + /* CA8h */ int field_CA8; + /* CACh */ int field_CAC; + /* CB0h */ int field_CB0; + /* CB4h */ int field_CB4; + /* CB8h */ int field_CB8; + /* CBCh */ int field_CBC; + /* CC0h */ int field_CC0; + /* CC4h */ int field_CC4; + /* CC8h */ int field_CC8; + /* CCCh */ int field_CCC; + /* CD0h */ int field_CD0; + /* CD4h */ int field_CD4; + /* CD8h */ int field_CD8; + /* CDCh */ int field_CDC; + /* CE0h */ int field_CE0; + /* CE4h */ int field_CE4; + /* CE8h */ int field_CE8; + /* CECh */ int field_CEC; + /* CF0h */ int field_CF0; + /* CF4h */ int field_CF4; + /* CF8h */ int field_CF8; + /* CFCh */ int field_CFC; + /* D00h */ int field_D00; + /* D04h */ int field_D04; + /* D08h */ int field_D08; + /* D0Ch */ int field_D0C; + /* D10h */ int field_D10; + /* D14h */ int field_D14; + /* D18h */ int field_D18; + /* D1Ch */ int field_D1C; + /* D20h */ int field_D20; + /* D24h */ int field_D24; + /* D28h */ int field_D28; + /* D2Ch */ int field_D2C; + /* D30h */ int field_D30; + /* D34h */ int field_D34; + /* D38h */ int field_D38; + /* D3Ch */ int field_D3C; + /* D40h */ int field_D40; + /* D44h */ int field_D44; + /* D48h */ int field_D48; + /* D4Ch */ int field_D4C; + /* D50h */ int field_D50; + /* D54h */ int field_D54; + /* D58h */ int field_D58; + /* D5Ch */ int field_D5C; + /* D60h */ int field_D60; + /* D64h */ int field_D64; + /* D68h */ int field_D68; + /* D6Ch */ int field_D6C; + /* D70h */ int field_D70; + /* D74h */ int field_D74; + /* D78h */ int field_D78; + /* D7Ch */ int field_D7C; + /* D80h */ int field_D80; + /* D84h */ int field_D84; + /* D88h */ int field_D88; + /* D8Ch */ int field_D8C; + /* D90h */ int field_D90; + /* D94h */ int field_D94; + /* D98h */ int field_D98; + /* D9Ch */ int field_D9C; + /* DA0h */ int field_DA0; + /* DA4h */ int field_DA4; + /* DA8h */ int field_DA8; + /* DACh */ int field_DAC; + /* DB0h */ int field_DB0; + /* DB4h */ int field_DB4; + /* DB8h */ int field_DB8; + /* DBCh */ int field_DBC; + /* DC0h */ int field_DC0; + /* DC4h */ int field_DC4; + /* DC8h */ int field_DC8; + /* DCCh */ int field_DCC; + /* DD0h */ int field_DD0; + /* DD4h */ int field_DD4; + /* DD8h */ int field_DD8; + /* DDCh */ int field_DDC; + /* DE0h */ int field_DE0; + /* DE4h */ int field_DE4; + /* DE8h */ int field_DE8; + /* DECh */ int field_DEC; + /* DF0h */ int field_DF0; + /* DF4h */ int field_DF4; + /* DF8h */ int field_DF8; + /* DFCh */ int field_DFC; + /* E00h */ int field_E00; + /* E04h */ int field_E04; + /* E08h */ int field_E08; + /* E0Ch */ int field_E0C; + /* E10h */ int field_E10; + /* E14h */ int field_E14; + /* E18h */ int field_E18; + /* E1Ch */ int field_E1C; + /* E20h */ int field_E20; + /* E24h */ int field_E24; + /* E28h */ int field_E28; + /* E2Ch */ int field_E2C; + /* E30h */ int field_E30; + /* E34h */ int field_E34; + /* E38h */ int field_E38; + /* E3Ch */ int field_E3C; + /* E40h */ int field_E40; + /* E44h */ int field_E44; + /* E48h */ int field_E48; + /* E4Ch */ int field_E4C; + /* E50h */ int field_E50; + /* E54h */ int field_E54; + /* E58h */ int field_E58; + /* E5Ch */ int field_E5C; + /* E60h */ int field_E60; + /* E64h */ int field_E64; + /* E68h */ int field_E68; + /* E6Ch */ int field_E6C; + /* E70h */ int field_E70; + /* E74h */ int field_E74; + /* E78h */ int field_E78; + /* E7Ch */ int field_E7C; + /* E80h */ int field_E80; + /* E84h */ int field_E84; + /* E88h */ int field_E88; + /* E8Ch */ int field_E8C; + /* E90h */ int field_E90; + /* E94h */ int field_E94; + /* E98h */ int field_E98; + /* E9Ch */ int field_E9C; + /* EA0h */ int field_EA0; + /* EA4h */ int field_EA4; + /* EA8h */ int field_EA8; + /* EACh */ int field_EAC; + /* EB0h */ int field_EB0; + /* EB4h */ int field_EB4; + /* EB8h */ int field_EB8; + /* EBCh */ int field_EBC; + /* EC0h */ int field_EC0; + /* EC4h */ int field_EC4; + /* EC8h */ int field_EC8; + /* ECCh */ int field_ECC; + /* ED0h */ int field_ED0; + /* ED4h */ int field_ED4; + /* ED8h */ int field_ED8; + /* EDCh */ int field_EDC; + /* EE0h */ int field_EE0; + /* EE4h */ int field_EE4; + /* EE8h */ int field_EE8; + /* EECh */ int field_EEC; + /* EF0h */ int field_EF0; + /* EF4h */ int field_EF4; + /* EF8h */ int field_EF8; + /* EFCh */ int field_EFC; + /* F00h */ int field_F00; + /* F04h */ int field_F04; + /* F08h */ int field_F08; + /* F0Ch */ int field_F0C; + /* F10h */ int field_F10; + /* F14h */ int field_F14; + /* F18h */ int field_F18; + /* F1Ch */ int field_F1C; + /* F20h */ int field_F20; + /* F24h */ int field_F24; + /* F28h */ int field_F28; + /* F2Ch */ int field_F2C; + /* F30h */ int field_F30; + /* F34h */ int field_F34; + /* F38h */ int field_F38; + /* F3Ch */ int field_F3C; + /* F40h */ int field_F40; + /* F44h */ int field_F44; + /* F48h */ int field_F48; + /* F4Ch */ int field_F4C; + /* F50h */ int field_F50; + /* F54h */ int field_F54; + /* F58h */ int field_F58; + /* F5Ch */ int field_F5C; + /* F60h */ int field_F60; + /* F64h */ int field_F64; + /* F68h */ int field_F68; + /* F6Ch */ int field_F6C; + /* F70h */ int field_F70; + /* F74h */ int field_F74; + /* F78h */ int field_F78; + /* F7Ch */ int field_F7C; + /* F80h */ int field_F80; + /* F84h */ int field_F84; + /* F88h */ int field_F88; + /* F8Ch */ int field_F8C; + /* F90h */ int field_F90; + /* F94h */ int field_F94; + /* F98h */ int field_F98; + /* F9Ch */ int field_F9C; + /* FA0h */ int field_FA0; + /* FA4h */ int field_FA4; + /* FA8h */ int field_FA8; + /* FACh */ int field_FAC; + /* FB0h */ int field_FB0; + /* FB4h */ int field_FB4; + /* FB8h */ int field_FB8; + /* FBCh */ int field_FBC; + /* FC0h */ int field_FC0; + /* FC4h */ int field_FC4; + /* FC8h */ int field_FC8; + /* FCCh */ int field_FCC; + /* FD0h */ int field_FD0; + /* FD4h */ int field_FD4; + /* FD8h */ int field_FD8; + /* FDCh */ int field_FDC; + /* FE0h */ int field_FE0; + /* FE4h */ int field_FE4; + /* FE8h */ int field_FE8; + /* FECh */ int field_FEC; + /* FF0h */ int field_FF0; + /* FF4h */ int field_FF4; + /* FF8h */ int field_FF8; + /* FFCh */ int field_FFC; + /* 1000h */ int field_1000; + /* 1004h */ int field_1004; + /* 1008h */ ResourceKey field_1008; + /* 1014h */ int field_1014; + /* 1018h */ int field_1018; + /* 101Ch */ int field_101C; + /* 1020h */ int field_1020; + /* 1024h */ int field_1024; + /* 1028h */ int field_1028; + /* 102Ch */ int field_102C; + /* 1030h */ int field_1030; + /* 1034h */ int field_1034; + /* 1038h */ int field_1038; + /* 103Ch */ int field_103C; + /* 1040h */ int field_1040; + /* 1044h */ int field_1044; + /* 1048h */ int field_1048; + /* 104Ch */ int field_104C; + /* 1050h */ int field_1050; + /* 1054h */ int field_1054; + /* 1058h */ int field_1058; + /* 105Ch */ int field_105C; + /* 1060h */ int field_1060; + /* 1064h */ int field_1064; + /* 1068h */ int field_1068; + /* 106Ch */ int field_106C; + /* 1070h */ int field_1070; + /* 1074h */ int field_1074; + /* 1078h */ int field_1078; + /* 107Ch */ int field_107C; + /* 1080h */ int field_1080; + /* 1084h */ int field_1084; + /* 1088h */ int field_1088; + /* 108Ch */ int field_108C; + /* 1090h */ int field_1090; + /* 1094h */ int field_1094; + /* 1098h */ int field_1098; + /* 109Ch */ int field_109C; + /* 10A0h */ int field_10A0; + /* 10A4h */ int field_10A4; + /* 10A8h */ int field_10A8; + /* 10ACh */ int field_10AC; + /* 10B0h */ int field_10B0; + /* 10B4h */ int field_10B4; + /* 10B8h */ int field_10B8; + /* 10BCh */ int field_10BC; + /* 10C0h */ int field_10C0; + /* 10C4h */ int field_10C4; + /* 10C8h */ int field_10C8; + /* 10CCh */ int field_10CC; + /* 10D0h */ int field_10D0; + /* 10D4h */ int field_10D4; + /* 10D8h */ int field_10D8; + /* 10DCh */ int field_10DC; + /* 10E0h */ int field_10E0; + /* 10E4h */ int field_10E4; + /* 10E8h */ int field_10E8; + /* 10ECh */ int field_10EC; + /* 10F0h */ int field_10F0; + /* 10F4h */ int field_10F4; + /* 10F8h */ int field_10F8; + /* 10FCh */ int field_10FC; + /* 1100h */ int field_1100; + /* 1104h */ int field_1104; + /* 1108h */ int field_1108; + /* 110Ch */ int field_110C; + /* 1110h */ int field_1110; + /* 1114h */ int field_1114; + /* 1118h */ int field_1118; + /* 111Ch */ int field_111C; + /* 1120h */ int field_1120; + /* 1124h */ int field_1124; + /* 1128h */ int field_1128; + /* 112Ch */ int field_112C; + /* 1130h */ int field_1130; + /* 1134h */ int field_1134; + /* 1138h */ int field_1138; + /* 113Ch */ int field_113C; + /* 1140h */ int field_1140; + /* 1144h */ int field_1144; + /* 1148h */ int field_1148; + /* 114Ch */ int field_114C; + /* 1150h */ int field_1150; + /* 1154h */ int field_1154; + /* 1158h */ int field_1158; + /* 115Ch */ int field_115C; + /* 1160h */ int field_1160; + /* 1164h */ int field_1164; + /* 1168h */ int field_1168; + /* 116Ch */ int field_116C; + /* 1170h */ int field_1170; + /* 1174h */ int field_1174; + /* 1178h */ int field_1178; + /* 117Ch */ int field_117C; + /* 1180h */ int field_1180; + /* 1184h */ int field_1184; + /* 1188h */ int field_1188; + /* 118Ch */ int field_118C; + /* 1190h */ int field_1190; + /* 1194h */ int field_1194; + /* 1198h */ int field_1198; + /* 119Ch */ int field_119C; + /* 11A0h */ int field_11A0; + /* 11A4h */ int field_11A4; + /* 11A8h */ int field_11A8; + /* 11ACh */ int field_11AC; + /* 11B0h */ int field_11B0; + /* 11B4h */ int field_11B4; + /* 11B8h */ int field_11B8; + /* 11BCh */ int field_11BC; + /* 11C0h */ int field_11C0; + /* 11C4h */ int field_11C4; + /* 11C8h */ int field_11C8; + /* 11CCh */ int field_11CC; + /* 11D0h */ int field_11D0; + /* 11D4h */ int field_11D4; + /* 11D8h */ int field_11D8; + /* 11DCh */ int field_11DC; + /* 11E0h */ int field_11E0; + /* 11E4h */ int field_11E4; + /* 11E8h */ int field_11E8; + /* 11ECh */ int field_11EC; + /* 11F0h */ int field_11F0; + /* 11F4h */ int field_11F4; + /* 11F8h */ int field_11F8; + /* 11FCh */ int field_11FC; + /* 1200h */ int field_1200; + /* 1204h */ int field_1204; + /* 1208h */ int field_1208; + /* 120Ch */ int field_120C; + /* 1210h */ int field_1210; + /* 1214h */ int field_1214; + /* 1218h */ int field_1218; + /* 121Ch */ int field_121C; + /* 1220h */ int field_1220; + /* 1224h */ int field_1224; + /* 1228h */ int field_1228; + /* 122Ch */ int field_122C; + /* 1230h */ int field_1230; + /* 1234h */ int field_1234; + /* 1238h */ int field_1238; + /* 123Ch */ int field_123C; + /* 1240h */ int field_1240; + /* 1244h */ int field_1244; }; + ASSERT_SIZE(IBakeManager, 0x1248); namespace Addresses(IBakeManager) { DeclareAddress(Get); } - inline BakeParameters::BakeParameters(int16_t _field_04, int16_t _field_06, uint32_t defaultID) - : field_04(_field_04) - , field_06(_field_06) - , mDefaultID(defaultID) + inline BakeParameters::BakeParameters(int16_t _mFlag, int16_t _mPriority, uint32_t mTag) + : mFlag(_mFlag) + , mPriority(_mPriority) + , mTag(mTag) { } diff --git a/Spore ModAPI/Spore/Editors/Editor.h b/Spore ModAPI/Spore/Editors/Editor.h index 99e4af96..2ab34a24 100644 --- a/Spore ModAPI/Spore/Editors/Editor.h +++ b/Spore ModAPI/Spore/Editors/Editor.h @@ -216,6 +216,8 @@ namespace Editors static uint32_t GetTypeIDForAssetType(uint32_t assetTypeID); + static void ComputeCreatureVerbIcons(cCreatureDataResource* creatureData, int VerbTrayCollection, int brainLevel, float param_4); + public: int vftable_1C; @@ -287,9 +289,9 @@ namespace Editors /* CCh */ EditorRigblockPtr mpActivePart; /* D0h */ EditorRigblockPtr mpMovingPart; // the part that is being moved, only when mouse is being clicked /* D4h */ EditorRigblockPtr mpSelectedPart; // also valid for spines - /* D8h */ EditorRigblockPtr field_D8; - /* DCh */ EditorRigblockPtr field_DC; - /* E0h */ bool field_E0; + /* D8h */ EditorRigblockPtr mPreviousSelectedBlock; + /* DCh */ EditorRigblockPtr mToBeSelectedBlock; + /* E0h */ bool mToBeSelectedTorso; /* E4h */ EditorBaseHandle* mpActiveHandle; // morph handles /// Is the mouse over the skin of the creature? /* E8h */ bool mbMouseIsInSkin; @@ -393,18 +395,18 @@ namespace Editors /* 290h */ int field_290; /* 294h */ IShadowWorldPtr mpShadowWorld; /* 298h */ Graphics::ShadowMapInfo* mpShadowMapInfo; - /* 29Ch */ int field_29C; - /* 2A0h */ int field_2A0; - /* 2A4h */ int field_2A4; + /* 29Ch */ int mDefaultPaintTheme; + /* 2A0h */ int mCurrentPaintTheme; + /* 2A4h */ int mVerbIconTray; /// The save extension key which will be parsed both into a key and a three letter extension. /* 2A8h */ uint32_t mSaveExtension; /// The save directory key, Resource::SaveAreaID /* 2ACh */ uint32_t mSaveDirectory; /* 2B0h */ bool mIsActive; - /* 2B1h */ char field_2B1; // not initialized + /* 2B1h */ bool mManipulatedBlockFromPalette; // not initialized /* 2B2h */ bool mbShowVertebrae; // true - /* 2B3h */ char field_2B3; - /* 2B4h */ char field_2B4; + /* 2B3h */ bool mIgnoreMouseMove; + /* 2B4h */ bool mUnselectCurrentBlock; /* 2B5h */ bool mbDisableCreatureAnimIK; // not initialized /// The width of the space that the model skin is constrained to. /* 2B8h */ float mBoundSize; // 2.0 @@ -643,6 +645,7 @@ namespace Editors DeclareAddress(GetEditorForAssetType); DeclareAddress(GetNameForAssetType); DeclareAddress(GetTypeIDForAssetType); + DeclareAddress(ComputeCreatureVerbIcons); } #ifdef SDK_TO_GHIDRA diff --git a/Spore ModAPI/Spore/Editors/EditorModel.h b/Spore ModAPI/Spore/Editors/EditorModel.h index fc6baf4e..8c780140 100644 --- a/Spore ModAPI/Spore/Editors/EditorModel.h +++ b/Spore ModAPI/Spore/Editors/EditorModel.h @@ -70,20 +70,20 @@ namespace Editors public: /* 0Ch */ ResourceKey mKey; /* 18h */ eastl::vector mRigblocks; - /* 2Ch */ bool field_2C; - /* 30h */ int field_30; // intrusive_ptr, but not to an Object - /* 34h */ bool field_34; - /* 38h */ float field_38; - /* 3Ch */ float field_3C; - /* 40h */ float field_40; // -2.0 - /* 44h */ float field_44; // 2.0 - /* 48h */ float field_48; - /* 4Ch */ bool field_4C; - /* 4Dh */ bool field_4D; - /* 4Eh */ bool field_4E; // true - /* 4Fh */ bool field_4F; //TODO allows symmetry? - /* 50h */ bool field_50; - /* 51h */ bool field_51; + /* 2Ch */ bool mbAllBlocksLoaded; + /* 30h */ int mPhysicsWorld; // intrusive_ptr, but not to an Object + /* 34h */ bool mUseDynamics; + /* 38h */ float mBounds; + /* 3Ch */ float mFeetBounds; + /* 40h */ float mMinHeight; // -2.0 + /* 44h */ float mMaxHeight; // 2.0 + /* 48h */ float mMinimumLeglessCreatureHeight; + /* 4Ch */ bool mShowHiddenHandles; + /* 4Dh */ bool mShowBoneLengthHandles; + /* 4Eh */ bool mUseBoundsForDelete; // true + /* 4Fh */ bool mUsingSymmetry; //TODO allows symmetry? + /* 50h */ bool mSkinNeedsUpdating; + /* 51h */ bool mChanged; /* 54h */ int mTranslationOptions; /* 58h */ uint32_t mModelType; /* 5Ch */ eastl::string16 mName; @@ -92,7 +92,7 @@ namespace Editors /* 8Ch */ uint32_t mSkinEffectIDs[3]; // Skinpaint IDs /* 98h */ int mSkinEffectSeeds[3]; // 1234 /* A4h */ ColorRGB mColors[3]; // Skinpaint Colors - /* C8h */ eastl::vector field_C8; + /* C8h */ eastl::vector mBBoxesOverride; /* DCh */ int mZCorpScore; // not initialized }; ASSERT_SIZE(EditorModel, 0xE0); diff --git a/Spore ModAPI/Spore/Editors/EditorRigblock.h b/Spore ModAPI/Spore/Editors/EditorRigblock.h index 83275bf4..9d1cc4b8 100644 --- a/Spore ModAPI/Spore/Editors/EditorRigblock.h +++ b/Spore ModAPI/Spore/Editors/EditorRigblock.h @@ -41,6 +41,126 @@ namespace Editors class EditorRigblock; class EditorModel; + enum modelCapability + { + kModelCapabilityPerch = 0x0551bf16, + kModelCapabilitySpine = 0x100f0f5a, + kModelCapabilityLimb = 0xb00f0fdf, + kModelCapabilityNoStretch = 0x06F079DF, + kModelCapabilityGrasper = 0xb00f0fe2, + kModelCapabilityEar = 0xb00f0fe5, + kModelCapabilityEye = 0xb00f0fe9, + kModelCapabilityMouth = 0xb00f0fec, + kModelCapabilityFoot = 0xb00f0fef, + kModelCapabilitySlash = 0xb00f0ff2, + kModelCapabilityPoke = 0xb00f0ff4, + kModelCapabilityBash = 0xb00f0ff7, + kModelCapabilityFruit = 0xd00f0ffb, + kModelCapabilityFin = 0xd00f0ffe, + kModelCapabilityLiquid = 0x02294de1, + kModelCapabilityDayVision = 0x022e7977, + kModelCapabilityNightVision = 0x022e7777, + kModelCapabilityCarnivorous = 0x022e7847, + kModelCapabilityHerbivorous = 0x022e785c, + kModelCapabilityDetail = 0x025c6878, + kModelCapabilitySocial = 0x91a570ba, + kModelCapabilityHealth = 0x31c3e5b2, + kModelCapabilityStealth = 0x51c3e5b4, + kModelCapabilityCuteness = 0xb1c3e5b5, + kModelCapabilityJump = 0x330c117a, + kModelCapabilityBlock = 0xf354a879, + kModelCapabilityCall = 0xf354a87a, + kModelCapabilityCreatureSpeed = 0xb354a87c, + kModelCapabilitySprint = 0x3386c531, + kModelCapabilityWing = 0x04f4d188, + kModelCapabilitySense = 0xb3e30313, + + kModelCapabilityMean = 0xb1c3e5b6, + kModelCapabilityBite = 0xb1c3e5b7, + kModelCapabilityCharge = 0xb1c3e5b8, + kModelCapabilitySpit = 0xb1c3e5b9, + kModelCapabilityStrike = 0xb1c3e5c0, + kModelCapabilityDance = 0xb1c3e5c1, + kModelCapabilityVocalize = 0xb1c3e5c2, + kModelCapabilityFlaunt = 0xb1c3e5c3, + kModelCapabilityPosture = 0xb1c3e5c4, + kModelCapabilityGlide = 0x04f4e1b4, + + kModelCapabilityTribeAttack = 0x055d370e, + kModelCapabilityTribeSocial = 0x055d3747, + kModelCapabilityTribeArmor = 0x055d374c, + kModelCapabilityTribeGather = 0x055d3750, + kModelCapabilityTribeFishing = 0x055d3754, + + kModelCapabilityEnergyRegen = 0x073ce5dd, + kModelCapabilityAdventurerMissile = 0x0732c356, + kModelCapabilityAdventurerEnergyBlade = 0x073930ea, + kModelCapabilityAdventurerShieldGenerator = 0x073e33c7, + kModelCapabilityAdventurerHoloCharm = 0x074260ec, + kModelCapabilityAdventurerLightningSword = 0x075f5ba0, + kModelCapabilityAdventurerPulseGun = 0x075f5ba6, + kModelCapabilityAdventurerBattleArmor = 0x075f5bab, + kModelCapabilityAdventurerPoweredArmor = 0x075f5baf, + kModelCapabilityAdventurerAbsorptionShield = 0x075f5bb4, + kModelCapabilityAdventurerHealthRegen = 0x075f5bb7, + kModelCapabilityAdventurerHealthBonus = 0x075f5bbc, + kModelCapabilityAdventurerSummonSwarm = 0x075f5bbf, + kModelCapabilityAdventurerMindMeld = 0x075f5bc3, + kModelCapabilityAdventurerPoisonBlade = 0x075f5bc8, + kModelCapabilityAdventurerFreeze = 0x075f5bcb, + kModelCapabilityAdventurerGracefulWaltz = 0x075f5bcf, + kModelCapabilityAdventurerHarmoniousSong = 0x075f5bd2, + kModelCapabilityAdventurerRoyalCharm = 0x075f5bd6, + kModelCapabilityAdventurerRadiantPose = 0x075f5bda, + kModelCapabilityAdventurerSprintBurst = 0x075f5bde, + kModelCapabilityAdventurerHover = 0x075f5be3, + kModelCapabilityAdventurerStealthField = 0x075f5be6, + kModelCapabilityAdventurerJumpJet = 0x075f5bea, + kModelCapabilityAdventurerInspiringSong = 0x075f5bee, + kModelCapabilityAdventurerStunningDance = 0x075f5bf2, + kModelCapabilityAdventurerConfettiPose = 0x075f5bf7, + kModelCapabilityAdventurerEnergyStorage = 0x075f5bfa, + + kModelCapabilityVehicleSpeed = 0x11b78a70, + kModelCapabilityVehicleDefense = 0x11b78a71, + kModelCapabilityVehiclePower = 0x11b78a72, + kModelCapabilityVehicleMilitaryPower = 0x06329468, + kModelCapabilityVehicleReligiousPower = 0x06329469, + kModelCapabilityVehicleEconomicPower = 0x0632946a, + + kModelCapabilityCellFilter = 0x11b79a70, + kModelCapabilityCellSpike = 0x11b79a71, + kModelCapabilityCellJet = 0x11b79a72, + kModelCapabilityCellFlagella = 0x032f92e6, + kModelCapabilityCellJaw = 0x11b79a74, + kModelCapabilityCellElectric = 0x11b79a75, + kModelCapabilityCellPoison = 0x11b79a76, + kModelCapabilityCellCilia = 0x11b79a77, + kModelCapabilityCellPoker = 0x11b79a78, + + kModelCapabilityCellEye = 0x11b79a73, + kModelCapabilityCellMouth = 0x11b79301, + kModelCapabilityCellMovement = 0x11b79302, + kModelCapabilityCellWeapon = 0x11b79303, + kModelCapabilityCellWeaponCharging = 0x11b79304, + kModelCapabilityCellGameSpeed = 0x066783b4, + + kModelCapabilityCellCarnivore = 0x4d192a1, + kModelCapabilityCellOmnivore = 0x4d18972, + kModelCapabilityCellStarvivore = 0x4d18c4c, + kModelCapabilityCellStarvivore2 = 0x4d192a14, + kModelCapabilityCellHealth = 0x4d18efd, + kModelCapabilityCellHerbivore = 0x4d192a2, + kModelCapabilityCellProboscis = 0x4d192a3, + + kModelCapabilityCell_herbivore_carnivore_proboscis = 0x50c34699, + kModelCapabilityCell_herbivore_carnivore = 0x177209ee, + kModelCapabilityCell_herbivore_proboscis = 0x64e7222b, + kModelCapabilityCell_carnivore_proboscis = 0xf613df04, + + kModelCapabilityEyeOverlayEffect = 0xF354A870, + }; + struct EditorRigblockCapability { /// Property ID used to check the capability, such as `modelCapabilityAdventurerMissile` @@ -79,6 +199,17 @@ namespace Editors }; ASSERT_SIZE(UnkEditorRigblockStruct1, 0x38); + + enum eBlockUIState + { + kSPUIStateDefault = 0, + kSPUIStateInvalid = 1, + kSPUIStateGhost = 2, + kSPUIStatePaintMode = 3, + kSPUIStateBadLocation = 4, + kSPUIStatePrevent = 5, + }; + //TODO related with display? check SetShadedDisplay() struct UnkEditorRigblockStruct2 { @@ -215,26 +346,26 @@ namespace Editors /* 2Ch */ int field_2C; /* 30h */ float field_30; /* 34h */ bool field_34; // true - /* 38h */ UnkEditorRigblockStruct2 field_38; - /* 40h */ UnkEditorRigblockStruct2 field_40; + /* 38h */ UnkEditorRigblockStruct2 mUIState; + /* 40h */ UnkEditorRigblockStruct2 mLastUIState; /* 48h */ Vector3 mPosition; - /* 54h */ Vector3 lastPos; // updated when the part is clicked + /* 54h */ Vector3 mHistoryPosition; // updated when the part is clicked /// Combination of mUserOrientation and mOrientation /* 60h */ Matrix3 mTotalOrientation; - /* 84h */ Matrix3 field_84; + /* 84h */ Matrix3 mHistoryTotalOrientation; /* A8h */ Matrix3 mOrientation; - /* CCh */ Matrix3 field_CC; + /* CCh */ Matrix3 mHistoryBaseOrientation; /* F0h */ Matrix3 mUserOrientation; - /* 114h */ Matrix3 field_114; - /* 138h */ Vector3 field_138; // position relative to parent? - /* 144h */ Vector3 field_144; - /* 150h */ int field_150; // -2 + /* 114h */ Matrix3 mHistoryUserOrientation; + /* 138h */ Vector3 mSurfaceNormal; // position relative to parent? + /* 144h */ Vector3 mReplacePartDisplacement; + /* 150h */ int mSnapType; // -2 /* 154h */ EditorBaseHandlePtr mAxisHandles[3]; //TODO sub_483CE0 /* 160h */ EditorBaseHandlePtr mpRotationBallHandle; //TODO a handle, sub_482F30 - /* 164h */ int field_164; - /* 168h */ int field_168; - /* 16Ch */ float field_16C; - /* 170h */ Clock field_170; + /* 164h */ int mRotationRingHandleAnimID; + /* 168h */ int mVertebraAnimID; + /* 16Ch */ float mRotationRingHandleCurrentUnscaledRadius; + /* 170h */ Clock mTimer; /* 188h */ int field_188; /* 18Ch */ int field_18C; /* 190h */ int field_190; diff --git a/Spore ModAPI/Spore/Editors/VerbIconData.h b/Spore ModAPI/Spore/Editors/VerbIconData.h index d4398441..ca1ca929 100644 --- a/Spore ModAPI/Spore/Editors/VerbIconData.h +++ b/Spore ModAPI/Spore/Editors/VerbIconData.h @@ -96,7 +96,7 @@ namespace Editors /* 11h */ bool mVerbIconShowZeroLevel; /* 14h */ int mVerbIconTriggerKey; // -1 /* 18h */ float mVerbIconLevel; // not initialized - /* 1Ch */ float mVerbIconMaxLevel; + /* 1Ch */ eVerbIconCategory mVerbIconMaxLevel; /* 20h */ int field_20; // not initialized /* 24h */ eVerbIconCategory mVerbIconCategory; /* 28h */ uint32_t mVerbIconRepresentativeAnimation; // -1 diff --git a/Spore ModAPI/Spore/Simulator/SubSystem/GameViewManager.h b/Spore ModAPI/Spore/Simulator/SubSystem/GameViewManager.h index c43ee10b..7657f01e 100644 --- a/Spore ModAPI/Spore/Simulator/SubSystem/GameViewManager.h +++ b/Spore ModAPI/Spore/Simulator/SubSystem/GameViewManager.h @@ -137,6 +137,8 @@ namespace Simulator /* ACh */ eastl::vector field_AC; /* C0h */ bool field_C0; /* C1h */ bool field_C1; // visible? + /* C2h */ bool field_C2; + /* C3h */ bool field_C3; /* C4h */ eastl::intrusive_ptr field_C4; // release at 8 /* C8h */ eastl::map field_C8; // actually might be a set, of object TYPEs that are not visible? /* E4h */ IModelWorldPtr field_E4; // IModelWorld? diff --git a/Spore ModAPI/Spore/Simulator/SubSystem/ObstacleManager.h b/Spore ModAPI/Spore/Simulator/SubSystem/ObstacleManager.h index bb35fd8d..c4c0f2a4 100644 --- a/Spore ModAPI/Spore/Simulator/SubSystem/ObstacleManager.h +++ b/Spore ModAPI/Spore/Simulator/SubSystem/ObstacleManager.h @@ -20,7 +20,7 @@ namespace Simulator static cObstacleManager* Get(); public: - /* 20h */ int mFlags; + /* 20h */ uint32_t mFlags; /* 24h */ int field_24; /* 28h */ int field_28; /* 2Ch */ int field_2C; @@ -41,17 +41,18 @@ namespace Simulator /* 5498h */ float field_5498; /* 549Ch */ float field_549C; /* 54A0h */ float field_54A0; - /* 54A4h */ float field_54A4; + /* 54A4h */ float field_54A4; //the ptr? /* 54A8h */ eastl::hash_map field_54A8; /* 54C8h */ eastl::hash_map field_54C8; /* 54E8h */ eastl::hash_map field_54E8; /* 5508h */ eastl::fixed_vector field_5508; + /* 550ch */ eastl::fixed_vector field_550C; //i am not sure /* 55A0h */ uint32_t mPickObstacleTypes; /* 55A4h */ int field_55A4; /* 55A8h */ eastl::fixed_vector mObstaclesToAdd; /* 56C0h */ eastl::hash_map mTerrainModelReplacements; }; - ASSERT_SIZE(cObstacleManager, 0x56E0); + ASSERT_SIZE(cObstacleManager, 0x5778); namespace Addresses(cObstacleManager) { DeclareAddress(Get); // 0xB3D320 0xB3D4C0 diff --git a/Spore ModAPI/Spore/Simulator/cCreatureAbility.h b/Spore ModAPI/Spore/Simulator/cCreatureAbility.h index 627dd07c..01a1b8cf 100644 --- a/Spore ModAPI/Spore/Simulator/cCreatureAbility.h +++ b/Spore ModAPI/Spore/Simulator/cCreatureAbility.h @@ -38,10 +38,11 @@ namespace Simulator enum AbilityTypes { + kNone = 0, kTribeHorn = 5, kTribeMaraca = 6, kTribeDidgeridoo = 7, - kAutoAttack = 8, + kWeakBite = 8, kStealth = 13, kSpeed = 14, kBlock = 15, @@ -62,7 +63,7 @@ namespace Simulator kSprint = 39, kSight = 40, kStomp = 41, - kTribeAttackUnk = 42, + kTribeWeaponAttack = 42, kTribeSpear = 43, kTribeAttack = 44, kTribeSocial = 45, @@ -109,6 +110,15 @@ namespace Simulator kEnergyStorage = 87, }; + enum AbilityCategory + { + kCategorySocial = 0, + kCategoryAttack = 1, + kCategoryNeutral = 2, + kCategoryPassive = 3, + kCategorySuperPower = 4, + }; + //PLACEHOLDER loc_D1E9D0 uses ability type? /// Returns the animation ID at the given index, or 0x4330667 if there are no animation IDs in this ability or @@ -116,7 +126,7 @@ namespace Simulator /// @param uint32_t GetAnimationID(int index); - /* 08h */ int mType; + /* 08h */ AbilityTypes mType; /* 0Ch */ int mCategory; /* 10h */ int mSocialCategory; /* 14h */ LocalizedString nName; diff --git a/Spore ModAPI/Spore/Simulator/cSimulatorSpaceGame.h b/Spore ModAPI/Spore/Simulator/cSimulatorSpaceGame.h index 23d41446..290622f2 100644 --- a/Spore ModAPI/Spore/Simulator/cSimulatorSpaceGame.h +++ b/Spore ModAPI/Spore/Simulator/cSimulatorSpaceGame.h @@ -63,10 +63,10 @@ namespace Simulator /* 18h */ int field_18; //TODO space trading UI /* 1Ch */ int field_1C; // -1 /* 20h */ int mpCommunityEditor; //TODO cCommunityEditor - /* 24h */ int field_24; - /* 28h */ int field_28; - /* 2Ch */ int field_2C; // not initialized - /* 30h */ int field_30; // a class + /* 24h */ int mEditorResult; + /* 28h */ int mpCityHallPieMenu; + /* 2Ch */ int mpSelectedBuilding; // not initialized + /* 30h */ int mCachedEventData; // a class /* 34h */ float mSpacePhiOffsetGalaxy; /* 38h */ float mSpacePhiOffsetSolar; /* 3Ch */ float mPlanetCameraMouseRotationSpeed; // not initialized @@ -76,11 +76,11 @@ namespace Simulator /* 4Ch */ bool field_4C; /* 4Dh */ bool field_4D; /* 4Eh */ bool field_4E; - /* 4Fh */ bool field_4F; - /* 50h */ int field_50; + /* 4Fh */ short _padding_; + /* 50h */ eastl::bitset<5> mTransitioning; /* 54h */ cSimPlanetHighLODPtr mpHighLODPlanetSim; /* 58h */ App::MessageListenerData mMessageListenerData; - /* 6Ch */ bool field_6C; + /* 6Ch */ bool mSavePlanetOnDeactivate; /* 70h */ cBadgeManagerPtr mpBadgeManager; /* 74h */ bool field_74; /* 75h */ bool field_75; // true diff --git a/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h b/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h index 6af589fb..1693bce4 100644 --- a/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h +++ b/Spore ModAPI/Spore/Simulator/cSpeciesProfile.h @@ -49,45 +49,65 @@ namespace Simulator typedef eastl::sp_fixed_hash_map UnkStructPool; ASSERT_SIZE(UnkStructPool, 0x4E0); - /* 00h */ UnkStructPool field_0; - /* 4E0h */ ResourceKey field_4E0[3]; //what is this? - /* 504h */ ResourceKey mSpeciesKey; + enum HuntingStyle + { + kSolo = 0, + kPack = 1, + }; + + enum StrafeMode + { + kNoStrafe = 0, + kScaledStrafe = 1, + kFullStrafe = 3, + }; + + enum DominantAbilityType + { + kAbilityTypeEqual = 0, + kAbilityTypeSocial = 1, + kAbilityTypeAttack = 2, + }; + + /* 00h */ UnkStructPool capsInfos; + /* 4E0h */ ResourceKey mSkinColors[3]; //what is this? + /* 504h */ ResourceKey mCreatureKey; /* 510h */ ResourceKey mBabyKey; - /* 51Ch */ eastl::string16 mName; - /* 52Ch */ eastl::string16 field_52C; - /* 53Ch */ int field_53C; + /* 51Ch */ eastl::string16 mCreatureName; + /* 52Ch */ eastl::string16 mCreatureDesc; + /* 53Ch */ uint32_t creatureSeq; /* 540h */ int mCost; - /* 544h */ int field_544; + /* 544h */ int mCreatureBaseSpeedGear; /* 548h */ float mCreatureAbilityJumping; /* 54Ch */ float mCreatureAbilityGliding; /* 550h */ float mCreatureAbilityFlapping; /* 554h */ Math::Vector3 mBoundingBoxUpper; /* 560h */ Math::Vector3 mBoundingBoxLower; /* 56Ch */ float mAdditionalHealth; // 100.0 - /* 570h */ float field_570; // 200.0 - /* 574h */ float field_574; //CreatureSize? + /* 570h */ float mSatiety; // 200.0 + /* 574h */ float mCreatureMass; /* 578h */ bool mHasPlantRoot; /* 57Ch */ ModelTypes mModelType; - /* 580h */ int field_580; // not initialized + /* 580h */ HuntingStyle mHuntingStyle; // not initialized /* 584h */ int field_584; // not initialized - /* 588h */ int field_588; // 1 - /* 58Ch */ float mNumFoot; - /* 590h */ float mNumGrasper; - /* 594h */ float mNumMouth; - /* 598h */ float mNumEar; + /* 588h */ StrafeMode field_588; // 1 //need check it + /* 58Ch */ float mNumFeet; + /* 590h */ float mNumGraspers; + /* 594h */ float mNumMouths; + /* 598h */ float mNumEars; /* 59Ch */ float mNumEye; - /* 5A0h */ float mCuteness1; - /* 5A4h */ float mCuteness2; - /* 5A8h */ float field_5A8; + /* 5A0h */ float mSumCutenessParts; + /* 5A4h */ float mNumCutenessParts; + /* 5A8h */ float mCutenessSum; /* 5ACh */ float mSocialSum; /* 5B0h */ float mAttackSum; /* 5B4h */ float mAttackMaxLevel; /* 5B8h */ float mSocialMaxLevel; /* 5BCh */ float mMeanness; - /* 5C0h */ float field_5C0; //itemUnlockLevel? - /* 5C4h */ float field_5C4; //itemUnlockLevel? - /* 5C8h */ int mDuration; // 5000 - /* 5CCh */ float mRefillAbilityBars; // 1.0 cCreatureAbility->mDuration / cCreatureAbility->mRecharge + /* 5C0h */ float mMaxPartLevel; + /* 5C4h */ float mAveragePartLevel; + /* 5C8h */ int mAbilityTime; // 5000 + /* 5CCh */ float mAbilityRecharge; // 1.0 cCreatureAbility->mDuration / cCreatureAbility->mRecharge /* 5D0h */ int mSprintBuff; // 2 /* 5D4h */ int mBiteLevel; /* 5D8h */ int mChargeLevel; @@ -98,7 +118,7 @@ namespace Simulator /* 5ECh */ int mCharmLevel; /* 5F0h */ int mPoseLevel; /* 5F4h */ int mStealthLevel; - /* 5F8h */ int field_5F8; + /* 5F8h */ int mBlockLevel; /* 5FCh */ int mMatingCall; /* 600h */ int mCreatureSpeedLevel; /* 604h */ int mHealthLevel; @@ -108,14 +128,14 @@ namespace Simulator /* 614h */ int mSprintLevel; /* 618h */ int mSight; //Sense /* 61Ch */ int mGlideLevel; - /* 620h */ int field_620; - /* 624h */ int field_624; + /* 620h */ int mPreferredSocialType; + /* 624h */ int mPreferredCombatType; /* 628h */ int mTribeAttackLevel; /* 62Ch */ int mTribeSocialLevel; /* 630h */ int mTribeArmorLevel; /* 634h */ int mTribeGatherLevel; /* 638h */ int mTribeFishingLevel; - /* 63Ch */ float mDamage; + /* 63Ch */ float mAdditionalDamage; /* 640h */ float mEnergyRecoveryRate; /* 644h */ float mMaxEnergy; /* 648h */ int mShieldGenerator; @@ -145,20 +165,20 @@ namespace Simulator /* 6A8h */ int mStunningDanceLevel; /* 6ACh */ int mConfettiPoseLevel; /* 6B0h */ float mAdventurerEnergyCost; - /* 6B4h */ int field_6B4; - /* 6B8h */ eastl::vector mFruits; //unk type + /* 6B4h */ DominantAbilityType mDominantAbilityType; + /* 6B8h */ eastl::vector mFruits; /* 6CCh */ bool mIsGameMode; //true if cSpeciesProfile was called in gameMode, false otherwise /* 6D0h */ uint32_t mFootWeaponOrMouthType; /* 6D4h */ eastl::fixed_vector mActiveAbilities; //TODO abilities /* 73Ch */ eastl::fixed_vector mPassiveAbilities; - /* 7A4h */ eastl::fixed_vector mSocialAbilityIndexes; - /* 80Ch */ bool field_80C; - /* 80Dh */ bool field_80D; - /* 810h */ eastl::fixed_vector mFruitIndexes; - /* 878h */ eastl::fixed_vector mMouthIndexes; - /* 8E0h */ eastl::fixed_vector mGraspersIndexes; - /* 948h */ eastl::fixed_vector mMouthsIndexes2; - /* 9B0h */ eastl::fixed_vector mGraspersIndexes2; + /* 7A4h */ eastl::fixed_vector mSocialAbilityIndexes; + /* 80Ch */ bool mIsPlant; //need check it + /* 80Dh */ bool mBIndexesConverted; //need check it + /* 810h */ eastl::fixed_vector mFruitIndexes; + /* 878h */ eastl::fixed_vector mMouthIndexes; + /* 8E0h */ eastl::fixed_vector mGraspersIndexes; + /* 948h */ eastl::fixed_vector mMouthsIndexes2; + /* 9B0h */ eastl::fixed_vector mGraspersIndexes2; }; ASSERT_SIZE(cSpeciesProfile, 0xA18); diff --git a/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h b/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h index 45f5bf38..a4225a2e 100644 --- a/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h +++ b/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h @@ -4,6 +4,7 @@ #define ObjectTemplateDB (*Sporepedia::OTDB::cObjectTemplateDB::Get()) + namespace Sporepedia { namespace OTDB @@ -19,43 +20,219 @@ namespace Sporepedia /* 20h */ virtual bool SetParameters(const ResourceKey& key, eastl::vector& dst) = 0; }; + enum InterfaceId + { + + }; + class cObjectTemplateDB : public Object { public: - /* 10h */ virtual bool Initialize(); - /* 14h */ virtual bool Dispose(); + static cObjectTemplateDB* Get(); + + /* 00h */ virtual int AddRef(); + /* 04h */ virtual int Release(); + /* 08h */ virtual void* Dispose(); + /* 0Ch */ virtual void* AsInterface(InterfaceId mID); + /* 10h */ virtual bool Init(); + /* 14h */ virtual bool Shutdown(); /* 18h */ virtual bool Write(bool, bool writeSummarizers); /* 1Ch */ virtual bool func1Ch(); /* 20h */ virtual void func20h(); - /* 24h */ virtual bool func24h(eastl::vector& dstKeys, int, const eastl::vector& parameters); - /* 28h */ virtual bool func28h(eastl::vector& dstKeys, int, const eastl::vector& parameters); - /* 2Ch */ virtual void FindObjects(eastl::vector& dst, const eastl::vector& parameters); + /* 24h */ virtual bool func24h(eastl::vector& creation, int, const eastl::vector& parameters); + /* 28h */ virtual bool func28h(eastl::vector& dstKeys);//, int, const eastl::vector& parameters); + /* 2Ch */ virtual void FindObjects(eastl::vector& dst, const eastl::vector& parameters); //TODO thse functions are placeholders - /* 30h */ virtual int func30h(); - /* 34h */ virtual int func34h(); - /* 38h */ virtual int func38h(); - /* 3Ch */ virtual int func3Ch(); - /* 40h */ virtual int func40h(); - /* 44h */ virtual int func44h(); - /* 48h */ virtual int func48h(); - /* 4Ch */ virtual int func4Ch(); - /* 50h */ virtual int func50h(); - /* 54h */ virtual int func54h(); - /* 58h */ virtual int func58h(); - /* 5Ch */ virtual int func5Ch(); - /* 60h */ virtual int func60h(); - /* 64h */ virtual int func64h(); - /* 68h */ virtual int func68h(); - /* 6Ch */ virtual int func6Ch(); - /* 70h */ virtual int func70h(); - /* 74h */ virtual int func74h(); - /* 78h */ virtual int func78h(); + /* 30h */ virtual bool func30h(eastl::vector& creations, uint32_t param_2, const eastl::vector& parameters); + /* 34h */ virtual bool func34h(eastl::vector& creations); + /* 38h */ virtual void func38h(eastl::vector& creations, const eastl::vector& parameters); + /* 3Ch */ virtual bool func3Ch(eastl::vector& creations, uint32_t param_2, const ResourceKey& creation, const eastl::vector& parameters); + /* 40h */ virtual bool func40h(uint32_t param1, int* param2); + /* 44h */ virtual bool func44h(uint32_t param1, int* param2); + /* 48h */ virtual bool func48h(uint32_t param1, int* param2, eastl::vector& creations); + /* 4Ch */ virtual bool func4Ch(uint32_t param1, int* param2, eastl::vector& creations); + /* 50h */ virtual void func50h(int param); + /* 54h */ virtual void func54h(); + /* 58h */ virtual bool func58h(const ResourceKey& creation, bool param);//ResourceKey* + /* 5Ch */ virtual bool func5Ch(const ResourceKey& creation); + /* 60h */ virtual bool func60h(const ResourceKey& creation); + /* 64h */ virtual void func64h(uint32_t param1, eastl::vector& creations, int param); + /* 68h */ virtual void func68h(); + /* 6Ch */ virtual void func6Ch(uint32_t param_1, uint32_t param_2); //App::Property + /* 70h */ virtual bool func70h(const ResourceKey& creation); + /* 74h */ virtual bool DeleteCreationSummary(const ResourceKey& creation, bool param); + /* 78h */ virtual void DeleteCreation(const ResourceKey& creation, bool param); - /* 7Ch */ virtual void AddSummarizer(ISummarizer* pSummarizer); + /* 7Ch */ virtual bool AddSummarizer(ISummarizer* pSummarizer); - static cObjectTemplateDB* Get(); + /* 80h */ virtual bool func80h(const ResourceKey& creation, int* param); + /* 84h */ virtual bool func84h(const ResourceKey& creation, uint32_t* param_2); + /* 88h */ virtual void func88h(); + + public: + + /* 04h */ int field_04; + /* 08h */ int field_08; + /* 0Ch */ int field_0C; + /* 10h */ int field_10; + /* 14h */ int field_14; + /* 18h */ int field_18; + /* 1Ch */ int field_1C; + /* 20h */ int field_20; + /* 24h */ int field_24; + /* 28h */ int field_28; + /* 2Ch */ int field_2C; + /* 30h */ int field_30; + /* 34h */ int field_34; + /* 38h */ int field_38; + /* 3Ch */ int field_3C; + /* 40h */ bool field_40; + /* 41h */ bool field_41; + /* 42h */ bool field_42; + /* 43h */ bool field_43; + /* 44h */ int field_44; + /* 48h */ int field_48; + /* 4Ch */ int field_4C; + /* 50h */ int field_50; + /* 54h */ int field_54; + /* 58h */ int field_58; + /* 5Ch */ int field_5C; + /* 60h */ int field_60; + /* 64h */ int field_64; + /* 68h */ int field_68; + /* 6Ch */ int field_6C; + /* 70h */ int field_70; + /* 74h */ int field_74; + /* 78h */ int field_78; + /* 7Ch */ int field_7C; + /* 80h */ int field_80; + /* 84h */ int field_84; + /* 88h */ int field_88; + /* 8Ch */ int field_8C; + /* 90h */ int field_90; + /* 94h */ int field_94; + /* 98h */ int field_98; + /* 9Ch */ int field_9C; + /* A0h */ int field_A0; + /* A4h */ int field_A4; + /* A8h */ int field_A8; + /* ACh */ int field_AC; + /* B0h */ int field_B0; + /* B4h */ int field_B4; + /* B8h */ int field_B8; + /* BCh */ int field_BC; + /* C0h */ int field_C0; + /* C4h */ int field_C4; + /* C8h */ int field_C8; + /* CCh */ int field_CC; + /* D0h */ int field_D0; + /* D4h */ int field_D4; + /* D8h */ int field_D8; + /* DCh */ int field_DC; + /* E0h */ int field_E0; + /* E4h */ int field_E4; + /* E8h */ int field_E8; + /* ECh */ int field_EC; + /* F0h */ int field_F0; + /* F4h */ int field_F4; + /* F8h */ int field_F8; + /* FCh */ int field_FC; + /* 100h */ int field_100; + /* 104h */ int field_104; + /* 108h */ int field_108; + /* 10Ch */ int field_10C; + /* 110h */ int field_110; + /* 114h */ int field_114; + /* 118h */ int field_118; + /* 11Ch */ int field_11C; + /* 120h */ int field_120; + /* 124h */ int field_124; + /* 128h */ int field_128; + /* 12Ch */ int field_12C; + /* 130h */ int field_130; + /* 134h */ int field_134; + /* 138h */ int field_138; + /* 13Ch */ int field_13C; + /* 140h */ int field_140; + /* 144h */ int field_144; + /* 148h */ int field_148; + /* 14Ch */ int field_14C; + /* 150h */ int field_150; + /* 154h */ int field_154; + /* 158h */ int field_158; + /* 15Ch */ int field_15C; + /* 160h */ int field_160; + /* 164h */ int field_164; + /* 168h */ int field_168; + /* 16Ch */ int field_16C; + /* 170h */ int field_170; + /* 174h */ int field_174; + /* 178h */ int field_178; + /* 17Ch */ int field_17C; + /* 180h */ int field_180; + /* 184h */ int field_184; + /* 188h */ int field_188; + /* 18Ch */ int field_18C; + /* 190h */ int field_190; + /* 194h */ int field_194; + /* 198h */ int field_198; + /* 19Ch */ int field_19C; + /* 1A0h */ int field_1A0; + /* 1A4h */ int field_1A4; + /* 1A8h */ int field_1A8; + /* 1ACh */ int field_1AC; + /* 1B0h */ int field_1B0; + /* 1B4h */ int field_1B4; + /* 1B8h */ int field_1B8; + /* 1BCh */ int field_1BC; + /* 1C0h */ int field_1C0; + /* 1C4h */ int field_1C4; + /* 1C8h */ int field_1C8; + /* 1CCh */ int field_1CC; + /* 1D0h */ int field_1D0; + /* 1D4h */ int field_1D4; + /* 1D8h */ int field_1D8; + /* 1DCh */ int field_1DC; + /* 1E0h */ int field_1E0; + /* 1E4h */ int field_1E4; + /* 1E8h */ int field_1E8; + /* 1ECh */ int field_1EC; + /* 1F0h */ int field_1F0; + /* 1F4h */ int field_1F4; + /* 1F8h */ int field_1F8; + /* 1FCh */ int field_1FC; + /* 200h */ int field_200; + /* 204h */ int field_204; + /* 208h */ int field_208; + /* 20Ch */ int field_20C; + /* 210h */ int field_210; + /* 214h */ int field_214; + /* 218h */ int field_218; + /* 21Ch */ int field_21C; + /* 220h */ int field_220; + /* 224h */ int field_224; + /* 228h */ int field_228; + /* 22Ch */ int field_22C; + /* 230h */ int field_230; + /* 234h */ int field_234; + /* 238h */ int field_238; + /* 23Ch */ int field_23C; + /* 240h */ int field_240; + /* 244h */ int field_244; + /* 248h */ int field_248; + /* 24Ch */ int field_24C; + /* 250h */ int field_250; + /* 254h */ int field_254; + /* 258h */ int field_258; + /* 25Ch */ int field_25C; + /* 260h */ int field_260; + /* 264h */ int field_264; + /* 268h */ int field_268; + /* 26Ch */ int field_26C; + /* 270h */ int field_270; }; + ASSERT_SIZE(cObjectTemplateDB, 0x274); namespace Addresses(cObjectTemplateDB) { diff --git a/Spore ModAPI/Spore/Swarm/IVisualEffect.h b/Spore ModAPI/Spore/Swarm/IVisualEffect.h index 4c2d7d3e..d3d6502c 100644 --- a/Spore ModAPI/Spore/Swarm/IVisualEffect.h +++ b/Spore ModAPI/Spore/Swarm/IVisualEffect.h @@ -146,7 +146,7 @@ namespace Swarm /* 58h */ virtual const int* GetIntParams(IntParams param, int* dstCount = nullptr) = 0; /* 5Ch */ virtual Object* GetUnknownParam(ObjectParams params) = 0; - /* 60h */ virtual ResourceID GetEffectID() = 0; + /* 60h */ virtual uint32_t GetEffectID() = 0; /* 64h */ virtual void SetNotifyMessage(int, int) = 0; }; diff --git a/Spore ModAPI/Spore/Swarm/cVisualEffect.h b/Spore ModAPI/Spore/Swarm/cVisualEffect.h index 83a7ee47..c8a6c6fc 100644 --- a/Spore ModAPI/Spore/Swarm/cVisualEffect.h +++ b/Spore ModAPI/Spore/Swarm/cVisualEffect.h @@ -77,7 +77,7 @@ namespace Swarm /* 170h */ float field_170; /* 174h */ int field_174; /* 178h */ int field_178; - /* 17Ch */ int field_17C; + /* 17Ch */ int field_17C; //EffectParams* /* 180h */ int32_t mnSeed; /* 184h */ int field_184; // not initialized }; From 48575aa7e3b7ccac877d552485cbc886802cc223 Mon Sep 17 00:00:00 2001 From: A-xeset Date: Sun, 18 Jan 2026 23:10:53 +0700 Subject: [PATCH 11/12] Add ThumbnailManager and SPUILargeAssetView objects, editing Addresses and cpp files Added ThumbnailManager and SPUILargeAssetView objects with more-less full list of variables and functions; Remaked VerbIconData and deleted it's cpp file; Edited variables names in cVisualEffect.h, EditorRigblock.h and Editor.h; Added new functions for Editor.h Rename 2 functions from ObjectTemplateDB.h --- .../SourceCode/DLL/AddressesEditors.cpp | 31 ++- .../SourceCode/DLL/AddressesGraphics.cpp | 26 ++ .../SourceCode/DLL/AddressesSporepedia.cpp | 21 ++ Spore ModAPI/SourceCode/Editors/Editor.cpp | 5 +- .../SourceCode/Editors/VerbIconData.cpp | 18 -- Spore ModAPI/Spore ModAPI.vcxproj | 5 +- Spore ModAPI/Spore ModAPI.vcxproj.filters | 15 +- Spore ModAPI/Spore/CommonIDs.h | 7 + Spore ModAPI/Spore/Editors/BakeManager.h | 4 +- Spore ModAPI/Spore/Editors/Editor.h | 11 +- Spore ModAPI/Spore/Editors/EditorRigblock.h | 12 +- Spore ModAPI/Spore/Editors/VerbIconData.h | 244 +++++++++--------- .../Spore/Graphics/IThumbnailManager.h | 156 +++++++++-- .../Spore/Graphics/cThumbnailManager.h | 73 ++++++ Spore ModAPI/Spore/Sporepedia/AssetData.h | 1 + .../Spore/Sporepedia/ISPUILargeAssetView.h | 34 +++ .../Spore/Sporepedia/ObjectTemplateDB.h | 4 +- .../Spore/Sporepedia/cSPUILargeAssetView.h | 87 +++++++ Spore ModAPI/Spore/Swarm/cVisualEffect.h | 48 ++-- 19 files changed, 582 insertions(+), 220 deletions(-) delete mode 100644 Spore ModAPI/SourceCode/Editors/VerbIconData.cpp create mode 100644 Spore ModAPI/Spore/Graphics/cThumbnailManager.h create mode 100644 Spore ModAPI/Spore/Sporepedia/ISPUILargeAssetView.h create mode 100644 Spore ModAPI/Spore/Sporepedia/cSPUILargeAssetView.h diff --git a/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp b/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp index 6726d251..07ba40c6 100644 --- a/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp +++ b/Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp @@ -83,10 +83,13 @@ namespace Editors DefineAddress(HandleMessage, SelectAddress(0x591C80, 0x591FA0)); - DefineAddress(GetEditorForAssetType, SelectAddress(0x00433010, 0x004333e0)); - DefineAddress(GetNameForAssetType, SelectAddress(0x004badc0, 0x004bba50)); - DefineAddress(GetTypeIDForAssetType, SelectAddress(0x004bb110, 0x004bbda0)); - DefineAddress(ComputeCreatureVerbIcons, SelectAddress(0x004e8860, 0x004e8860)); + DefineAddress(GetEditorForAssetType, SelectAddress(0x433010, 0x4333e0)); + DefineAddress(GetNameForAssetType, SelectAddress(0x4badc0, 0x4bba50)); + DefineAddress(GetTypeIDForAssetType, SelectAddress(0x4bb110, 0x4bbda0)); + + DefineAddress(ComputeCreatureVerbIcons, SelectAddress(0x4e2a50, 0x4e8860)); + + DefineAddress(LoadCreatureData, SelectAddress(0x4b5760, 0x4bb500)); } namespace Addresses(EditorCamera) @@ -255,16 +258,16 @@ namespace Editors namespace Addresses(VerbIconData) { - DefineAddress(AddRef, SelectAddress(0xc6ab00, 0xc6ab00)); - DefineAddress(Release, SelectAddress(0x7b87b0, 0x7b87b0)); - DefineAddress(Dispose, SelectAddress(0x59eff0, 0x59eff0)); - DefineAddress(AsInterface, SelectAddress(0x5e4d70, 0x5e4d70)); - DefineAddress(Init, SelectAddress(0x5e54a0, 0x5e54a0)); - DefineAddress(Shutdown, SelectAddress(0x5e5920, 0x5e5920)); - DefineAddress(SetArrayIndex, SelectAddress(0x5e4d90, 0x5e4d90)); - DefineAddress(SetHotKey, SelectAddress(0x5e5c30, 0x5e5c30)); - DefineAddress(GetIconName, SelectAddress(0x5e5cb0, 0x5e5cb0)); - DefineAddress(GetIconDescription, SelectAddress(0x5e5d70, 0x5e5d70)); + DefineAddress(AddRef, SelectAddress(0x6520a0, 0xc6ab00)); + DefineAddress(Release, SelectAddress(0x5cd9f0, 0x7b87b0)); + DefineAddress(Dispose, SelectAddress(0x597710, 0x59eff0)); + DefineAddress(AsInterface, SelectAddress(0x5db940, 0x5e4d70)); + DefineAddress(Init, SelectAddress(0x5dc070, 0x5e54a0)); + DefineAddress(Shutdown, SelectAddress(0x5dc4f0, 0x5e5920)); + DefineAddress(SetArrayIndex, SelectAddress(0x5db960, 0x5e4d90)); + DefineAddress(SetHotKey, SelectAddress(0x5dc800, 0x5e5c30)); + DefineAddress(GetIconName, SelectAddress(0x5dc880, 0x5e5cb0)); + DefineAddress(GetIconDescription, SelectAddress(0x5dc940, 0x5e5d70)); } } #endif diff --git a/Spore ModAPI/SourceCode/DLL/AddressesGraphics.cpp b/Spore ModAPI/SourceCode/DLL/AddressesGraphics.cpp index df024b16..bc1fa247 100644 --- a/Spore ModAPI/SourceCode/DLL/AddressesGraphics.cpp +++ b/Spore ModAPI/SourceCode/DLL/AddressesGraphics.cpp @@ -56,6 +56,32 @@ namespace Graphics namespace Addresses(IThumbnailManager) { DefineAddress(Get, SelectAddress(0x67DED0, 0x67DD70)); + DefineAddress(AddRef, SelectAddress(0xfee650, 0x671f20)); + DefineAddress(Release, SelectAddress(0xf1aae0, 0xae0620)); + DefineAddress(Dispose, SelectAddress(0x794410, 0x7b6df0)); + DefineAddress(Init, SelectAddress(0x79e020, 0x7c14c0)); + DefineAddress(Shutdown, SelectAddress(0x79ad90, 0x7bdef0)); + DefineAddress(FrameBoundingBoxPalette, SelectAddress(0x792a90, 0x7b53d0)); + DefineAddress(GetThumbRectID, SelectAddress(0x7903c0, 0x7b2740)); + DefineAddress(CapturePaletteThumbnail, SelectAddress(0x79b3a0, 0x7be500)); + DefineAddress(CaptureEditorsThumbnail, SelectAddress(0x79b8e0, 0x7bead0)); + DefineAddress(CaptureCSAPhotos, SelectAddress(0x79bc20, 0x7bee80)); + DefineAddress(CaptureGameThumbnail, SelectAddress(0x79c120, 0x7bf3d0)); + DefineAddress(func2ch, SelectAddress(0x794c10, 0x7b7600)); + DefineAddress(func30h, SelectAddress(0x793240, 0x7b5b80)); + DefineAddress(RenderPlanetThumbnail, SelectAddress(0x797430, 0x7ba180)); + DefineAddress(CaptureBESplatter, SelectAddress(0x79e790, 0x7c1ce0)); + DefineAddress(CaptureAO, SelectAddress(0x79cc40, 0x7bffb0)); + DefineAddress(CaptureAOCE, SelectAddress(0x79d430, 0x7c0850)); + DefineAddress(func44h, SelectAddress(0x7988a0, 0x7bb740)); + DefineAddress(GenerateTimelineImages, SelectAddress(0x79cc30, 0x7bff80)); + DefineAddress(FrameBoundingBoxThumbnail, SelectAddress(0x792d60, 0x7b56a0)); + DefineAddress(FrameBBoxes, SelectAddress(0x794950, 0x7b7340)); + DefineAddress(DownsampleGIF, SelectAddress(0x7972c0, 0x7ba000)); + DefineAddress(DownSampleRT, SelectAddress(0x796be0, 0x7b98a0)); + DefineAddress(func5Ch, SelectAddress(0x796d80, 0x7b9a60)); + DefineAddress(TerrainBlurFilterDraw, SelectAddress(0x7923b0, 0x7b4bd0)); + DefineAddress(GatherAOPasses, SelectAddress(0x7940f0, 0x7b69b0)); } namespace Addresses(IGraphicsManager) { diff --git a/Spore ModAPI/SourceCode/DLL/AddressesSporepedia.cpp b/Spore ModAPI/SourceCode/DLL/AddressesSporepedia.cpp index 4d845542..7989505f 100644 --- a/Spore ModAPI/SourceCode/DLL/AddressesSporepedia.cpp +++ b/Spore ModAPI/SourceCode/DLL/AddressesSporepedia.cpp @@ -5,6 +5,8 @@ #include #include #include +#include +#include namespace Sporepedia { @@ -78,6 +80,25 @@ namespace Sporepedia DefineAddress(Get, SelectAddress(0x67CC90, 0x67CB00)); } } + + namespace Addresses(ISPUILargeAssetView) + { + DefineAddress(AddRef, SelectAddress(0x734c00, 0xf11ae0)); + DefineAddress(Release, SelectAddress(0x734c10, 0x7505f0)); + DefineAddress(Dispose, SelectAddress(0x6623c0, 0x66ccd0)); + DefineAddress(AsInterface, SelectAddress(0x661490, 0x66bce0)); + DefineAddress(GetPriority, SelectAddress(0xce9820, 0xe310c0)); + DefineAddress(GetEventMask, SelectAddress(0xdb8a50, 0x5f0e70)); + DefineAddress(func18h, SelectAddress(0xdb8a50, 0x66d400)); + DefineAddress(LoadAssetViewLarge, SelectAddress(0x664630, 0x66efb0)); + } + namespace Addresses(cSPUILargeAssetViewSmh) + { + DefineAddress(Dispose, SelectAddress(0x661ab0, 0x66c310)); + DefineAddress(func04h, SelectAddress(0x661c00, 0x66c460)); + DefineAddress(AddRef, SelectAddress(0x6023b0, 0xeb2890)); + DefineAddress(Release, SelectAddress(0x6023a0, 0xeb28a0)); + } } namespace Addresses(Sporepedia) diff --git a/Spore ModAPI/SourceCode/Editors/Editor.cpp b/Spore ModAPI/SourceCode/Editors/Editor.cpp index 7a167ed3..d8368d5e 100644 --- a/Spore ModAPI/SourceCode/Editors/Editor.cpp +++ b/Spore ModAPI/SourceCode/Editors/Editor.cpp @@ -199,6 +199,9 @@ namespace Editors auto_STATIC_METHOD(cEditor, const char16_t*, GetNameForAssetType, Args(uint32_t assetTypeID), Args(assetTypeID)); - auto_STATIC_METHOD(cEditor, void, ComputeCreatureVerbIcons, Args(cCreatureDataResource* creatureData, int VerbTrayCollection, int brainLevel, float param_4), Args(creatureData, VerbTrayCollection, brainLevel, param_4)); + auto_STATIC_METHOD_VOID(cEditor, ComputeCreatureVerbIcons, Args(cCreatureDataResource* creatureData, int VerbTrayCollection, int brainLevel, float param_4), Args(creatureData, VerbTrayCollection, brainLevel, param_4)); + + auto_STATIC_METHOD(cEditor, bool, LoadCreatureData,Args(ResourceKey* creation, cCreatureDataResource** dst), Args(creation, dst)); + } #endif diff --git a/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp b/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp deleted file mode 100644 index 2edce048..00000000 --- a/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef MODAPI_DLL_EXPORT -#include - - -namespace Editors -{ - auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, int, AddRef); - auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, int, Release); - auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, void*, Dispose); - auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, void*, AsInterface, Args(Editors::VerbIconData::InterfaceId interfaceID), Args(interfaceID)); - auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, Init, Args(App::PropertyList* abilityProp), Args(abilityProp)); - auto_METHOD_VIRTUAL_VOID_(VerbIconData, VerbIconData, Shutdown); - auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, SetArrayIndex, Args(int arrayIndex), Args(arrayIndex)); - auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, SetHotKey, Args(int verbIconTriggerKey), Args(verbIconTriggerKey)); - auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, eastl::string16, GetIconName, Args(eastl::string16* iconName, bool includeLevel), Args(iconName, includeLevel)); - auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, eastl::string16, GetIconDescription, Args(eastl::string16* iconDesc), Args(iconDesc)); -} -#endif \ No newline at end of file diff --git a/Spore ModAPI/Spore ModAPI.vcxproj b/Spore ModAPI/Spore ModAPI.vcxproj index b1c4266e..2662401c 100644 --- a/Spore ModAPI/Spore ModAPI.vcxproj +++ b/Spore ModAPI/Spore ModAPI.vcxproj @@ -327,6 +327,8 @@ + + @@ -504,6 +506,8 @@ + + @@ -974,7 +978,6 @@ - diff --git a/Spore ModAPI/Spore ModAPI.vcxproj.filters b/Spore ModAPI/Spore ModAPI.vcxproj.filters index aee18790..a4ade2df 100644 --- a/Spore ModAPI/Spore ModAPI.vcxproj.filters +++ b/Spore ModAPI/Spore ModAPI.vcxproj.filters @@ -2250,6 +2250,18 @@ Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + @@ -2738,9 +2750,6 @@ Source Files - - Source Files - diff --git a/Spore ModAPI/Spore/CommonIDs.h b/Spore ModAPI/Spore/CommonIDs.h index e5606ce1..298936da 100644 --- a/Spore ModAPI/Spore/CommonIDs.h +++ b/Spore ModAPI/Spore/CommonIDs.h @@ -119,6 +119,13 @@ enum Difficulty kDifficultyHard = 2, }; +enum InterfaceId +{ + kIIDMin = 0, + kIIDFactory = 1, + kIIDMax = 0xffffffff, +}; + /// Contains the ID of some important file types. namespace TypeIDs { diff --git a/Spore ModAPI/Spore/Editors/BakeManager.h b/Spore ModAPI/Spore/Editors/BakeManager.h index 17c7d427..65bf09d0 100644 --- a/Spore ModAPI/Spore/Editors/BakeManager.h +++ b/Spore ModAPI/Spore/Editors/BakeManager.h @@ -1272,10 +1272,10 @@ namespace Editors DeclareAddress(Get); } - inline BakeParameters::BakeParameters(int16_t _mFlag, int16_t _mPriority, uint32_t mTag) + inline BakeParameters::BakeParameters(int16_t _mFlag, int16_t _mPriority, uint32_t _mTag) : mFlag(_mFlag) , mPriority(_mPriority) - , mTag(mTag) + , mTag(_mTag) { } diff --git a/Spore ModAPI/Spore/Editors/Editor.h b/Spore ModAPI/Spore/Editors/Editor.h index 2ab34a24..f03eee99 100644 --- a/Spore ModAPI/Spore/Editors/Editor.h +++ b/Spore ModAPI/Spore/Editors/Editor.h @@ -216,8 +216,12 @@ namespace Editors static uint32_t GetTypeIDForAssetType(uint32_t assetTypeID); + ///Show creature abilities in verbtrayCollection static void ComputeCreatureVerbIcons(cCreatureDataResource* creatureData, int VerbTrayCollection, int brainLevel, float param_4); + ///return cCreatureDataResource* + static bool LoadCreatureData(ResourceKey* creation, cCreatureDataResource** dst); + public: int vftable_1C; @@ -258,7 +262,7 @@ namespace Editors /* 80h */ ILightingWorldPtr mpLightingWorld; /// The model world that contains the pedestal and test environment model, and also editor rigblocks /* 84h */ IModelWorldPtr mpMainModelWorld; - /* 88h */ IModelWorldPtr field_88; + /* 88h */ IModelWorldPtr mSaveModelWorld; /// The model world that contains the background model. /* 8Ch */ IModelWorldPtr mpBackgroundModelWorld; /* 90h */ int field_90; // related with havok world? @@ -268,7 +272,7 @@ namespace Editors // you can get it with virtual function 40h /* 98h */ EditorModel* mpEditorModel; // TODO is it intrusive_ptr? - /* 9Ch */ int field_9C; // another editor model? + /* 9Ch */ EditorModel* mEditorSaveModel; // another editor model? /// The model to be used for the pedestal in the editor. It belongs to mpPedestalModelWorld. /* A0h */ ModelPtr mpPedestalModel; /// The model to be used for the test environment in the editor. It belongs mpPedestalModelWorld. @@ -392,7 +396,7 @@ namespace Editors /* 288h */ float field_288; // 1.2 /// Briefly set when saving a creature, then immediately unset. /* 28Ch */ TexturePtr mpThumbnailTexture; - /* 290h */ int field_290; + /* 290h */ TexturePtr field_290; /* 294h */ IShadowWorldPtr mpShadowWorld; /* 298h */ Graphics::ShadowMapInfo* mpShadowMapInfo; /* 29Ch */ int mDefaultPaintTheme; @@ -646,6 +650,7 @@ namespace Editors DeclareAddress(GetNameForAssetType); DeclareAddress(GetTypeIDForAssetType); DeclareAddress(ComputeCreatureVerbIcons); + DeclareAddress(LoadCreatureData); } #ifdef SDK_TO_GHIDRA diff --git a/Spore ModAPI/Spore/Editors/EditorRigblock.h b/Spore ModAPI/Spore/Editors/EditorRigblock.h index 9d1cc4b8..ef9fd094 100644 --- a/Spore ModAPI/Spore/Editors/EditorRigblock.h +++ b/Spore ModAPI/Spore/Editors/EditorRigblock.h @@ -219,6 +219,14 @@ namespace Editors }; ASSERT_SIZE(UnkEditorRigblockStruct2, 0x8); + enum eLimbType + { + kLimbTypeMuscle = 0, + kLimbTypeTentacle = 1, + kLimbTypeRigblock = 2, + kLimbTypeNA = 3, + }; + enum EditorRigblockBoolAttributes { kEditorRigblockModelOrientToSurfaces = 0, @@ -345,7 +353,7 @@ namespace Editors /* 28h */ EditorModel* mpEditorModel; /* 2Ch */ int field_2C; /* 30h */ float field_30; - /* 34h */ bool field_34; // true + /* 34h */ bool mIsVisible; // true /* 38h */ UnkEditorRigblockStruct2 mUIState; /* 40h */ UnkEditorRigblockStruct2 mLastUIState; /* 48h */ Vector3 mPosition; @@ -384,7 +392,7 @@ namespace Editors /* 1C0h */ int field_1C0; // -2 /* 1C4h */ int field_1C4; // 1 /* 1C8h */ int field_1C8; // 1 - /* 1CCh */ int mLimbType; // 3, sub_44F2B0 + /* 1CCh */ eLimbType mLimbType; // 3, sub_44F2B0 /* 1D0h */ float mMuscleScale; // 0.5 /* 1D4h */ float mBaseMuscleScale; // 1.0 /* 1D8h */ float size; // 1.0 diff --git a/Spore ModAPI/Spore/Editors/VerbIconData.h b/Spore ModAPI/Spore/Editors/VerbIconData.h index ca1ca929..a6998541 100644 --- a/Spore ModAPI/Spore/Editors/VerbIconData.h +++ b/Spore ModAPI/Spore/Editors/VerbIconData.h @@ -1,141 +1,131 @@ #pragma once #include +#include #include -#include #include -#include #define VerbIconDataPtr eastl::intrusive_ptr namespace Editors { - class VerbIconData - //: public Object - : public DefaultRefCounted - { - public: - static const uint32_t TYPE = 0x4AA0ACD; - - enum InterfaceId - { - kIIDMin = 0, - kIIDFactory = 1, - kIIDMax = 0xffffffff, - }; - - /* 00h */ virtual int AddRef(); - /* 04h */ virtual int Release(); - /* 08h */ virtual void* Dispose(); - /* 0Ch */ virtual void* AsInterface(InterfaceId propList); - /* 10h */ virtual void Init(App::PropertyList* propList); - /* 14h */ virtual void Shutdown(); - /* 18h */ virtual void SetArrayIndex(int arrayIndex); - /// Used to generate text - /* 1Ch */ virtual void SetHotKey(int verbIconTriggerKey); - /* 20h */ virtual eastl::string16 GetIconName(eastl::string16* iconName,bool includeLevel); - /* 24h */ virtual eastl::string16 GetIconDescription(eastl::string16* iconDesc); - - enum eVerbIconCategory - { - kVerbCategoryNULL = 0, - kVerbCategoryTribeAttack = 180661997, - kVerbCategoryVehiclePower = 360359141, - kVerbCategorySpeed = 640949982, - kVerbCategoryTribeArmor = 662199250, - kVerbCategoryHerbivore = 771444639, - kVerbCategorySpit = 823131355, - kVerbCategoryCellCilia = 835506386, - kVerbCategoryVehicleDefense = 886488350, - kVerbCategoryCellJaw = 1101458518, - kVerbCategoryCellJet = 1168568857, - kVerbCategorySprint = 1296465089, - kVerbCategoryCellOmnivore = 1377441237, - kVerbCategoryCellElectric = 1470348634, - kVerbCategoryVehicleSpeed = 1501155019, - kVerbCategoryOmnivore = 1557282664, - kVerbCategoryTribeSocial = 1589650888, - kVerbCategoryCellPoison = 1601154124, - kVerbCategoryBite = 1645043423, - kVerbCategoryDance = 1924791374, - kVerbCategoryStarvivore = 2095425492, - kVerbCategoryCellFlagella = 2165516464, - kVerbCategoryGesture = 2167648234, - kVerbCategoryPower = 2391494160, - kVerbCategoryDefense = 2564315215, - kVerbCategoryCarnivore = 2726979560, - kVerbCategoryStealth = 2909291642, - kVerbCategoryPosture = 2909789983, - kVerbCategoryCellHealth = 2964572918, - kVerbCategoryGlide = 2968795556, - kVerbCategoryCellPoker = 3013574067, - kVerbCategoryCellFilter = 3020374546, - kVerbCategoryTribeFishing = 3188984297, - kVerbCategoryTribeGather = 3253334812, - kVerbCategoryVocalize = 3478552014, - kVerbCategoryCellStarvivore = 3610717237, - kVerbCategoryCellSpike = 3634179486, - kVerbCategoryCellHerbivore = 3653024240, - kVerbCategoryHealth = 3677180323, - kVerbCategoryCellCarnivore = 3751859903, - kVerbCategoryCall = 3753286133, - kVerbCategoryJump = 3833651337, - kVerbCategoryBlock = 4001580976, - kVerbCategorySense = 4069948569, - kVerbCategoryStrike = 4110605575, - kVerbCategoryGrasp = 4248645338, - kVerbCategoryCharge = 4285247397 - }; + enum eVerbIconCategory + { + kVerbCategoryNULL = 0, + kVerbCategoryTribeAttack = 180661997, + kVerbCategoryVehiclePower = 360359141, + kVerbCategorySpeed = 640949982, + kVerbCategoryTribeArmor = 662199250, + kVerbCategoryHerbivore = 771444639, + kVerbCategorySpit = 823131355, + kVerbCategoryCellCilia = 835506386, + kVerbCategoryVehicleDefense = 886488350, + kVerbCategoryCellJaw = 1101458518, + kVerbCategoryCellJet = 1168568857, + kVerbCategorySprint = 1296465089, + kVerbCategoryCellOmnivore = 1377441237, + kVerbCategoryCellElectric = 1470348634, + kVerbCategoryVehicleSpeed = 1501155019, + kVerbCategoryOmnivore = 1557282664, + kVerbCategoryTribeSocial = 1589650888, + kVerbCategoryCellPoison = 1601154124, + kVerbCategoryBite = 1645043423, + kVerbCategoryDance = 1924791374, + kVerbCategoryStarvivore = 2095425492, + kVerbCategoryCellFlagella = 2165516464, + kVerbCategoryGesture = 2167648234, + kVerbCategoryPower = 2391494160, + kVerbCategoryDefense = 2564315215, + kVerbCategoryCarnivore = 2726979560, + kVerbCategoryStealth = 2909291642, + kVerbCategoryPosture = 2909789983, + kVerbCategoryCellHealth = 2964572918, + kVerbCategoryGlide = 2968795556, + kVerbCategoryCellPoker = 3013574067, + kVerbCategoryCellFilter = 3020374546, + kVerbCategoryTribeFishing = 3188984297, + kVerbCategoryTribeGather = 3253334812, + kVerbCategoryVocalize = 3478552014, + kVerbCategoryCellStarvivore = 3610717237, + kVerbCategoryCellSpike = 3634179486, + kVerbCategoryCellHerbivore = 3653024240, + kVerbCategoryHealth = 3677180323, + kVerbCategoryCellCarnivore = 3751859903, + kVerbCategoryCall = 3753286133, + kVerbCategoryJump = 3833651337, + kVerbCategoryBlock = 4001580976, + kVerbCategorySense = 4069948569, + kVerbCategoryStrike = 4110605575, + kVerbCategoryGrasp = 4248645338, + kVerbCategoryCharge = 4285247397 + }; + class VerbIconData + : public Object + , public DefaultRefCounted + { + public: + static const uint32_t TYPE = 0x4AA0ACD; + /* 00h */ virtual int AddRef(); + /* 04h */ virtual int Release(); + /* 08h */ virtual void* Dispose(); + /* 0Ch */ virtual void* AsInterface(InterfaceId interfaceID); + /* 10h */ virtual void Init(App::PropertyList* propList); + /* 14h */ virtual void Shutdown(); + /* 18h */ virtual void SetArrayIndex(int arrayIndex); + /// Used to generate text + /* 1Ch */ virtual void SetHotKey(int verbIconTriggerKey); + /* 20h */ virtual eastl::string16 GetIconName(eastl::string16* iconName, bool includeLevel); + /* 24h */ virtual eastl::string16 GetIconDescription(eastl::string16* iconDesc); public: - /* 0Ch */ bool mVerbIconUseDescription; // true - /* 0Dh */ bool mVerbIconShowLevel; // true - /* 0Eh */ bool mPaletteItemRolloverShowLevel; // true - /* 0Fh */ bool mVerbIconRolloverShowLevel; // true - /* 10h */ bool mShowHotKey; - /* 11h */ bool mVerbIconShowZeroLevel; - /* 14h */ int mVerbIconTriggerKey; // -1 - /* 18h */ float mVerbIconLevel; // not initialized - /* 1Ch */ eVerbIconCategory mVerbIconMaxLevel; - /* 20h */ int field_20; // not initialized - /* 24h */ eVerbIconCategory mVerbIconCategory; - /* 28h */ uint32_t mVerbIconRepresentativeAnimation; // -1 - /* 2Ch */ Math::ColorRGBA mVerbIconColor; - /* 3Ch */ uint32_t mVerbIconRolloverLevelImageID; - /* 40h */ ResourceKey mVerbIconRolloverLevelLayoutID; - /* 4Ch */ bool mVerbIconRolloverShowIcon; // not initialized - /* 4Dh */ bool mVerbIconEnforceMaxLevel; - /* 50h */ uint32_t mCreatureAbilityCategory; // not initialized - /* 54h */ LocalizedString mCreatureAbilityName; - /* 68h */ eastl::string16 field_68; - /* 78h */ uint32_t mTriggerKeyForLocalization; - /* 7Ch */ int field_7C; // -1 - /* 80h */ int field_80; // -1 - /* 84h */ int field_84; - /* 88h */ int field_88; - /* 8Ch */ int field_8C; - /* 90h */ uint32_t mVerbIconImageID; // not initialized - /* 94h */ uint32_t mVerbIconTrayOverrideImageID; - /* 98h */ uint32_t mVerbIconTraySmallCardOverrideImageID; // not initialized - /* 9Ch */ ResourceKey mVerbIconLayout; - /* A8h */ ResourceKey mVerbIconGameLayout; - /* B4h */ ResourceKey mVerbIconStaticLayout; - /* C0h */ PropertyListPtr mpPropList; + /* 0Ch */ bool mVerbIconUseDescription; + /* 0Dh */ bool mVerbIconShowLevel; + /* 0Eh */ bool mPaletteItemRolloverShowLevel; + /* 0Fh */ bool mVerbIconRolloverShowLevel; + /* 10h */ bool mShowHotKey; + /* 11h */ bool mVerbIconShowZeroLevel; + /* 14h */ int mVerbIconTriggerKey; + /* 18h */ float mVerbIconLevel; + /* 1Ch */ float mVerbIconMaxLevel; + /* 20h */ int field_20; + /* 24h */ eVerbIconCategory mVerbIconCategory; + /* 28h */ uint32_t mVerbIconRepresentativeAnimation; + /* 2Ch */ Math::ColorRGBA mVerbIconColor; + /* 3Ch */ uint32_t mVerbIconRolloverLevelImageID; + /* 40h */ ResourceKey mVerbIconRolloverLevelLayoutID; + /* 4Ch */ bool mVerbIconRolloverShowIcon; + /* 4Dh */ bool mVerbIconEnforceMaxLevel; + /* 50h */ uint32_t mCreatureAbilityCategory; + /* 54h */ LocalizedString mCreatureAbilityName; + /* 68h */ eastl::string16 field_68; + /* 78h */ uint32_t mTriggerKeyForLocalization; + /* 7Ch */ int field_7C; + /* 80h */ int field_80; + /* 84h */ int field_84; + /* 88h */ int field_88; + /* 8Ch */ int field_8C; + /* 90h */ uint32_t mVerbIconImageID; + /* 94h */ uint32_t mVerbIconTrayOverrideImageID; + /* 98h */ uint32_t mVerbIconTraySmallCardOverrideImageID; + /* 9Ch */ ResourceKey mVerbIconLayout; + /* A8h */ ResourceKey mVerbIconGameLayout; + /* B4h */ ResourceKey mVerbIconStaticLayout; + /* C0h */ PropertyListPtr mpPropList; }; - ASSERT_SIZE(VerbIconData, 0xC0); + ASSERT_SIZE(VerbIconData, 0xC4); - namespace Addresses(VerbIconData) - { - DeclareAddress(AddRef); - DeclareAddress(Release); - DeclareAddress(Dispose); - DeclareAddress(AsInterface); - DeclareAddress(Init); - DeclareAddress(Shutdown); - DeclareAddress(SetArrayIndex); - DeclareAddress(SetHotKey); - DeclareAddress(GetIconName); - DeclareAddress(OnKeyDown); - DeclareAddress(GetIconDescription); - } -} \ No newline at end of file + namespace Addresses(VerbIconData) + { + DeclareAddress(AddRef); + DeclareAddress(Release); + DeclareAddress(Dispose); + DeclareAddress(AsInterface); + DeclareAddress(Init); + DeclareAddress(Shutdown); + DeclareAddress(SetArrayIndex); + DeclareAddress(SetHotKey); + DeclareAddress(GetIconName); + DeclareAddress(OnKeyDown); + DeclareAddress(GetIconDescription); + } +} diff --git a/Spore ModAPI/Spore/Graphics/IThumbnailManager.h b/Spore ModAPI/Spore/Graphics/IThumbnailManager.h index 21b37e94..fd966b4c 100644 --- a/Spore ModAPI/Spore/Graphics/IThumbnailManager.h +++ b/Spore ModAPI/Spore/Graphics/IThumbnailManager.h @@ -2,7 +2,10 @@ #include #include +#include #include +#include +#include #include #include @@ -27,40 +30,141 @@ namespace Graphics }; ASSERT_SIZE(PlanetThumbnailRequest, 0x2C); + class cPaletteThumbnailInfo + : public DefaultRefCounted + { + public: + /* 08h */ uint32_t mRes; + /* 0Ch */ uint32_t mCameraId; + /* 10h */ uint32_t mMsgId; + /* 14h */ uint32_t mGroup; + /* 18h */ uint32_t mInstance; + /* 1Ch */ Math::Vector3 mCamCenter; + /* 28h */ float mEditorScale; + /* 2Ch */ eastl::vector mBBoxes;//eastl::vector> mBBoxes; + /* 40h */ uint32_t mEffectType; + /* 44h */ uint32_t mFramingType; + /* 48h */ float mZoomValue; + }; + ASSERT_SIZE(cPaletteThumbnailInfo, 0x4C); + + class cEditorsThumbnailInfo + : public DefaultRefCounted + { + public: + cEditorsThumbnailInfo(); + + /* 08h */ uint32_t mRes; + /* 0Ch */ uint32_t mCameraId; + /* 10h */ uint32_t mMsgId; + /* 14h */ TexturePtr mThumbnailTex; + /* 18h */ Math::Vector3 mCamCenter; + /* 24h */ float mEditorScale; + /* 28h */ eastl::vector mBBoxes;//eastl::vector> mBBoxes; + /* 3Ch */ uint32_t mEffectType; + }; + ASSERT_SIZE(cEditorsThumbnailInfo, 0x40); + + class cCSAThumbnailInfo + : public Graphics::ILayer + , public RefCountTemplate + { + public: + /* 0Ch */ bool mInitialized; + /* 10h */ IModelWorldPtr mModelWorld; + /* 14h */ IModelWorldPtr mBackgroundModelWorld; + /* 18h */ TexturePtr mThumbnailTex; + /* 18h */ App::cViewer* mViewer; + /* 1Ch */ App::cViewer* mFilterViewer; + /* 20h */ int mInfo; //AutoRefCount + }; + ASSERT_SIZE(cCSAThumbnailInfo, 0x28); + + class cGameThumbnailInfo + : public DefaultRefCounted + { + public: + /* 08h */ uint32_t mRes; + /* 0Ch */ uint32_t mGroup; + /* 10h */ uint32_t mInstance; + /* 14h */ uint32_t mMsgId; + /* 18h */ uint32_t mDrawSet; + }; + ASSERT_SIZE(cGameThumbnailInfo, 0x1C); + + class unknownThumbnailInfo + : public DefaultRefCounted + { + public: + /* 08h */ uint32_t field_08; + /* 0Ch */ uint32_t mRes; + /* 10h */ uint32_t field_10; + /* 14h */ uint32_t field_14; + /* 18h */ uint32_t field_18; + }; + ASSERT_SIZE(unknownThumbnailInfo, 0x1C); + class IThumbnailManager { public: - virtual int func00h() = 0; - virtual int func04h() = 0; - virtual int func08h() = 0; - virtual int func0ch() = 0; - virtual int func10h() = 0; - virtual int func14h() = 0; - virtual int func18h() = 0; - virtual int func1ch() = 0; - virtual int func20h() = 0; - virtual int func24h() = 0; - virtual int func28h() = 0; - virtual int func2ch() = 0; - virtual int func30h() = 0; - virtual int RenderPlanetThumbnail(PlanetThumbnailRequest* request, int thumbnailSize) = 0; - virtual int func38h() = 0; - virtual int func3ch() = 0; - virtual int func40h() = 0; - virtual int func44h() = 0; - virtual int func48h() = 0; - virtual int func4ch() = 0; - virtual int func50h() = 0; - virtual int func54h() = 0; - virtual int func58h() = 0; - virtual int func5ch() = 0; - virtual int func60h() = 0; - virtual int func64h() = 0; + /* 00h */ virtual int AddRef(); + /* 04h */ virtual int Release(); + /* 08h */ virtual void* Dispose(); + /* 0Ch */ virtual bool Init(); + /* 10h */ virtual bool Shutdown(); + /* 14h */ virtual void FrameBoundingBoxPalette(BoundingBox* modelBBox, App::cViewer* model, uint32_t unk, float unk2); + /* 18h */ virtual void GetThumbRectID(RenderTargetID* dst); + /* 1Ch */ virtual void CapturePaletteThumbnail(IModelWorld* paletteModel, cPaletteThumbnailInfo* paltteInfo); + /* 20h */ virtual void CaptureEditorsThumbnail(IModelWorld* creationModel, cEditorsThumbnailInfo* editorsInfo); + /* 24h */ virtual void CaptureCSAPhotos(IModelWorld* param_1, IModelWorld* param_2, cCSAThumbnailInfo* CSAInfo); + /* 28h */ virtual void CaptureGameThumbnail(IModelWorld* gameModelWorld, cGameThumbnailInfo* gameInfo); + /* 2Ch */ virtual void func2ch(unknownThumbnailInfo* unkInfo); + /* 30h */ virtual void func30h(IModelWorld* modelWorld, App::cViewer*, uint32_t msg, int size, uint32_t); + /* 34h */ virtual void RenderPlanetThumbnail(PlanetThumbnailRequest* request, int thumbnailSize); + /* 38h */ virtual void CaptureBESplatter(uint32_t, RenderTargetID*, eastl::vector*, eastl::vector*, eastl::vector_map*, eastl::vector>*, eastl::vector_map*, uint32_t, bool,int, int, RenderTargetID*, RenderTargetID*); + /* 3Ch */ virtual bool CaptureAO(RenderTargetID*, IModelWorld*, eastl::vector*, uint32_t, uint32_t lightingID, bool); + /* 40h */ virtual bool CaptureAOCE(uint32_t modelID, uint32_t modelGroupID, BoundingBox* BBox, uint32_t lightingGroupID, uint32_t lightingID, App::PropertyList* lightingProp); + /* 44h */ virtual void func44h(uint32_t msg); + /* 48h */ virtual void GenerateTimelineImages(uint32_t, uint32_t, uint32_t, uint32_t); + /* 4Ch */ virtual void FrameBoundingBoxThumbnail(BoundingBox* modelBBox, App::cViewer* model, uint32_t unk, float unk2); //i'm not sure + /* 50h */ virtual void FrameBBoxes(eastl::vector>* BBoxes, App::cViewer*, uint32_t cameraID, Vector3* param_4, float, float); + /* 54h */ virtual void DownsampleGIF(RenderTargetID*, RenderTargetID*, int, int); + /* 58h */ virtual void DownSampleRT(RenderTargetID*, RenderTargetID*, int, int); + /* 5Ch */ virtual void func5Ch(RenderTargetID*, RenderTargetID*, RenderTargetID*, int, bool); + /* 60h */ virtual void TerrainBlurFilterDraw(RenderTargetID* refractionRTT, RenderTargetID* blur1RTT, RenderTargetID* blur2RTT, RenderStatistics* stats); + /* 64h */ virtual void GatherAOPasses(uint32_t, uint32_t, uint32_t, App::cViewer**, RenderStatistics*); static IThumbnailManager* Get(); }; namespace Addresses(IThumbnailManager) { DeclareAddress(Get); + + DeclareAddress(AddRef); + DeclareAddress(Release); + DeclareAddress(Dispose); + DeclareAddress(Init); + DeclareAddress(Shutdown); + DeclareAddress(FrameBoundingBoxPalette); + DeclareAddress(GetThumbRectID); + DeclareAddress(CapturePaletteThumbnail); + DeclareAddress(CaptureEditorsThumbnail); + DeclareAddress(CaptureCSAPhotos); + DeclareAddress(CaptureGameThumbnail); + DeclareAddress(func2ch); + DeclareAddress(func30h); + DeclareAddress(RenderPlanetThumbnail); + DeclareAddress(CaptureBESplatter); + DeclareAddress(CaptureAO); + DeclareAddress(CaptureAOCE); + DeclareAddress(func44h); + DeclareAddress(GenerateTimelineImages); + DeclareAddress(FrameBoundingBoxThumbnail); + DeclareAddress(FrameBBoxes); + DeclareAddress(DownsampleGIF); + DeclareAddress(DownSampleRT); + DeclareAddress(func5Ch); + DeclareAddress(TerrainBlurFilterDraw); + DeclareAddress(GatherAOPasses); } } \ No newline at end of file diff --git a/Spore ModAPI/Spore/Graphics/cThumbnailManager.h b/Spore ModAPI/Spore/Graphics/cThumbnailManager.h new file mode 100644 index 00000000..04770989 --- /dev/null +++ b/Spore ModAPI/Spore/Graphics/cThumbnailManager.h @@ -0,0 +1,73 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Graphics +{ + class cThumbnailManager + : public IThumbnailManager + , public App::IMessageListener + , public RefCountTemplate + { + public: + /* 10h */ RenderWare::Raster* mThumbRaster; + /* 14h */ RenderTargetID mThumbRectID; + /* 1Ch */ RenderTargetID mBlurThumbRectID1; + /* 24h */ RenderTargetID mBlurThumbRectID2; + /* 2Ch */ RenderTargetID mTempThumbnailBuffer; + /* 34h */ RenderTargetID mCSALargeRectID; + /* 3Ch */ RenderTargetID mCSASmallRectID; + /* 44h */ RenderTargetID mCSAAntiAliasRectID; + /* 4Ch */ RenderTargetID mTimelineRectID[3]; + /* 64h */ TexturePtr mTimelineCellBg; + /* 68h */ TexturePtr mTimelineCreatureBg; + /* 6Ch */ TexturePtr mTimelineTribeBg; + /* 70h */ TexturePtr mTimelineCivBg; + /* 74h */ TexturePtr mTimelineSpaceBg; + /* 78h */ App::cViewer* mSplatterViewer; + /* 7Ch */ App::cViewer* mBakeInfoSplatterViewer; + /* 80h */ App::cViewer* mNMapSpecSplatterViewer; + /* 84h */ App::cViewer* mDilateViewer; + /* 88h */ App::cViewer* mAmbOccShadowViewers[1024]; + /* 1088h */ App::cViewer* mAmbOccSplatterViewer; + /* 108Ch */ App::cViewer* mAmbOccGatherViewer; + /* 1090h */ RenderWare::Raster* mLargeBufferTexture; + /* 1094h */ RenderTargetID mLargeBufferTextureRectID; + /* 109Ch */ RenderWare::Raster* mWatermarkRaster; + /* 10A0h */ RenderWare::Raster* mScreenshotRaster; + /* 10A4h */ RenderTargetID mWatermarkRectID; + /* 10ACh */ RenderTargetID mScreenshotRectID; + /* 10B4h */ Graphics::IRenderTargetManager* mRTTMgr; //or cRenderTargetManager? + /* 10B8h */ uint32_t mTempCamCtrlr; + /* 10BCh */ bool mMultiplyDiffuseWithAO; + /* 10BDh */ bool mBakeLscm; + /* 10C0h */ IVisualEffectPtr mShadowLightEffect; + /* 10C4h */ IModelWorldPtr mAOModelWorld; + /* 10C8h */ int mSkinModel; //AutoRefCount + /* 10CCh */ int mSplatInProgress; + /* 10D0h */ bool mCurrentlyCapturingAO; + /* 10D1h */ bool mTerrainFilterInitialized; + /* 10D4h */ int mTerrainDownSampleFilter; //AutoRefCount + /* 10D8h */ int mTerrainBlurFilter1; //AutoRefCount + /* 10DCh */ int mTerrainBlurFilter2; //AutoRefCount + /* 10E0h */ App::cViewer* mTerrainBlurFilterViewer; + /* 10E4h */ RenderTargetID mAOGatherRectID; + /* 10ECh */ int mAOPostProcessLayer; //AutoRefCount + /* 10F0h */ int mAmbOccRenderJob[1024]; //AutoRefCount[1024] + /* 20F0h */ int mDiffuseSplatterJob; //AutoRefCount + /* 20F4h */ int mBakeInfoSplatterJob; //AutoRefCount + /* 20F8h */ int mNMapSpecSplatterJob; //AutoRefCount + /* 20FCh */ int mAmbOccTextureCount; + /* 2100h */ int mTimelineJobs[3]; + /* 2110h */ Clock mAOTimer; + }; + ASSERT_SIZE(cThumbnailManager, 0x2128); +} \ No newline at end of file diff --git a/Spore ModAPI/Spore/Sporepedia/AssetData.h b/Spore ModAPI/Spore/Sporepedia/AssetData.h index a28c91e1..0568ec88 100644 --- a/Spore ModAPI/Spore/Sporepedia/AssetData.h +++ b/Spore ModAPI/Spore/Sporepedia/AssetData.h @@ -9,6 +9,7 @@ #define cSPAssetDataOTDBPtr eastl::intrusive_ptr #define cSPSpaceAssetDataOTDBPtr eastl::intrusive_ptr +#define IAssetDataPtr eastl::intrusive_ptr namespace Sporepedia { diff --git a/Spore ModAPI/Spore/Sporepedia/ISPUILargeAssetView.h b/Spore ModAPI/Spore/Sporepedia/ISPUILargeAssetView.h new file mode 100644 index 00000000..e7878622 --- /dev/null +++ b/Spore ModAPI/Spore/Sporepedia/ISPUILargeAssetView.h @@ -0,0 +1,34 @@ +#pragma once + +#include +#include +#include +#include + +#define ISPUIAssetViewPtr eastl::intrusive_ptr + +namespace Sporepedia +{ + class ISPUILargeAssetView + { + /* 00h */ virtual int AddRef(); + /* 04h */ virtual int Release(); + /* 08h */ virtual void* Dispose(); + /* 0Ch */ virtual void* AsInterface(InterfaceId interfaceID); + /* 10h */ virtual int GetPriority(); //return 0 + /* 14h */ virtual uint32_t GetEventMask(); //return 0xc1 + /* 18h */ virtual bool func18h(int unk, UTFWin::IWindow* window); + /* 1Ch */ virtual void LoadAssetViewLarge(); + }; + namespace Addresses(ISPUILargeAssetView) + { + DeclareAddress(AddRef); + DeclareAddress(Release); + DeclareAddress(Dispose); + DeclareAddress(AsInterface); + DeclareAddress(GetPriority); + DeclareAddress(GetEventMask); + DeclareAddress(func18h); + DeclareAddress(LoadAssetViewLarge); + } +} \ No newline at end of file diff --git a/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h b/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h index a4225a2e..efac8e98 100644 --- a/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h +++ b/Spore ModAPI/Spore/Sporepedia/ObjectTemplateDB.h @@ -61,8 +61,8 @@ namespace Sporepedia /* 68h */ virtual void func68h(); /* 6Ch */ virtual void func6Ch(uint32_t param_1, uint32_t param_2); //App::Property /* 70h */ virtual bool func70h(const ResourceKey& creation); - /* 74h */ virtual bool DeleteCreationSummary(const ResourceKey& creation, bool param); - /* 78h */ virtual void DeleteCreation(const ResourceKey& creation, bool param); + /* 74h */ virtual bool PurgeAssetSummarizer(const ResourceKey& creation, bool param); + /* 78h */ virtual void PurgeAsset(const ResourceKey& creation, bool param); /* 7Ch */ virtual bool AddSummarizer(ISummarizer* pSummarizer); diff --git a/Spore ModAPI/Spore/Sporepedia/cSPUILargeAssetView.h b/Spore ModAPI/Spore/Sporepedia/cSPUILargeAssetView.h new file mode 100644 index 00000000..71d4e8a4 --- /dev/null +++ b/Spore ModAPI/Spore/Sporepedia/cSPUILargeAssetView.h @@ -0,0 +1,87 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include + +#define cSPUIAssetViewPtr eastl::intrusive_ptr + +namespace Sporepedia +{ + class cSPUILargeAssetViewSmh + { + /* 00h */ virtual void* Dispose(); + /* 04h */ virtual bool func04h(int unk, int unk2); + /* 08h */ virtual int AddRef(); + /* 0Ch */ virtual int Release(); + }; + ASSERT_SIZE(cSPUILargeAssetViewSmh, 0x4); + + class cSPUILargeAssetView + : public ISPUILargeAssetView + , public cSPUILargeAssetViewSmh + , public UTFWin::IWinProc + , public App::IMessageListener + , public DefaultRefCounted + { + public: + /* 18h */ UILayoutPtr mLayout; + /* 1Ch */ IWindowPtr mWinParent; + /* 20h */ IWindowPtr mWinRoot; + /* 24h */ int field_24; + /* 28h */ int field_28; + /* 2Ch */ IWindowPtr mWinRenderWindow; + /* 30h */ IWindowPtr mWinBakingIndicator; + /* 34h */ IWindowPtr mWinName; + /* 38h */ IWindowPtr mWinAuthor; + /* 3Ch */ IWindowPtr mWinDescription; + /* 40h */ IWindowPtr mWinTags; + /* 44h */ IWindowPtr mWinStatsContainer; + /* 48h */ IWindowPtr mWinBakingForeground; + /* 4Ch */ IWindowPtr mWinPublished; + /* 50h */ int field_50; + /* 54h */ int field_54; + /* 58h */ int field_58; + /* 5Ch */ int field_5C; + /* 60h */ int mCommentsBrowserPtr; + /* 64h */ int mExpansionPackBrowserPtr; + /* 68h */ int mVerbIcons; + /* 6Ch */ IWindowPtr mWinAssetVerbs; + /* 70h */ int mAssetVerbsPtr; + /* 74h */ IAssetDataPtr mAssetData; + /* 78h */ int field_78; + /* 7Ch */ int field_7C; + /* 80h */ int field_80; + /* 84h */ int mTraitSuperPowerRollover; + /* 88h */ int field_88; + /* 8Ch */ int field_8C; + /* 90h */ int field_90; + /* 94h */ bool mIsOnline; + /* 98h */ int field_98; + /* 9Ch */ int field_9C; + /* A0h */ int field_A0; + /* A4h */ int field_A4; + /* A8h */ bool mIsLoaded; + /* A9h */ bool field_A9; + /* ABh */ bool field_AB; + /* ACh */ bool field_AC; + /* B0h */ int field_B0; + /* B4h */ int field_B4; + /* B8h */ bool field_B8; + /* BCh */ App::MessageListenerData mAutoMsgHandler; + }; + ASSERT_SIZE(cSPUILargeAssetView, 0xCC); + + namespace Addresses(cSPUILargeAssetViewSmh) + { + DeclareAddress(Dispose); + DeclareAddress(func04h); + DeclareAddress(AddRef); + DeclareAddress(Release); + } +} \ No newline at end of file diff --git a/Spore ModAPI/Spore/Swarm/cVisualEffect.h b/Spore ModAPI/Spore/Swarm/cVisualEffect.h index c8a6c6fc..6a30faeb 100644 --- a/Spore ModAPI/Spore/Swarm/cVisualEffect.h +++ b/Spore ModAPI/Spore/Swarm/cVisualEffect.h @@ -27,6 +27,7 @@ #include #include #include +#include namespace Swarm { @@ -47,37 +48,42 @@ namespace Swarm kFlagHidden = 2, kFlagTransformed = 4 }; + enum tTransitionType + { + kSoftTransition = 0, + kHardTransition = 1 + }; /* 10h */ int field_10; /* 14h */ IEffectsManagerPtr mpManager; /* 18h */ uint32_t mInstanceID; /* 1Ch */ uint32_t mGroupID; /* 20h */ uint32_t mEffectIndex; // & 0xFF000000 is the EffectDirectory index - /* 24h */ int field_24; + /* 24h */ tTransitionType mStartTransition; /* 28h */ cVisualEffectDescription* mpDescription; - /* 2Ch */ int mFlags; - /* 30h */ Math::Vector3 field_30; - /* 3Ch */ Math::Vector3 field_3C; - /* 48h */ int field_48; - /* 4Ch */ float field_4C; - /* 50h */ Math::Vector3 field_50; + /* 2Ch */ eastl::bitset<13> mFlags; + /* 30h */ Math::Vector3 mWorldPosition; + /* 3Ch */ Math::Vector3 mWorldUp; + /* 48h */ int mCurrentLOD; + /* 4Ch */ float mCurrentLODLerp; + /* 50h */ Math::Vector2 mCurrentRange; + /* 58h */ float mLODDistanceScale; /* 5Ch */ uint32_t mNotifyMessageID; - /* 60h */ int field_60; + /* 60h */ uint32_t mNotifyMessageUserData; /* 64h */ Transform mRigidTransform; /* 9Ch */ Transform mSourceTransform; - /* D4h */ Transform field_D4; - /* 10Ch */ Transform field_10C; - /* 144h */ eastl::vector field_144; - /* 158h */ int mpBone0; - /* 15Ch */ int field_15C; - /* 160h */ int mpBone1; - /* 164h */ int field_164; - /* 168h */ float field_168; - /* 16Ch */ float field_16C; - /* 170h */ float field_170; - /* 174h */ int field_174; - /* 178h */ int field_178; - /* 17Ch */ int field_17C; //EffectParams* + /* D4h */ Transform mCmptRigidTransform; + /* 10Ch */ Transform mCmptSourceTransform; + /* 144h */ eastl::vector mComponentRecs; + /* 158h */ int mRigidBone; //cIBonePtr + /* 15Ch */ uint32_t mRigidBoneModCount; + /* 160h */ int mSourceBone; //cIBonePtr + /* 164h */ uint32_t mSourceBoneModCount; + /* 168h */ Math::Vector2 mLODSizeScale; + /* 170h */ float mSizeScaleLOD; + /* 174h */ int mWorld; //cIEffectsWorld * + /* 178h */ int mGlobalParams; //cGlobalParams * + /* 17Ch */ int mParams; //cEffectParams * /* 180h */ int32_t mnSeed; /* 184h */ int field_184; // not initialized }; From 1efd343f487205c6f62306dbd3df5eeb51bc01fd Mon Sep 17 00:00:00 2001 From: A-xeset Date: Sun, 18 Jan 2026 23:13:19 +0700 Subject: [PATCH 12/12] deletedVerbIconData.cpp once again --- .../SourceCode/Editors/VerbIconData.cpp | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 Spore ModAPI/SourceCode/Editors/VerbIconData.cpp diff --git a/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp b/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp deleted file mode 100644 index 2edce048..00000000 --- a/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef MODAPI_DLL_EXPORT -#include - - -namespace Editors -{ - auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, int, AddRef); - auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, int, Release); - auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, void*, Dispose); - auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, void*, AsInterface, Args(Editors::VerbIconData::InterfaceId interfaceID), Args(interfaceID)); - auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, Init, Args(App::PropertyList* abilityProp), Args(abilityProp)); - auto_METHOD_VIRTUAL_VOID_(VerbIconData, VerbIconData, Shutdown); - auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, SetArrayIndex, Args(int arrayIndex), Args(arrayIndex)); - auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, SetHotKey, Args(int verbIconTriggerKey), Args(verbIconTriggerKey)); - auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, eastl::string16, GetIconName, Args(eastl::string16* iconName, bool includeLevel), Args(iconName, includeLevel)); - auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, eastl::string16, GetIconDescription, Args(eastl::string16* iconDesc), Args(iconDesc)); -} -#endif \ No newline at end of file