A native PC port of The Simpsons Game (Xbox 360, 2007) for Linux, Steam Deck and Windows, made by statically recompiling the original game code.
The game's PowerPC executable is translated ahead of time into C++ and compiled for x86-64, so the game's own code runs directly on your CPU rather than inside an emulator. Underneath it, the ReXGlue runtime, which is derived from the Xenia project, provides the Xbox 360 kernel, audio, input and graphics layers, with a Vulkan renderer on Linux and Vulkan, Direct3D 12 or an experimental Direct3D 11 renderer on Windows.
This project does not include any game content. You need your own copy of the Xbox 360 game.
| Platform | Status |
|---|---|
| Linux (x86-64) | Playable |
| Steam Deck | Playable, and the main test platform |
| Windows (x86-64) | Playable, less tested than Linux, mostly on Steam Deck hardware |
| Android | Planned |
The game boots, plays its videos, saves and loads, and runs its levels. See Known issues for what still misbehaves.
-NoAVX2 instead; it runs the same game, somewhat slower.-NoAVX2 package if your CPU predates AVX2 (the standard package then fails to start, on
Windows with error 0xc0000142).Play.sh.
- Windows: run simpsons-launcher.exe. It is a standalone program and does not need Python.On Steam Deck, use Add to Steam in the launcher to play from Game Mode.
To start the game without the launcher window, for example from your own Steam shortcut, run
Play.sh --play on Linux or simpsons-launcher.exe --play on Windows. It uses the same settings
as the launcher's Play button.
The launcher can update itself from the About tab. Updates replace only the engine and launcher files. Your settings, saves and mods are kept. If the installed package does not match your CPU, the launcher offers the right one.
Antivirus warnings. The Windows programs in the release are not code-signed, so Microsoft
Defender and browsers such as Edge sometimes flag or block the download, occasionally with a
generic detection like Trojan:Win32/Suschil!rfn. These are false positives: every release is
built from this repository's source by the public GitHub Actions workflow in
.github/workflows/release.yml. If your download is blocked, you can build the game yourself
(see Building from source) or restore the file from Defender's
protection history.
Most settings are in the launcher's Settings tab, saved as soon as you change them. They are
written to simpsons.toml next to the game executable, inside a block the launcher manages.
Settings outside that block can be edited by hand. The launcher has a light and a dark theme; the
button at its top right switches between them.
Saves and the shader cache are stored in:
| Linux | Windows |
|---|---|
~/.local/share/simpsons |
%LOCALAPPDATA%\simpsons |
Frame rate. The launcher's Frame rate in levels setting (frame_rate in simpsons.toml)
offers 30, 60 (the default), 90, 120, 144, 165, 240 and Unlimited (0). 30 matches the original
console exactly. At 60 and 30 the game paces frames with its own vblank timing. At other rates
each frame is measured precisely, so game time follows real time, and Havok physics keeps
stepping 1/60 s, 60 times a second, as at 60. Choose your display's refresh rate: a fixed-refresh
display never shows the extra frames, and with Unlimited they are dropped unevenly, which makes
motion and thin distant outlines shimmer. Menus, the title screen, loading screens and the pause
menu were made for 30 FPS and count their logic in frames (held directions repeat every few
frames, for example), so by default they run at 30 (Frame rate in menus, menu_frame_rate).
Set to the level rate (0), they are drawn at that rate while their logic keeps its 30 FPS pace.
Their animations play at their authored rate either way, and videos keep their own timing at any
frame rate.
Image quality. FXAA anti-aliasing is on by default for new installs and smooths the cel-shading outlines at little cost. A render scale of 2x or 3x supersamples the whole image, which gives the outlines their cleanest look. Short Springfield checks on a Steam Deck run close to 60 FPS at 1x and around 55–58 FPS at 2x, with drops in busy areas. These are scene checks; performance varies through the game.
Audio. The launcher's Audio buffer setting chooses how many 5.3 ms audio frames are queued:
Small (16), Normal (32, the default) or Large (64). Without a launcher setting the game uses 8.
Values from 4 to 64 can be set with audio_maxqframes in simpsons.toml. On the Steam Deck,
the Linux build passes the heavy CPU load check at 8 and 16 frames. The Windows build, tested
through Proton, has no queue underruns at 16 and 32 frames, but can still produce occasional
silent mixer blocks under that synthetic load. The minimum of 4 can still underrun under heavy
load. Updating keeps your saved setting.
Keyboard and mouse. Turn on Play with keyboard & mouse in the launcher's Settings tab. The game then takes the mouse whenever its window is active, and lets go of it when you switch to another window. The game's own prompts show controller buttons; press F1 in the game to see which key each button is on. The default layout:
| Action | Keys |
|---|---|
| Move | W A S D |
| Look around | Mouse |
| Jump, confirm | Space, Enter |
| Attack | Left click |
| Special attack (hold), back | Right click, Backspace |
| Action: talk, use, pick up | E |
| Target (hold) | Shift |
| Walk (hold) | Ctrl |
| Switch character | 1 to 4, arrow keys |
| To-do list | Tab |
| Pause | Esc |
Every control can be changed in the launcher's Keyboard & mouse section, where an action can have several keys, mouse buttons included, and the wheel and side buttons can be bound. The camera can also be put on keys (Look up, down, left and right), on top of the mouse. The keys that open the in-game overlays (F1 controls, F4 settings, F3 FPS overlay, ` console) can be changed there too. In the game, F4 opens the settings, with the controls under Input > Keybinds (press Save to config to keep changes made there).
Free camera and photo mode. The free camera uses the game's developer camera. Characters receive idle controller input while it is active; photo mode also pauses the level and hides the HUD and subtitles. These controls work while a level camera is running:
| Action | Controller | Keyboard |
|---|---|---|
| Free camera on/off | L3 + R3 | F6 |
| Photo mode on/off | Y with the free camera active | F8 |
| Move | Left stick | W A S D |
| Look around | Right stick | Arrow keys |
| Down, up | Left trigger, right trigger | Q, E |
| Zoom out, in | LB, RB | 1, 3 |
| Reset zoom | Tap R3 | 2 |
| Faster, slower | Hold A, X | Hold Shift, Ctrl |
F6 and F8 can be rebound in the launcher's Keyboard & mouse section. In simpsons.toml,
freecam_speed sets movement speed (5 by default), freecam_hide_hud controls HUD hiding in photo
mode, and freecam_game_follows lets the game stream and cull from the free camera. Leaving a
level releases the camera and its input lock.
Outlines and eyes. The Ink outlines settings offer Hard (original), Soft and Off, a soft
line strength slider, colour presets and a custom RRGGBB colour. Characters' eyes offers
Clean (the default) and Original. Clean reads the artists' no-rim-shadow flag with a tolerance
to remove speckled shadows on eye whites. The settings are ink_outlines, ink_outline_strength,
ink_outline_color and eye_shading; changing them requires a restart. Each image patch checks
the expected game data first and leaves an unsupported image untouched. Clean eyes and coloured
outlines change shader microcode, so those variants are translated at runtime and can cause a
first-use shader compilation pause. Black outlines retain the existing shader variants.
Character tessellation. The launcher offers Off (the default), Low, Medium and High on
Vulkan. It rounds supported skinned character meshes from their existing positions and normals,
adding more triangles where an edge is large on screen or bends sharply. Higher levels cost more
GPU time. Unsupported shaders and meshes keep their original geometry; it does not add detail
to scenery or textures. This is experimental and has not been checked across the full campaign.
The setting is character_tessellation and requires a restart.
Colour. Vulkan offers Original (neutral), Vivid, Punchy, Soft and Custom looks. Custom exposes
vibrance, saturation, contrast and brightness. Vibrance raises muted colours more than vivid
ones. The settings are color_vibrance, color_saturation, color_contrast and color_brightness;
they require a restart. Colour grading shares the FXAA pass when it is enabled; without FXAA it
uses a separate pass. Original skips colour grading entirely.
Start episode. The launcher's Patches tab can start a new game in any of the 18 episodes.
Existing saves keep their progress. The launcher keeps simpsons_gameflow.lua.original beside
the modified gameflow script; choosing Land of Chocolate restores it exactly. If another tool
edits the script while this patch is active, the launcher keeps both files and refuses to
replace the external edits. Individual episodes may depend on progress from earlier levels;
starting every episode this way has not been checked through a full play-through.
Game timing. physics_step selects Steady (the default), Legacy (the previous 60 FPS fix)
or Original (the console code). Steady uses the game clock's frame time instead of its smoothed
copy, avoiding the extra 8.3 ms Havok steps at 60 FPS, and at rates other than 60 and 30 takes
every step at 1/59.94 s. tick_count_precise reads the millisecond clock directly so delayed
background timer updates cannot distort the game's frame time. Both settings require a restart.
physics_log also reports how the frames the game clock counted compare with real time.
Diagnostics. audio_log_underruns also reports callback rate, callback time, wait lateness
and queue depth. audio_dump_file writes submitted six-channel, 256-sample big-endian float
frames and a companion .ts file with one host uint64 monotonic nanosecond timestamp per frame;
it is off by default and requires a restart. Recording to a slow disk can affect audio timing.
physics_log reports physics steps and hazard damage messages. REX_TIMER_STATS adds per-timer
arming rates and intervals to the existing timer diagnostics.
SHDR shader
chunk, install Microsoft's shader compiler with protontricks <app id> d3dcompiler_47: Wine's
own compiler produces shaders the renderer cannot use yet. Windows includes the right one.The game and the ReXGlue SDK are built together in one CMake project. Continuous integration uses
exactly these steps; see .github/workflows/build.yml for the full list of Linux packages.
Requirements: Clang 20, CMake 3.25 or newer, Ninja, pkg-config, and the development packages for GTK 3, Vulkan, X11 and XCB, Wayland, xkbcommon, udev, ALSA, PulseAudio, PipeWire and D-Bus.
git clone https://github.com/YesterMester/TheSimpsonsGameRecomp.git
cd TheSimpsonsGameRecomp/simpsons
cmake --preset linux-amd64-relwithdebinfo \
-DREXSDK_DIR="$PWD/../tools/rexglue-sdk" \
"-DCMAKE_C_FLAGS=-march=x86-64-v3" "-DCMAKE_CXX_FLAGS=-march=x86-64-v3"
cmake --build --preset linux-amd64-relwithdebinfo --target simpsons
cd ..
# ISO extraction tool used by the launcher's installer
cmake -S tools/extract-xiso -B tools/extract-xiso/build -G Ninja -DCMAKE_C_COMPILER=clang
cmake --build tools/extract-xiso/build
# Install your game and play
launcher/simpsons-launcher.sh
The Linux preset calls the compiler clang-20. If your distribution names it clang, add
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ to the first cmake command.
Requirements: LLVM/Clang 20, Visual Studio Build Tools with the "Desktop development with C++" workload (for the Windows SDK and linker), CMake 3.25 or newer, Ninja and Python 3.
git clone https://github.com/YesterMester/TheSimpsonsGameRecomp.git
cd TheSimpsonsGameRecomp\simpsons
cmake --preset win-amd64-relwithdebinfo `
-DREXSDK_DIR="$PWD/../tools/rexglue-sdk" `
"-DCMAKE_C_FLAGS=-march=x86-64-v3" "-DCMAKE_CXX_FLAGS=-march=x86-64-v3"
cmake --build --preset win-amd64-relwithdebinfo --target simpsons
cd ..
# ISO extraction tool (WIN32 must be defined for the bundled getopt)
cmake -S tools/extract-xiso -B tools/extract-xiso/build -G Ninja `
-DCMAKE_C_COMPILER=clang "-DCMAKE_C_FLAGS=-DWIN32"
cmake --build tools/extract-xiso/build
# Install your game and play
pip install PySide6
python launcher\launcher.py
Windows builds include the Vulkan and Direct3D 12 renderers; the launcher's settings choose
between them. Add -DREXGLUE_USE_D3D11=ON when configuring to include the experimental Direct3D 11
renderer, as the release builds do. Without PySide6 the launcher opens in your web browser instead of its own window.
Contributions are welcome, from bug reports and testing to fixes and new features. Read CONTRIBUTING.md for setup, coding guidelines, checks and pull requests, and please follow the Code of Conduct.
See Accessibility for current options, known barriers and how to report them. For security issues, follow the short security policy and report them privately.
Before opening an issue, check the known issues and the existing issues. When you open one, include:
If the game cannot start, the Play tab reports the operating system's error. Include that message with your report as well.
launcher/ Launcher and installer (Python, with a Qt WebEngine interface)
simpsons/ The game project: recompiled code (generated/), hand-written hooks (src/)
simpsons/re/ Notes on the game's internals
tools/rexglue-sdk/ ReXGlue runtime: kernel, audio, input and graphics layers
tools/XenonRecomp/ PowerPC to C++ static recompiler
tools/extract-xiso/ Xbox ISO extraction, used by the launcher's installer
tools/bench/ Unattended test and benchmark tooling
.github/workflows/ Build check on every push and pull request; manual release packaging
Not in the repository: game data, prebuilt toolchains (tools/clang20, tools/rexglue-bin) and
build output.
The goal is for this to be the best way to play the game. In rough order:
The Simpsons Game is © 2007 Electronic Arts Inc. The Simpsons and all related characters and trademarks belong to their respective owners. Xbox and Xbox 360 are trademarks of Microsoft Corporation.
This is an unofficial, non-commercial fan project. It is not affiliated with, endorsed by or sponsored by Electronic Arts, Fox, Microsoft or any other rights holder.
This repository and its releases contain no game assets: no textures, models, audio, video,
scripts or level data. The code in simpsons/generated is produced by recompiling the game's
executable code and does not contain the game's data. The game runs only with data installed from
an ISO of your own copy, and nothing from your installation is uploaded anywhere.
Please support the original release. Do not use this project with copies of the game you do not own, and do not ask for or share game files in this repository's issues or discussions. You are responsible for complying with the laws that apply to you regarding backups of media you own.
This software is provided as is, without warranty of any kind.
An updated note on AI assistance: most of the early work on this project used little to no AI assistance. As things have become harder, I've used ChatGPT and Claude a handful of times to help with research, bug fixes and improvements, and to get closer to what I want this recomp to be. I'm afraid I may have to use them more as I get further into the project, and I apologize for that. This is still a solo, fan-made effort and a fast-moving hobby project.
The project's own code (the launcher, the hand-written game code and the tooling) is licensed
under the GNU General Public License v3.0. The ReXGlue SDK in tools/rexglue-sdk is
under the BSD 3-Clause License, as is the Xenia code it derives from. XenonRecomp in
tools/XenonRecomp is under the MIT License. Third-party libraries keep their own licenses; see
tools/rexglue-sdk/thirdparty.
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|