Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
c7a4a45
cSpeciesProfile update
A-xesey Dec 29, 2025
fcec101
Add enum Ability types and rename cSpeciesProfile variables
A-xesey Dec 29, 2025
fdda447
Merge branch 'master' of https://github.com/A-xesey/Spore-ModAPI
A-xesey Dec 29, 2025
d180c42
Update cSpeciesProfile and SimulatorEnums
A-xesey Dec 29, 2025
40af39d
edit AbilityTypes names
A-xesey Dec 29, 2025
63edd46
Update plant's functions
A-xesey Dec 30, 2025
3244f67
VerbIconData update
A-xesey Jan 4, 2026
182a8b8
VerbIconData update
A-xesey Jan 4, 2026
7da2ada
modAPI folder update
A-xesey Jan 6, 2026
18e8681
Revert "modAPI folder update"
A-xesey Jan 6, 2026
2dd5e60
Reapply "modAPI folder update"
A-xesey Jan 6, 2026
48575aa
Add ThumbnailManager and SPUILargeAssetView objects, editing Addresse…
A-xesey Jan 18, 2026
f6048f0
Merge branch 'update1' of https://github.com/A-xesey/Spore-ModAPI int…
A-xesey Jan 18, 2026
1efd343
deletedVerbIconData.cpp once again
A-xesey Jan 18, 2026
54bb0fa
cSpeciesRelationshipManager
A-xesey Jan 23, 2026
1feda1a
Added new VerbIcon classes and cSPUIPropertyLayout class
A-xesey Feb 2, 2026
d101916
Update AssetViewManager.h
A-xesey Feb 2, 2026
f1cb015
Add Get/SetSkin functions to EditorModel class
A-xesey Feb 5, 2026
22c2d06
Update Editor.h
A-xesey Feb 18, 2026
67adb45
Update Editor.h
A-xesey Feb 18, 2026
2dc29fb
Update VerbIconData.h
A-xesey Feb 18, 2026
b7f0aba
Update GameViewManager.h
A-xesey Feb 18, 2026
609c096
Update Editor.h
A-xesey Mar 3, 2026
5952277
Update VerbIconData.h
A-xesey Mar 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 30 additions & 3 deletions Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include <Spore\Editors\cEditorAnimWorld.h>
#include <Spore\Editors\cEditorSkinMesh.h>
#include <Spore\Editors\cCreatureDataResource.h>
#include <Spore\Editors\VerbIconData.h>

#ifdef SDK_TO_GHIDRA
namespace Editors
Expand Down Expand Up @@ -82,9 +83,21 @@ namespace Editors
DefineAddress(HandleMessage, SelectAddress(0x591C80, 0x591FA0));


DefineAddress(GetEditorForAssetType, SelectAddress(0x00433010, 0x004333e0));
DefineAddress(GetNameForAssetType, SelectAddress(0x004badc0, 0x004bba50));
DefineAddress(GetTypeIDForAssetType, SelectAddress(0x004bb110, 0x004bbda0));
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(EditorModel)
{
DefineAddress(GetSkinEffect, SelectAddress(0x4a8790, 0x4ae180));
DefineAddress(SetSkinEffect, SelectAddress(0x4a8820, 0x4ae210));
DefineAddress(GetSkinEffectSeed, SelectAddress(0x4a87b0, 0x4ae1a0));
DefineAddress(SetSkinEffectSeed, SelectAddress(0x4a8840, 0x4ae230));
}

namespace Addresses(EditorCamera)
Expand Down Expand Up @@ -250,5 +263,19 @@ namespace Editors
DefineAddress(SetWindowVisible, SelectAddress(0x635450, 0x635750));
DefineAddress(FindWindowByID, SelectAddress(0x634AB0, 0x634DB0));
}

