{"id":17845536,"url":"https://github.com/emd4600/spore-modapi","last_synced_at":"2025-12-28T09:33:17.529Z","repository":{"id":44355975,"uuid":"92312193","full_name":"emd4600/Spore-ModAPI","owner":"emd4600","description":"A C++ library that allows you to create advanced mods for Spore (user interface, shaders,...)","archived":false,"fork":false,"pushed_at":"2024-10-23T22:24:54.000Z","size":203525,"stargazers_count":63,"open_issues_count":31,"forks_count":13,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-24T11:26:54.108Z","etag":null,"topics":["cpp","dll-injection","mod","sdk","spore"],"latest_commit_sha":null,"homepage":"https://emd4600.github.io/Spore-ModAPI","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emd4600.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-24T16:14:04.000Z","updated_at":"2024-10-23T22:21:41.000Z","dependencies_parsed_at":"2023-12-30T01:42:57.420Z","dependency_job_id":"8f9b2991-9512-4113-bd26-9e952bb57a87","html_url":"https://github.com/emd4600/Spore-ModAPI","commit_stats":null,"previous_names":[],"tags_count":119,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emd4600%2FSpore-ModAPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emd4600%2FSpore-ModAPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emd4600%2FSpore-ModAPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emd4600%2FSpore-ModAPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emd4600","download_url":"https://codeload.github.com/emd4600/Spore-ModAPI/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247704571,"owners_count":20982298,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","dll-injection","mod","sdk","spore"],"created_at":"2024-10-27T21:36:10.810Z","updated_at":"2025-12-28T09:33:17.456Z","avatar_url":"https://github.com/emd4600.png","language":"C++","readme":"# Spore ModAPI SDK\n\nThis GitHub page hosts the Spore ModAPI development kit, used to create Spore mods with C++. \nTo use those mods, you need the [ModAPI Launcher and Installers](http://davoonline.com/sporemodder/rob55rod/ModAPI/Public/).\n\nThe **Spore ModAPI SDK** allows you to create C++ mods for Spore. These mods are compiled into `.dll` files,\nthat can then be used by the **[ModAPI Launcher Kit](http://davoonline.com/sporemodder/rob55rod/ModAPI/Public/index.html)** to inject them into Spore.\n\nThe documentation of the SDK is available here: https://emd4600.github.io/Spore-ModAPI/\n\nInstructions about download, installation and updating can be found [in this tutorial](https://emd4600.github.io/Spore-ModAPI/_installation.html).\n\nThe source code can be found in this GitHub repository. If you want to see the SDK in action, check the [list of open source mods](https://github.com/emd4600/SporeModder-FX/wiki/List-of-open-source-mods).\nThis project also includes the source code of some example mods made with the ModAPI SDK:\n - [ModCreatorKit](https://github.com/emd4600/Spore-ModAPI/tree/master/Projects/Example%20Projects/ModCreatorKit#modcreatorkit)\n - [GmdlExport](https://github.com/emd4600/Spore-ModAPI/tree/master/Projects/Example%20Projects/GmdlExport)\n - [EditorPlayModeNoBounds](https://github.com/emd4600/Spore-ModAPI/tree/master/Projects/Example%20Projects/EditorPlayModeNoBounds)\n - [SpaceToolCheat](https://github.com/emd4600/Spore-ModAPI/tree/master/Projects/Example%20Projects/SpaceToolCheat)\n\nTo compile the core DLLs (unless you want to develop the SDK itself, you don't need to do this):\n 1. Open the Visual Studio Command Prompt\n 2. Navigate to the SDK root directory.\n 3. Execute `msbuild \"Spore ModAPI\" -t:BuildDlls -p:BuildVer=177 -p:Config=Release` (changing the version and config accordingly)\n\n## Working with Ghidra\n\nIf you want to extend the SDK, or just want to investigate Spore's source code, you can use the free program [Ghidra](https://ghidra-sre.org/) to do so. The SDK includes a plugin and some files, that can be used to add all the known data from the SDK into Ghidra. These are prepared to work with Ghidra's function decompiler, making reverse engineering much easier:\n\n![](https://i.imgur.com/pCE2zPL.png)\n\nTo use them:\n 1. Open your project in Ghidra.\n 2. If you hadn't done it yet, analyze the executable (this finds all functions).\n 3. Open `Windows \u003e Script Manager`.\n 4. On the top bar of the new window, click on the `Manage Script Directories` ![](https://i.imgur.com/McdNx46.png)\n 5. On the popup window, click on the `+` button and search the `Spore ModAPI SDK/SDKtoGhidra/GhidraScript` folder in your SDK installation.\n 6. Close that popup and go back to the script manager, find the `ImportSporeSDK.java` script (it's in the `Data` category).\n 7. Execute it: it will ask for a file, select the `Spore ModAPI SDK/SDKtoGhidra/SporeGhidra_march2017.xml` (or `SporeGhidra_disk.xml` if you use a disk Spore installation).\n 8. Wait for it to complete; in the console, you can see all the functions and data types that have been added.\n\nKeep in mind that Ghidra's decompiler is only an approximation, and it will not produce code that is directly executable on the SDK. There are several differences to keep in mind, among others:\n - Ghidra data types have no inheritance, so the decompiler isn't aware of superclass/subclass relationships.\n - Ghidra does not understand virtual functions. When calling a virtual function, Ghidra first grabs the function pointer from the virtual function table, and then executes it.\n - Ghidra does not understand `intrusive_ptr`s, which means the code it generates makes calls to `AddRef()` and `Release()` (which you never see in the SDK).\n\n### Generating Ghidra files (only for SDK maintainers)\n\nIf you are extending the SDK and need to update the Ghidra files, you need to install Python 3.9 (at least) and the library `libclang`, then run `extract.py`.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femd4600%2Fspore-modapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femd4600%2Fspore-modapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femd4600%2Fspore-modapi/lists"}