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.

README

South Park: Let's Go Tower Defense Play! PC Port

South Park: Let's Go Tower Defense Play! on PC, running natively, with a launcher and the options of a modern PC release.

Download for Windows   Download for Linux

Latest release Downloads Platforms


The launcher's Play page Ginger kids storming the school yard A wave reaching the towers Building towers along the path Choosing a game mode

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

The Display page The Graphics page Display: window, monitor, VSync, aspect ratio  ·  Graphics: render resolution, anti-aliasing, filtering



The Controls page The Achievements page 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

  1. Download SouthParkTD-...-windows-x64.zip from the latest release and unzip it anywhere.
  2. Run south_park_td.exe. The launcher opens.
  3. 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 game folder next to the exe.
  4. Press PLAY.

Linux and Steam Deck

  1. Download SouthParkTD-...-linux-x86_64.AppImage from the latest release.
  2. Make it executable: right-click > Properties > Permissions > Is executable (on a Steam Deck, in Desktop Mode), or chmod +x it.
  3. Run it and install from your package as on Windows. The game files go in a game folder next to the AppImage.
  4. 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.

GameSouth Park: Let's Go Tower Defense Play! (Xbox Live Arcade, 2009)
Title ID58410931
Content type000D0000 (Xbox Live Arcade)
Where it is on an Xbox 360 driveContent\0000000000000000\58410931\000D0000\
Packagea LIVE file with a long hexadecimal name, about 925 MB
Game versiondefault.xex version 0.0.1.2, built 2009-09-09
default.xex8,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 page

Play

  • Install from your XBLA package, with the title ID and game version checked
  • Full game or Trial: XBLA games shipped as trials unlocked by buying them; the full game is on by default
  • Show the launcher at startup, or not (hold Shift at start to bring it back)

Display

  • Windowed or fullscreen; F11 or Alt+Enter switches while playing
  • Window size that fits your screen, and which monitor
  • VSync on or off
  • Letterbox 16:9 or stretch to fill
Display page
Graphics page

Graphics

  • Render quality: Native, Quality, Balanced, Performance and Ultra Performance, or Supersample for the cleanest edges
  • Custom resolution from 1x (720p) to 6x (8K)
  • FXAA, real 2x MSAA and texture filtering up to 16x
  • Shader preparing: wait for each new effect the first time (no missing objects), or prepare it in the background

Gameplay

  • Language: English, French, German, Spanish, Italian or Japanese
  • Frame counter in the corner, toggled with F2

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.

Gameplay page
Controls page

Controls

  • Controller or keyboard, with every keyboard binding changeable
  • Stick deadzone, vibration on or off and its strength
  • Invert the left stick's axes
  • Remap any button on your controller

Achievements

  • All 12 achievements with their own pictures, names and gamerscore, read from your copy of the game
  • See which ones you have unlocked
  • Xbox 360-style pop-ups with a sound you can pick (or your own .wav) and its volume
  • A bonus Respect My Authoritah achievement the first time you play
Achievements page
About page

About

  • Updates: ask, automatic or off, and Check now
  • Open your save folder, game folder or settings file in one click
  • Capture the launcher's title-screen art again, or reset every setting

Xbox 360 vs PC port

Xbox 360PC port
Resolution1280 x 720up to 7680 x 4320
Frame rate60 fps60 fps, paced like the console
Anti-aliasingconsoleFXAA, 2x MSAA, supersampling
Texture filteringconsoleup to 16x
DisplayTVwindowed or fullscreen, any monitor
ControlsXbox 360 controllerany controller, remapping, keyboard
Achievement pop-upsconsoleXbox 360 style, with your choice of sound

Good to know

Hotkeys

KeyAction
F2frame counter
F3performance overlay
F11 or Alt+Enterfullscreen / windowed
Shift while startingopen 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.log describes 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>.txt and crash-<date>.dmp appear 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

[!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.