namespace Addresses(VerbIconData)
{
DefineAddress(AddRef, SelectAddress(0x6520a0, 0xc6ab00));
DefineAddress(Release, SelectAddress(0x5cd9f0, 0x7b87b0));
DefineAddress(Dispose, SelectAddress(0x597710, 0x59eff0));
DefineAddress(Cast, 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
26 changes: 26 additions & 0 deletions Spore ModAPI/SourceCode/DLL/AddressesGraphics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
39 changes: 39 additions & 0 deletions Spore ModAPI/SourceCode/DLL/AddressesSimulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@
#include <Spore\Simulator\SubSystem\GamePlantManager.h>
#include <Spore\Simulator\SubSystem\UIAssetDiscoveryManager.h>
#include <Spore\Simulator\SubSystem\ObstacleManager.h>
#include <Spore\Simulator\SubSystem\cSpeciesRelationshipManager.h>
#include <Spore\Simulator\NounClassFactories.h>

namespace Addresses(Simulator)
Expand Down Expand Up @@ -1214,6 +1215,44 @@ namespace Simulator
namespace Addresses(cNpcTribeController) {
DefineAddress(Get, SelectAddress(0xCC8330, 0xCC8C90));
}

namespace Addresses(IGonzagoSubsystem) {
DefineAddress(AddRef, SelectAddress(0xebb180, 0x76e620));
DefineAddress(Release, SelectAddress(0x74f1a0, 0xb0bc60));
DefineAddress(InitGonzagoSubsystem, SelectAddress(0xb78fc0, 0xba3160));
DefineAddress(ShutdownGonzagoSubsystem, SelectAddress(0xb78640, 0xba28a0));
DefineAddress(GetGonzagoSubsystemName, SelectAddress(0xb78670, 0xba28e0));
DefineAddress(PreGameModeTransition, SelectAddress(0xb31a40, 0xb5ba40));
DefineAddress(PostGameModeTransition, SelectAddress(0xb31a10, 0xb5ba10));
DefineAddress(GetPreModeTransitionState, SelectAddress(0x69f450, 0xfc7e10));
DefineAddress(GetPostModeTransitionState, SelectAddress(0xf5c360, 0x7f55c0));
DefineAddress(CheckGonzagoSubsystemInitState, SelectAddress(0x100b4a0, 0xba28d0));
DefineAddress(Write, SelectAddress(0xb78560, 0xba27c0));
DefineAddress(Read, SelectAddress(0xb785d0, 0xba2830));
DefineAddress(PostLoad, SelectAddress(0x105fec0, 0x1082a20));
DefineAddress(DisposeAttributeToXML, SelectAddress(0xb79920, 0xba3980));
DefineAddress(PreUpdateTick, SelectAddress(0xb32f60, 0xb267d0));
DefineAddress(PostUpdateTick, SelectAddress(0xb32f60, 0xb267d0));
DefineAddress(BeginPreGameModeTransition, SelectAddress(0xb31990, 0xb5b990));
DefineAddress(BeginPostGameModeTransition, SelectAddress(0xb319b0, 0xb5b9b0));
DefineAddress(EndPreGameModeTransition, SelectAddress(0xb319d0, 0xb5b9d0));
DefineAddress(EndPostGameModeTransition, SelectAddress(0xb319f0, 0xb5b9f0));
}

namespace Addresses(cSpeciesRelationshipManager) {
DefineAddress(Get, SelectAddress(0xb141b0, 0xb3d5c0));

DefineAddress(Dispose, SelectAddress(0xb7a0d0, 0xba40c0));
DefineAddress(HandleMessage, SelectAddress(0xb78b00, 0xba2dc0));
DefineAddress(AddRef, SelectAddress(0xfee650, 0x671f20));
DefineAddress(Release, SelectAddress(0xf1aae0, 0xae0620));
DefineAddress(GetType, SelectAddress(0xb78500, 0xba2760));
DefineAddress(GetFieldValue, SelectAddress(0xb78520, 0xba2780));
DefineAddress(GetClassID, SelectAddress(0xb78680, 0xba28f0));
}
namespace Addresses(cSpeciesRelationshipManagerDispose) {
DefineAddress(Dispose, SelectAddress(0xb7a0d0, 0xba40c0));
}
}

#ifdef SDK_TO_GHIDRA
Expand Down
21 changes: 21 additions & 0 deletions Spore ModAPI/SourceCode/DLL/AddressesSporepedia.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
#include <Spore\Sporepedia\AssetData.h>
#include <Spore\Sporepedia\ObjectTemplateDB.h>
#include <Spore\Sporepedia\AssetViewManager.h>
#include <Spore\Sporepedia\cSPUILargeAssetView.h>
#include <Spore\Sporepedia\ISPUILargeAssetView.h>

namespace Sporepedia
{
Expand Down Expand Up @@ -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)
Expand Down
6 changes: 6 additions & 0 deletions Spore ModAPI/SourceCode/DLL/AddressesUI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include <Spore\UI\GameSettings.h>
#include <Spore\UI\EditorNamePanel.h>
#include <Spore\UI\SimulatorRollovers.h>
#include <Spore\UI\cSPUIPropertyLayout.h>

namespace UI
{
Expand Down Expand Up @@ -46,6 +47,11 @@ namespace UI
DefineAddress(Initialize, SelectAddress(0x835800, 0x835080));
}

namespace Addresses(cSPUIPropertyLayout)
{
DefineAddress(SetProperty, SelectAddress(0x801640, 0x828d10));
}

namespace Addresses(GameSettings)
{
DefineAddress(Show, SelectAddress(0x603430, 0x603670));
Expand Down
46 changes: 29 additions & 17 deletions Spore ModAPI/SourceCode/Editors/Editor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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()
{
}

Expand All @@ -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;
Expand Down Expand Up @@ -198,5 +198,17 @@ 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_VOID(cEditor, ComputeCreatureVerbIcons, Args(cCreatureDataResource* creatureData, cSPVerbTrayCollection* 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));

auto_METHOD(EditorModel, int, GetSkinEffect, Args(int skinLayout), Args(skinLayout));

auto_METHOD(EditorModel, int, GetSkinEffectSeed, Args(int skinLayout), Args(skinLayout));

auto_METHOD_VOID(EditorModel, SetSkinEffect, Args(int skinLayout, uint32_t effectID), Args(skinLayout, effectID));
auto_METHOD_VOID(EditorModel, SetSkinEffectSeed, Args(int skinLayout, uint32_t seed), Args(skinLayout, seed));
}
#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#ifndef MODAPI_DLL_EXPORT
#include <Spore\Simulator\SubSystem\cSpeciesRelationshipManager.h>

namespace Simulator
{
auto_STATIC_METHOD_(cSpeciesRelationshipManager, cSpeciesRelationshipManager*, Get);
}
#endif
10 changes: 10 additions & 0 deletions Spore ModAPI/SourceCode/UI/cSPUIPropertyLayout.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#ifndef MODAPI_DLL_EXPORT
#include <Spore\UI\cSPUIPropertyLayout.h>

namespace UI
{
auto_METHOD(cSPUIPropertyLayout, bool, SetProperty,
Args(uint32_t windowID, App::Property* setProperty, uint32_t unk, int* unk2),
Args(windowID, setProperty, unk, unk2));
}
#endif
24 changes: 22 additions & 2 deletions Spore ModAPI/Spore ModAPI.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -327,8 +327,17 @@
<ClInclude Include="Spore\App\IDGenerator.h" />
<ClInclude Include="Spore\App\JobManager.h" />
<ClInclude Include="Spore\App\Thumbnail_cImportExport.h" />
<ClInclude Include="Spore\Graphics\LayerSequence.h" />
<ClInclude Include="Spore\OpenSSL.h" />
<ClInclude Include="Spore\Editors\cSPEditorVerbTrayCollection.h" />
<ClInclude Include="Spore\Editors\cSPEditorVerbIcon.h" />
<ClInclude Include="Spore\Editors\cSPEditorVerbIconTray.h" />
<ClInclude Include="Spore\UI\cSPUIPropertyLayout.h" />
<ClInclude Include="Spore\Editors\cSPVerbIconRollover.h" />
<ClInclude Include="Spore\Editors\cSPVerbTrayCollection.h" />
<ClInclude Include="Spore\Editors\VerbIconEnums.h" />
<ClInclude Include="Spore\Editors\VerbIconStructs.h" />
<ClInclude Include="Spore\Graphics\cThumbnailManager.h" />
<ClInclude Include="Spore\Graphics\LayerSequence.h" />
<ClInclude Include="Spore\OpenSSL.h" />
<ClInclude Include="Spore\Resource\FakeRecord.h" />
<ClInclude Include="Spore\Simulator\cBaseSimulatorInputStrategy.h" />
<ClInclude Include="Spore\Simulator\cObstacle.h" />
Expand All @@ -338,6 +347,10 @@
<ClInclude Include="Spore\Simulator\cTribeToolData.h" />
<ClInclude Include="Spore\Simulator\SubSystem\BundleManager.h" />
<ClInclude Include="Spore\Simulator\SubSystem\CinematicManager.h" />
<ClInclude Include="Spore\Simulator\SubSystem\cSpeciesRelationshipManager.h">
<SubType>
</SubType>
</ClInclude>
<ClInclude Include="Spore\Simulator\SubSystem\GamePlantManager.h" />
<ClInclude Include="Spore\Simulator\SubSystem\ObstacleManager.h" />
<ClInclude Include="Spore\Simulator\SubSystem\UIAssetDiscoveryManager.h" />
Expand Down Expand Up @@ -504,6 +517,8 @@
<ClInclude Include="Spore\Skinner\cSkinPainterJobCopyTex1AlphaToTex0.h" />
<ClInclude Include="Spore\Skinner\cSkinPainterJob.h" />
<ClInclude Include="Spore\Sporepedia\AssetViewManager.h" />
<ClInclude Include="Spore\Sporepedia\cSPUILargeAssetView.h" />
<ClInclude Include="Spore\Sporepedia\ISPUILargeAssetView.h" />
<ClInclude Include="Spore\Sporepedia\ObjectTemplateDB.h" />
<ClInclude Include="Spore\Sporepedia\OTDBParameters.h" />
<ClInclude Include="Spore\Simulator\cCivilization.h" />
Expand Down Expand Up @@ -1068,6 +1083,7 @@
<ClCompile Include="SourceCode\Swarm\SwarmManager.cpp" />
<ClCompile Include="SourceCode\Clock.cpp" />
<ClCompile Include="SourceCode\Terrain\Terrain.cpp" />
<ClCompile Include="SourceCode\UI\cSPUIPropertyLayout.cpp" />
<ClCompile Include="SourceCode\UI\HintManager.cpp" />
<ClCompile Include="SourceCode\UI\LayerManager.cpp" />
<ClCompile Include="SourceCode\UI\ScrollFrame.cpp" />
Expand All @@ -1094,6 +1110,10 @@
<ClCompile Include="SourceCode\Object.cpp" />
<ClCompile Include="SourceCode\ResourceKey.cpp" />
<ClCompile Include="SourceCode\UTFWin\WindowManager.cpp" />
<ClCompile Include="SourceCode\Simulator\cSpeciesRelationshipManager.cpp">
<SubType>
</SubType>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Natvis Include="EASTL.natvis" />
Expand Down
Loading