Skylanders: Core of Light

Skylanders: Core of Light is a Windows port and launcher for the Skylanders Xbox 360 games, offering a unified library and profile management.

README

Skylanders: Core of Light

The hub for the recompiled Skylanders games. In the games the Core of Light holds Skylands together; here it ties the six Xbox 360 ports together: one launcher, a library of your Skylanders, profiles, and later online co-op with each player's own portal.

Unofficial fan project, work in progress. Not affiliated with or endorsed by Activision, Toys for Bob or Vicarious Visions. It ships no game data and no artwork: the pictures, texts and music it shows come from your own discs, through the games themselves.

Why this exists

I wanted to play the Xbox 360 Skylanders games on my PC with just a controller, no emulator, and with a nicer picture. That's really all it is: a private fan project. It's public in case someone else wants the same.

How it was made

To be upfront about it: almost all of the code here was written by Claude in Claude Code, the recompile setup, the fixes, the portal menu, the launcher and the installers, and most of the docs too. I decided what to build, said what was broken and played the games a lot. If AI-made projects aren't your thing, that's fair.

The six ports also run on their own: Spyro's Adventure, Giants, Swap Force, Trap Team, SuperChargers, Imaginators.

Play it

You need:

  • Windows 10 or 11 (64-bit) and a graphics card with DirectX 12
  • your own copies of the games as ISOs (or extracted discs): each port's README says which disc it runs. Nothing of the games comes with this project
  • a controller (Xbox or compatible; keyboard and mouse work too). A real Portal of Power is optional: the emulated portal's menu has every figure

Then:

  1. Download CoreOfLightSetup-<version>.exe from the Releases page and run it. It installs just the launcher, about 3 MB (no admin rights needed).
  2. Start Core of Light. The first-run setup asks for your ISOs, one per game (it finds the others in the same folder by itself), checks them, then downloads each game from its Releases page and installs it. Its "Games folder" row picks the drive the games go to, for example a bigger one than the launcher's.
  3. Choose a game and play. When the game asks for a Skylander, the portal menu opens by itself.

Uninstalling goes through Windows' Apps list; it asks whether the games, your saves and your figures should go too.

The games

GameProjectState
Spyro's Adventure (2011)SSARecompChapter 1 playable; portal menu with the game's portraits, hats and upgrades
Giants (2012)GiantsRecompfirst level playable; real 5.1; portal menu with the game's pictures and upgrade trees
Swap Force (2013)SwapForceRecomptutorial and Woodburrow played; swappers; real USB portal
Trap Team (2014)TrapTeamRecompChapter 1 playable; portal menu with the game's collection cards
SuperChargers (2015)SuperChargersRecompfirst level playable; both European discs (En/De and Es/It)
Imaginators (2016)ImaginatorsRecompfirst level playable; German from the PS3 disc

All six are the Xbox 360 versions, recompiled to native Windows with ReXGlue, so they share one toolchain, one portal and one settings menu: 60 FPS and more, 2x or 3x the console's resolution with sharpening, ultrawide, the emulated or a real USB Portal of Power, and a portal menu drawn in each game's own fonts with its own pictures of every figure.

