South Park Tower Defense PC Port
South Park Tower Defense PC Port is a native port of South Park Let's Go Tower Defense Play to Windows and Linux with a launcher for graphics and control options.
- Type: PC port
- Game: South Park: Let's Go Tower Defense Play!
- Runs on Windows and Linux
- By TekRantGaming
- Latest release v0.1.0, 2026-10-17
- Source: https://github.com/TekRantGaming/south-park-tower-defense-recompiled
README
South Park: Let's Go Tower Defense Play! on PC, running natively, with a launcher and the options of a modern PC release.
The original Xbox 360 game code, translated to native PC code with the ReXGlue SDK. No game files included: bring your own South Park: Let's Go Tower Defense Play! Xbox Live Arcade package.
At a glance
| 🖥️ Native Windows and Linux builds, no emulator | 🎮 Any controller, or the keyboard with your own bindings | 🗂️ Saves and settings one click away in the launcher |
| ✨ Up to 8K, FXAA, MSAA and 16x texture filtering | ⏱️ The console's 60 FPS, paced exactly like the Xbox 360 | 🔁 Remap any button, deadzone, vibration strength |
| 🏆 Achievements with Xbox 360-style pop-ups | 📦 Install from your own package in a few clicks | 🔄 Updates itself from this page |
| 🐧 Linux and Steam Deck as a single AppImage | 🌍 Six languages: English, French, German, Spanish, Italian, Japanese | 🪟 Windowed or fullscreen, any monitor, F11 to switch |
The launcher
Display: window, monitor, VSync, aspect ratio · Graphics: render resolution, anti-aliasing, filtering
Controls: remapping, deadzone, vibration, keyboard · Achievements: the game's 12, with pop-ups and sound
[!NOTE] Early version. The port boots, plays its movies and runs levels on Windows and Linux, but a full play-through hasn't been confirmed yet. Please report anything that goes wrong. What changed in each version is on the releases page.
Getting started
You need: Windows 10 or 11 (64-bit) and a DirectX 12 graphics card, or 64-bit Linux / a Steam Deck with Vulkan; about 1 GB of free space; and your own South Park: Let's Go Tower Defense Play! Xbox Live Arcade package (see Which version you need).
Windows
- Download SouthParkTD-...-windows-x64.zip from the latest release and unzip it anywhere.
- Run south_park_td.exe. The launcher opens.
- On the Play page click Install from package... and pick your package file (or drop it onto the window). Its files (about 880 MB) are copied into a
gamefolder next to the exe. - Press PLAY.
Linux and Steam Deck
- Download SouthParkTD-...-linux-x86_64.AppImage from the latest release.
- Make it executable: right-click > Properties > Permissions > Is executable (on a Steam Deck, in Desktop Mode), or
chmod +xit. - Run it and install from your package as on Windows. The game files go in a
gamefolder next to the AppImage. - On a Steam Deck, add it to Steam with Games > Add a Non-Steam Game and play it from Game Mode. Start presses Play in the launcher.
The download contains only this port. No game files are included: they come from your own package. Saves go in Documents\south_park_td on Windows (the launcher's About page opens the save folder on any system); settings are saved to south_park_td.toml next to the program.
Which version you need
The port is made for this release only. Other versions, and title updates, will not work.
| Game | South Park: Let's Go Tower Defense Play! (Xbox Live Arcade, 2009) |
| Title ID | 58410931 |
| Content type | 000D0000 (Xbox Live Arcade) |
| Where it is on an Xbox 360 drive | Content\0000000000000000\58410931\000D0000\ |
| Package | a LIVE file with a long hexadecimal name, about 925 MB |
| Game version | default.xex version 0.0.1.2, built 2009-09-09 |
default.xex | 8,499,200 bytes, CRC32 A21E2AF7, SHA-1 6847374F5B8D1C1374AB08D08C81665168060E22 |
The launcher checks the title ID when you pick the package, and checks default.xex after installing. The package file's own checksum differs from player to player (its header carries the owner's licence), so default.xex is what identifies the version.
The launcher
Everything is set up before the game starts, with a controller, the keyboard or the mouse. It uses art from your own copy of the game: the package's banner and icon, and the title screen once you have played. Settings are saved to a plain text file, south_park_td.toml, next to the game.
![]() |
Play
|
Display
| ![]() |
![]() |
Graphics
|
Gameplay
The game runs one step per frame at the console's 60 Hz, so there is deliberately no frame-rate setting: a higher rate would only make it run fast. | ![]() |
![]() |
Controls
|
Achievements
| ![]() |
![]() |
About
|
Xbox 360 vs PC port
| Xbox 360 | PC port | |
|---|---|---|
| Resolution | 1280 x 720 | up to 7680 x 4320 |
| Frame rate | 60 fps | 60 fps, paced like the console |
| Anti-aliasing | console | FXAA, 2x MSAA, supersampling |
| Texture filtering | console | up to 16x |
| Display | TV | windowed or fullscreen, any monitor |
| Controls | Xbox 360 controller | any controller, remapping, keyboard |
| Achievement pop-ups | console | Xbox 360 style, with your choice of sound |
Good to know
Hotkeys
| Key | Action |
|---|---|
| F2 | frame counter |
| F3 | performance overlay |
| F11 or Alt+Enter | fullscreen / windowed |
| Shift while starting | open the launcher |
Known issues
- Xbox LIVE game (online play) does not work. Local play does.
- On the game-mode screen, the locked HARD difficulty is drawn with garbled letters.
- The first time you see a new effect it has to be prepared, which can cause a short pause. Effects are saved, so this only happens once.
Updates
When the launcher opens it asks GitHub whether a newer version of the port is out, and offers to install it. Update now downloads it, replaces the port's own files and restarts the launcher; your installed game, saves and settings stay as they are. Change this on the About page (Ask, Automatic or Off).
Reporting a problem
Everything useful is in the logs folder next to the program:
south_park_td.logdescribes your settings, and every 10 seconds notes the frame rate, the 1% low and any frames that took over 50 or 100 ms.- If the game crashes on Windows,
crash-<date>.txtandcrash-<date>.dmpappear next to it.
Please attach them to an issue together with your CPU, graphics card and operating system.
About the port
South Park: Let's Go Tower Defense Play! came out on Xbox Live Arcade in 2009. Stan, Kyle, Cartman and Kenny defend South Park from waves of enemies by throwing snowballs, building towers and calling in the town's other kids. It was never released on PC.
This port translates the Xbox 360 game's own code to C++ ahead of time and runs it natively on Windows and Linux with the ReXGlue SDK. NOTES.md has the technical details.
The title-screen crash
Run as-is, the game crashes a few seconds after the title screen whenever a controller is connected. At start-up it reads its save data from the player's profile. For a profile that has never saved, the runtime answered "no value", where the console answers "default". The game took that as a corrupt save, marked the player as failed, and then crashed looking the player up. This port answers as the console does (sptd/src/profile_fix.cpp). Existing saves are untouched.
Building from source (for developers)
You need Visual Studio 2022 Build Tools with Clang, CMake and Ninja, and your own package.
git clone --recursive https://github.com/TekRantGaming/south-park-tower-defense-recompiled
cd south-park-tower-defense-recompiled
.\setup.ps1 -Package "<path to your 58410931 package>" # downloads the SDK, unpacks your package, translates the code
sptd\build.bat sptd-release # compiles
.\tools\package_windows.ps1 -Version v0.1.0 # optional: the release zip
The finished game is in sptd\out\build\sptd-release. Point it at your files with --game_data_root, or keep them in a game folder next to the exe. The Linux AppImage is built in WSL (Ubuntu 24.04) or on Linux after setup.ps1: tools/build_appimage.sh v0.1.0.
For testing, sptd\build.bat sptd-dev adds developer tracing hooks, --sptd_null_trace=true logs a symbolized stack when the game touches the null page, and SPTD_DUMP_IMAGE=<file> writes the decrypted game image for tools/ppc_dis.py.
Credits
- South Park: Let's Go Tower Defense Play! by Doublesix and South Park Digital Studios, 2009.
- ReXGlue SDK, which does the code translation and runs the game, built on the work of Xenia and XenonRecomp.
- superheher/south-park-tower-defence-recomp, the first port of this game (Linux), whose findings this port reuses.
- TRG Launcher, shared with the Earthworm Jim HD, Outpost Kaloki X and King Kong ports.
[!NOTE] AI disclosure: this port was made almost entirely with Claude Code (Anthropic). The repository owner directed and tested the work; the AI did the analysis, code, tools and documentation.
[!IMPORTANT] This project is not affiliated with or endorsed by South Park Digital Studios, Comedy Central, Paramount, Doublesix or Microsoft. It contains no game code or assets. Do not open issues asking for game files.

