A mod for Skylanders Spyro's Adventure on PC that adds better support for the game on Linux and Windows
Important
This mod modifies game memory and may lead to instability or crashes. Use at your own risk!
Disclaimer: For some features I relied heavily on AI, since I do not yet have the necessary knowledge to implement those myself.
- In-game mod UI to easily change mod settings & operate the emulated portal (if enabled)
- press
F1on your keyboard orL3+R3on a controller (both sticks pressed simultaneously) to open the mod UI
- press
- Emulated Portal of Power support (allows you to use Skylanders without a physical portal, for more info see EMULATED_PORTAL.md
- Linux support for the Portal of Power
- WinUSB support for the Portal of Power on Windows (the game can now use the same drivers as emulators like Cemu, RPCS3, ...)
- Windowed & borderless windowed mode on Windows
- Custom resolution support
- VSync toggle
- FPS cap
- Supersampling (up to 2x) (renders the game at a higher resolution and then downscales it to the display resolution)
- Anisotropic filtering (up to 16x)
- Texture sharpness control
- Grass rendering toggle (disabling grass rendering brings major performance improvements in areas with high foliage density)
- Custom textures can be loaded from the
ssa-improved/texturesfolder - For instructions on how to create custom textures, see the Usage section below
- there are 2 ways to configure the mod settings:
- through the in-game UI
- press
F1on your keyboard orL3+R3on a controller (both sticks pressed simultaneously) to open the mod UI - in the UI you can change the settings and they will automatically be saved to the
ssa_impr_mod.inifile (some settings require a game restart to take effect, these will be indicated in the UI)
- press
- by editing the
ssa_impr_mod.inifile directly with a text editor- after launching the game with the mod installed for the first time, a folder called
ssa-improvedwill be created in your game directory (whereSkylanders.exeis located) - inside this folder you will find a
ssa_impr_mod.inifile - open this file with a text editor to configure the mod settings
- after launching the game with the mod installed for the first time, a folder called
- through the in-game UI
| Setting | Default | Description |
|---|---|---|
Windowed |
1 |
set to 1 to launch the game in windowed mode, or 0 for fullscreen |
Borderless |
1 |
set to 1 to launch the game in borderless windowed mode, or 0 for normal windowed mode (requires Windowed=1) |
ResolutionW |
0 |
set the horizontal resolution of the game, set to 0 to use the desktop resolution |
ResolutionH |
0 |
set the vertical resolution of the game, set to 0 to use the desktop resolution |
VSync |
1 |
set to 1 to enable VSync, or 0 to disable it |
FpsCap |
0 |
set the maximum FPS the game can run at, set to 0 for unlimited FPS |
RenderRes |
1 |
allows the game to render at higher resolutions internally (set to 0 to disable) |
Supersampling |
1.0 |
Multiplies the internal render resolution for improved image quality and scales the image down to your chosen / desktop resolution (requires RenderRes=1)E.g. at 1920x1080 desktop resolution, Supersampling=2.0 renders at 3840x2160, meanwhile Supersampling=1.0 renders at 1920x1080 |
Anisotropy |
8 |
set the level of anisotropic filtering (valid values: 1 (off), 2, 4, 8, 16) |
TextureSharpness |
10 |
set the sharpness of textures (valid values: 0 (off) to 20 (max)) |
DisableGrass |
0 |
Disabling grass rendering (value = 1) brings major performance improvements in areas with high foliage density |
EmulatedPortal |
0 |
Use a fully emulated portal instead of a physical USB device. When enabled (value = 1) physical portals are ignored and Skylanders can be chosen over the in-game mod UI. |
FontScale |
1.0 |
Scale of the font of the in-game UI (1.0 = default size, 2.0 = double size, etc.) |
TextureMods |
1 |
Set to 1 to enable loading of custom textures from the ssa-improved/textures folder, or 0 to disable it. |
TextureDump |
0 |
Set to 1 to enable dumping of in-game textures to the ssa-improved/dumps folder, or 0 to disable it. Useful for modders for creating custom textures. |
While technically not required for this mod, it is recommended to download the latest version of SecuROMLoader.
- Download the latest release from the Releases
- Extract the contents of the ZIP file
- Move only the
version.dllfile from the extracted folder to your Skylanders Spyro's Adventure installation directory (whereSkylanders.exeis located)- e.g.
C:/Program Files (x86)/Activision/Skylanders Spyro's Adventure(TM)
- e.g.
- Ensure you have the latest Visual C++ Redistributable installed on your system
- Download the latest release from the Releases
- Extract the contents of the ZIP file
- You will find a folder named
SSA Improvedcontaining 2 folders (Windows&Linux), thisREADME.mdand a license file - Open the
Windowsfolder. You will find the following files:xinput1_3.dllversion.json
- Move all the files mentioned above to your Skylanders Spyro's Adventure installation directory (where
Skylanders.exeis located)- e.g.
C:/Program Files (x86)/Activision/Skylanders Spyro's Adventure(TM)
- e.g.
- Done🎉 Run the game as administrator at least once to allow the mod to create necessary files and folders
Note: you need to have Python installed on your system (most Linux distributions come with Python pre-installed)
- Download the latest release from the Releases
- Extract the contents of the ZIP file
- You will find a folder named
SSA Improvedcontaining 2 folders (Windows&Linux), thisREADME.mdand a license file - Open the
Linuxfolder. You will find the following files:xinput1_3.dllportal_launch.shportal_proxy.pyversion.json
- Move all the files mentioned above to your Skylanders Spyro's Adventure installation directory (where
Skylanders.exeis located) - Inside your Skylanders Spyro's Adventure installation directory make
portal_launch.shexecutable- Steam Deck: right-click the file in the file manager →
Properties→Permissionstab → checkAllow executing file as program→ clickOK
- Steam Deck: right-click the file in the file manager →
- Add Skylanders Spyro's Adventure to Steam
- Steam Deck: right-click on
Skylanders.exein the file manager →Add to Steam
- Steam Deck: right-click on
- Use
Proton 10.0-4as the compatibility tool for the game (or any other, the mentioned version is confirmed working) - Add
./portal_launch.sh %command%to your launch options for Skylanders Spyro's Adventure in Steam - Done🎉 You can now launch the game from Steam
- see EMULATED_PORTAL.md for detailed instructions on how to use the emulated portal and create custom Skylanders for it
- Enable texture dumping in the config file or UI to dump in-game textures to the
ssa-improved/dumps/texturesfolder, these can be used as a base for creating custom textures- Dumped textures follow the naming convention
<HASH>_<W>x<H>_<FMT>.dds
- Dumped textures follow the naming convention
- Open the dumped texture you want to replace / edit in an image editing software (e.g. GIMP)
- Edit the texture as you like, then export it as a
.ddsfile named<HASH>.dds(e.g. if the dumped texture isABC123_512x512_DXT5.dds, name your fileABC123.dds) and place it in thessa-improved/textures/folder- Resolution: Replacements can be any resolution, but should have the same aspect ratio as the original (otherwise they will appear stretched), and both dimensions must be multiples of 4 (power-of-two recommended, e.g. 256x256, 512x512, but something like 512x256 also works)
- Format: If you're unsure, keep the same compression format as the original (
DXT1,DXT5, etc.). If you want to learn more about these texture formats and which one is the best fit for you, see this guide (archived) - Mipmaps: These are reduced-size copies of your texture used for distant objects to improve performance and reduce visual artefacts. If your replaced texture will be used for distant objects, it's recommended to generate mipmaps when exporting your texture (in practice: generate mipmaps for everything except UI textures)
- Texture mods can be grouped in subfolders inside the
ssa-improved/textures
- In the in-game UI, click Reload Textures to see your changes immediately without restarting the game
- Developed by jacee
- Portal Emulation based on...
- UI created with...
- ImGui
- Icons by Toys for Bob
- Varela Round font by The Varela Round Project Authors (SIL Open Font License, 1.1)
- Material Design Icons by Google (Apache License 2.0)
- IconFontCppHeaders by Juliette Foucaut and Doug Binks (zlib License)
git clone --recurse-submodules https://github.com/j4ceee/ssa-improved.git
cd ssa-improved
- Open the project folder in CLion
- CLion will automatically detect the CMake configuration and set up the project
- Configure your CMake profile (if needed):
- Build type:
Release(orDebugfor development) - Toolchain:
Visual Studio - Generator:
Visual Studio 17 2022
- Build type:
- In the toolbar, select your CMake profile (e.g.,
Release-Visual Studio) - Select the build target
xinput1_3 - Click the Build button
- The compiled DLL will be located in
cmake-build-<config>/out/<config>/xinput1_3.dlland copied to the Skylanders Spyro's Adventure directory as specified in theCMakeLists.txt
Build Types:
- Debug: Includes extra logging and debugging symbols (larger file size, slower)
- Release: Optimized build for normal use (smaller, faster)
Note: The CMakeLists.txt includes a post-build command that copies the DLL to:
C:/Program Files (x86)/Activision/Skylanders Spyro's Adventure(TM)/
If your game is installed elsewhere, modify line 134 in CMakeLists.txt accordingly.
- Create a build directory
mkdir build - Configure for Release build
...or for Debug build
cmake -DCMAKE_BUILD_TYPE=Release -B .\build\ -G "Visual Studio 17 2022"cmake -DCMAKE_BUILD_TYPE=Debug -B .\build\ -G "Visual Studio 17 2022" - Build
cmake --build build --config Release
The compiled DLL will be in build/out/Release/ or build/out/Debug/
