# The Simpsons Game — recompilation *[Version française](README.fr.md)* A native port of *The Simpsons Game* (Xbox 360, EA, 2007) made by static recompilation: the game's PowerPC code is translated to C++ by [XenonRecomp](https://github.com/hedge-dev/XenonRecomp), then compiled for the target machine. The runtime in this repository provides what the game expects from the console: kernel, threads, files, XMA audio, controllers and the Xenos GPU (Vulkan renderer, shaders translated at run time with [XenosRecomp](https://github.com/hedge-dev/XenosRecomp) and DXC). **This repository contains no game data.** You need your own copy of the Xbox 360 disc. The tested version is the French (PAL) release; the code is identical in the NTSC-U and the Italian/Spanish PAL releases.
Captured on a Mac at 4K internal resolution (scaled down to 1920×1080 here).
## Platforms | Platform | Status | Build | |---|---|---| | Apple silicon Mac (macOS 15+) | playable, 60 fps, 1440p to 5K depending on the chip (see below) | `portable/construire_dependances_mac.sh` then `tools/creer_application.sh` | | Apple TV 4K (tvOS 17+, tested on the 3rd generation) | playable at 720p, 60 fps | `tvos/construire_dependances_tvos.sh` then `tvos/creer_application_tvos.sh` | | Windows 10/11 x64 | cross-compiled from the Mac or Linux, lightly tested | `windows/creer_dossier_windows.sh` | | Linux x64 | playable | `linux/construire.sh` (on the Linux PC) | Not every machine can hold 60 fps at 5K, so the game picks its internal resolution from the GPU. | Machine | Default resolution | |---|---| | Mac with a Max or Ultra chip (30 GPU cores or more) | 5K (5120×2880), 60 fps tested on M2 Max | | Mac with a Pro chip (14 to 29 cores) | 4K (3840×2160) | | Mac with a base chip, MacBook Air (fewer than 14 cores) | 1440p (2560×1440), not measured yet: 60 fps may drop in busy scenes | | PC with a dedicated GPU, 12 GB or more | 5K | | PC with a dedicated GPU, 8 to 11 GB | 4K | | PC with a dedicated GPU, less than 8 GB | 1440p | | PC without a dedicated GPU (Intel or AMD integrated graphics) | 720p | | Apple TV | 720p | The dedicated GPU thresholds have not been checked on real hardware yet. The choice is written to `jeu.log` (`puce graphique : … resolution xN`). `SIMPSONS_RESOLUTION` (see [Settings](#settings-environment-variables)) forces another resolution; if the game stutters, go one step lower. ## Playing - **Controller**: an Xbox controller (wired or Bluetooth) or any XInput-compatible controller works out of the box. - **Keyboard**: arrow keys or WASD (ZQSD on AZERTY) to move, Enter = START, Space = A, E = B, R = X, F = Y. - **Fullscreen**: the game starts fullscreen; Cmd+F (Mac), Alt+Enter or F11 to switch to a window. - **Movies**: Escape or the gamepad's BACK button (Select, View, "−") skips the movie playing (during its first 7 seconds, a message says so in one of the game's translucent clouds, written by the game itself; made by tools/texte_video.sh). - **Apple TV**: hold Back/Select + Start together for 2 seconds to return to the home screen. - Levels run at 60 fps (`SIMPSONS_30IPS=1` restores the original 30 fps), with Havok physics stepping every frame (1/60 s steps). Menus, the title screen and loading screens stay at 30 fps, as they were made for: their logic counts frames. Faster displays: `SIMPSONS_IPS=120` (or 90, 144, 165, 240, 0 = unlimited) in levels; frames are then measured precisely so the game keeps its speed, and physics takes one step per frame (the trampolines need it). Pick your display's refresh rate. | Platform | Saves and log (`jeu.log`) | |---|---| | Mac | `~/Library/Application Support/Les Simpson - Le Jeu` | | Apple TV | `Library/Caches/Les Simpson - Le Jeu` (inside the app) | | Windows | `%LOCALAPPDATA%\Les Simpson - Le Jeu` | | Linux | `~/.local/share/les-simpson-le-jeu` | ## Improvements over the console - **Faster startup**: the EA, Fox and Gracie Films logo movies are skipped and the Fox legal screen is removed (`tools/retirer_fox.py`): the "Press START" screen appears after about 8 s instead of 24 s. `SIMPSONS_LOGOS=1` brings the movies back. - **Smoother textures**: the game provides a single level of detail for some images that are drawn much smaller than their real size (the title screen logo, 2048×1024, covers about 600 pixels), which gives jagged edges. The runtime builds downscaled versions (mipmaps) for them: the title logo and the text font are much smoother. The list is in `simpsons/modifications/textures/*.mips`. - **"EA | 5K ULTRA HD" logo** instead of "EA | HD" on the startup screen (image not included in the repository: `python3 tools/logo_4k.py` makes it, on a Mac). - **Text adapted to a computer**: mentions of the Xbox 360 console and Xbox LIVE are gone ("Do not turn off the Xbox 360 console" becomes "Do not quit the game", "on your Xbox 360 console" becomes "on your computer"…), and the startup screen says "5K ULTRA HD" instead of "HD COMPATIBLE" (`simpsons/modifications/textes_fr.tsv`, applied by `tools/modifier_textes.py`; French text only for now). - **60 fps** instead of 30, and internal resolution up to 5K on the most powerful Macs.
The redrawn startup logo at full resolution (crop of a 4K capture).
## Setting up the project Tools (Mac): Xcode, `brew install cmake ninja python autoconf automake libtool pkg-config molten-vk xcodegen`. 1. **Recompilers**, next to `simpsons/`, with the patches from `correctifs/`: ```sh git clone https://github.com/hedge-dev/XenonRecomp.git && git -C XenonRecomp checkout ddd128b git -C XenonRecomp submodule update --init --recursive && git -C XenonRecomp apply ../correctifs/XenonRecomp.patch git clone https://github.com/hedge-dev/XenosRecomp.git && git -C XenosRecomp checkout 990d03b git -C XenosRecomp submodule update --init --recursive && git -C XenosRecomp apply ../correctifs/XenosRecomp.patch ``` 2. **Game data**: extract the ISO into `simpsons/game/` with [extract-xiso](https://github.com/XboxDev/extract-xiso) (`extract-xiso -d simpsons/game