What the launcher does

  • Finds the games (where their installers put them, your games folder, a path in coreoflight.ini, next to the launcher or a developer's build) and checks each disc against the version its port is made for. The games folder can be changed any time in its settings: games copied there (another drive, a network drive, a Linux folder when it runs with Proton) are found with their disc, nothing gets unpacked again.
  • Sets everything up on a first start (no game installed yet): the language, then your discs, found by itself or chosen by hand, with the room they need and what is free, then each chosen game installed and its disc set up, one after the other.
  • Installs a game that isn't there yet with A on its card: the newest setup from the game's Releases page, run silently, then its disc from your ISO.
  • Keeps itself and the games up to date from GitHub Releases (checked once a day, or by hand in its settings). A game with a newer version says "update available" on its card, and A asks: update now (silently; saves, figures, disc and settings stay) or play first; "Update all" on the start screen does every game in one go. A newer launcher is offered at start and restarts itself after the update.
  • Sets up a disc from your ISO: its own file browser, for the pad as well as the keyboard, or drop an ISO on the window; Y in it finds your discs by itself (the ISOs in Downloads, Desktop, Documents and on the drives, each listed by its game). It recognises the game, unpacks the disc into that game's folder and leaves the ISO where it is.
  • A card per game with the active profile's play time, achievements and last save; the game's title music plays while its card is chosen (straight from the game's disc, which each game decodes in about a second).
  • Each game's settings before starting, the same pages as the game's own F4 menu.
  • The figure library: every figure in Documents\Skylanders\Figures with its level, gold, play time, hat, upgrade tree and nickname, by game, each card in its element's colour; a tab for the magic items and adventure packs; "I own it" marks for figures on your shelf without a file; a leaderboard of your figures.
  • Profiles like Xbox accounts: create, rename, pick a picture, delete (with a confirmation); each profile has its own saves, figures and achievements, and the games show its name.
  • One folder for your data: every game keeps its saves, achievements and shader cache in Documents\Skylanders\<game>, next to the figures and pictures (or wherever you move it in the settings). Saves from before, in the games' old folders in Documents, are copied over once; the launcher asks before the old folders go.
  • Gets out of the way while you play: it hides while a game runs and takes no input, so one controller drives only the game.
  • The launcher's own settings: language (German / English), the library's defaults, title music and its volume, animations, fullscreen (also --fullscreen for Steam's launch options), the games folder, the data folder. A game's settings can empty its shader cache.
  • Controller, keyboard or mouse everywhere: the button hints at the bottom follow what you use and can be clicked.

Screenshots are left out of this repository on purpose: they would show the games' artwork, which belongs to Activision.

Everything in detail: docs/launcher.md.

Principles

  • Every game stays playable without the hub. The hub starts a game's own exe and writes its ordinary settings file; no game depends on it.
  • No game data and no original artwork. The owner points the hub at their own discs; pictures and texts come from those files at run time, as the games' portal menus already do.
  • Shared code lives in the shared libraries, so the games and the hub use the same parts: the portal, the portal and settings menus and the figure decoding in tsapZ/skylanders-portal (branch feature/portal-menu), the recompilation runtime in tsapZ/rexglue-sdk (branch skylanders).
  • One figure folder for every game: Documents\Skylanders\Figures, like real figures lying next to the portal, and one data folder around it for all six games.

Planned

PartIssues
HD textures made on your own PC: the launcher upscales a game's textures, can be stopped and picked up again, says how much room they takeSwapForceRecomp#62
Online co-op with each player's own real portal (proposal)#1, #2, #3, docs/online-coop.md

The order and what is next: docs/roadmap.md.

Reporting a problem

Open an issue with the Problem form and say what you did and what happened. The most useful thing to add is the report from Core of Light: LB (the launcher's settings) > Report a problem, or the question that comes up by itself after a crash. It writes one text file to the desktop with the latest logs and settings of every game, with your Windows user name taken out; drag that file into the issue. Without the launcher, each game keeps its logs in the logs folder next to its exe.

Building

Windows, Visual Studio 2022 (C++), CMake and Ninja, from the x64 Native Tools Command Prompt:

git clone --recursive https://github.com/tsapZ/SkylandersCoreOfLight.git
cd SkylandersCoreOfLight
cmake --preset release
cmake --build --preset release

Credits

  • skylanders-portal by TheBiemGamer: the portal library the launcher shares with the games (figure catalog and figure files), here in a fork with the shared menus on top. Submodule; keeps its own license.
  • Dear ImGui by Omar Cornut draws the launcher. Submodule (MIT).
  • Noto Sans by the Noto Project Authors, the font where Windows' Segoe UI isn't there (Wine / Proton), in fonts/ (SIL Open Font License, fonts/OFL.txt).
  • Figure save-data decoding builds on public reverse-engineering of the Skylanders NFC format, among others SkyReader.
  • Reading the Xbox discs follows the XDVDFS format as extract-xiso and Xenia read it.

License

MIT, see LICENSE. Skylanders is a trademark of Activision; this project is not affiliated with or endorsed by Activision, and it ships no game data.