Unofficial fan project.
The 1996 classic, running natively on PC and Android. In widescreen, at 240 FPS, in 4K.
This isn't an emulator. The original PS1 code is statically recompiled into a native program on your own machine, then given the upgrades the PS1 never could: a real 16:9 view of the world, high frame rates, high resolutions, mods and cheats.
F5 saves, F8 loads, F6/F7 switch slot. The same actions are in the pause menu.mods/ and switch them on or off from the launcher or the in-game Dev Menu. See the modding guide..chd or .cue + .bin dump. No extraction or converter needed.Every extra is optional: each one has its own switch in Settings, so you can play it exactly like the original.
It's still a work in progress. Widescreen is a big job: some levels still show the edges of the original scenery. Bugs exist, and we'd love to hear about them (see Found a bug?).
You need your own dump of Crash Bandicoot (USA), serial SCUS-94900, as a .chd or as a .cue with its .bin. The game is not included here; read the fine print.
CrashBandicoot.exe from Releases. On a Windows on ARM PC (for example a Snapdragon X laptop), download CrashBandicoot-arm64.exe instead..chd or .cue.The first launch builds the game on your PC, which takes a moment. Later launches start straight away. If the game window doesn't open, check the System requirements.
Install the .apk from Releases (arm64), select your disc, and play with touch controls or a gamepad.
CrashBandicoot-Linux from Releases. On a Raspberry Pi 4/5 or another 64-bit ARM computer, download CrashBandicoot-Linux-arm64 instead.chmod +x CrashBandicoot-Linux)..chd or .cue, then click START GAME. A disc in the same folder as the program is picked up on its own.It's the same launcher as on Windows, with Settings, Controls, Mods and Cheats, usable with mouse, keyboard or gamepad. The first launch builds the game from your disc, which takes a minute or two. While you play, the launcher steps aside, and it comes back when you close the game. In About (the i button) you can add it to your applications menu, which also makes it show up in Steam's Add a Non-Steam Game list.
You need a GPU with OpenGL 3.3+ or OpenGL ES 3.0+ (Mesa, NVIDIA or AMD; OpenGL 4.3 is used when available) and a distribution with glibc 2.34+ (see System requirements). Audio (OpenAL Soft) is bundled, so there's nothing else to install. The launcher window uses X11, which Wayland desktops provide through XWayland. If it doesn't start, attach logs/last-run.txt (next to the program) to your bug report.
./CrashBandicoot-Linux --run /path/to/your/game.chd
Without the path, `--run` uses the last disc you played.
Segmentation fault in a VMsudo apt install mesa-utils
LIBGL_ALWAYS_SOFTWARE=1 ./CrashBandicoot-Linux --run /path/to/game.cue
| Windows | Linux | Android | |
|---|---|---|---|
| System | Windows 10 or 11 | glibc 2.34 or later: Ubuntu 22.04+, Debian 12+, Fedora 35+, RHEL / AlmaLinux / Rocky Linux 9+ | Android 8.0 (API 26) or later |
| CPU | 64-bit x86 (x64) or 64-bit ARM (arm64) |
64-bit x86 (x86-64) or 64-bit ARM (arm64) |
64-bit ARM (arm64-v8a) |
| Graphics | Vulkan 1.0, or OpenGL 4.3 (or 3.3) | OpenGL 4.3 (or 3.3, or OpenGL ES 3.0), or Vulkan 1.0 | OpenGL ES 3.2, or Vulkan 1.0 |
| Also needed | Visual C++ Redistributable 2015–2022 (x64, or ARM64 for the arm64 build) | X11 or XWayland | Nothing |
GL_EXT_blend_func_extended; Mesa drivers have them.CrashBandicoot-arm64.exe, which runs natively; CrashBandicoot.exe also starts there, but only through Windows' x64 emulation. OpenGL on these PCs comes from Microsoft's OpenCL, OpenGL, and Vulkan Compatibility Pack (Microsoft Store): install or update it if the game window doesn't open or draws wrongly. This build gets less testing than the x64 one.libicu), which every desktop distribution includes. Older releases, such as Ubuntu 20.04 or Debian 11, have an older glibc and can't run the game.arm64 build needs a 64-bit system, such as Raspberry Pi OS 64-bit (Bookworm or newer); the 32-bit Raspberry Pi OS can't run it. The Pi 4 and 5 GPU offers OpenGL ES 3.1, which the game uses through the fallback above. A Pi 3 or older has no OpenGL ES 3 and can't run the game. The first launch builds the game on the Pi itself, which takes much longer than on a PC. This build gets less testing than the x86-64 one.GL_EXT_blend_func_extended. Adreno (Snapdragon) and Mali drivers do. The APK also contains x86_64 libraries (emulators, some Chromebooks), but that gets less testing.game/ folder next to the exe. Nothing is uploaded anywhere.The extra features (widescreen, high frame rate, cheats) hook into the game's own logic. To do that we had to understand how Crash actually works inside, and for that we owe a lot to the people credited below.
Everything stays next to the exe: settings.json, saves in save/, the prepared game in game/, and your mods/. There's no telemetry.
Open an issue. A level name and a short description of what happened help a lot. Pull requests for the launcher, runtime, UI or docs are welcome.
Please don't ask where to download the game, and never attach disc images or generated game code.
This project stands on the shoulders of some amazing people.
![]() @arciks1192-svg |
Our full-time bug hunter. Most of the issues ever opened on this repo came from them: every broken platform, odd camera and missing wall was found, reported and retested. A huge part of the game playing as well as it does today is down to them. Thank you! |
![]() @wurlyfox |
c1, the decompilation of Crash Bandicoot's engine. This project would never have been possible without it. Most of the cool features exist because c1 told us what the game's memory and code actually mean. Widescreen, high frame rate, level select and direct level warps all rely on it. |
![]() @ManDude |
goocdump, the decompiled GOOL scripts. GOOL is Naughty Dog's own language that drives every crate, enemy and platform in the game. Reading those scripts is how we make each object behave correctly at 60, 120 and 240 FPS. |
![]() RecompOne |
The static PS1 recompiler and runtime this whole thing is built on (MIT). |
Also thanks to:
If you enjoy the project, you can buy me a coffee on Ko-fi
dotnet build CrashBandicoot.Launcher -c Release
dotnet run --project CrashBandicoot.Launcher -c Release -f net10.0-windows
Linux (no arguments opens the launcher, `--run` starts the game directly):
dotnet build CrashBandicoot.Launcher -c Release -f net10.0
dotnet run --project CrashBandicoot.Launcher -c Release -f net10.0
dotnet run --project CrashBandicoot.Launcher -c Release -f net10.0 -- --run /path/to/game.cue
### Release builds
From the repo root, `python publish_release.py` asks which platform to build:
1. **Windows**: `publish-single\CrashBandicoot.exe`
2. **Linux**: `publish-linux\CrashBandicoot`
3. **Android**: `publish-android\CrashBandicoot-.apk` (arm64, signed)
4. All five
5. **Linux arm64**: `publish-linux-arm64\CrashBandicoot` (needs the two libraries in `native/linux-arm64/`, see the [README](https://github.com/Matteo842/CrashBandicoot-Launcher/blob/HEAD/native/linux-arm64/README.md) there)
6. **Windows arm64**: `publish-win-arm64\CrashBandicoot.exe` (needs the two libraries in `native/win-arm64/`, see the [README](https://github.com/Matteo842/CrashBandicoot-Launcher/blob/HEAD/native/win-arm64/README.md) there)
You can also run it without prompts: `--platform windows|windows-arm64|linux|linux-arm64|android|all`. Other options are `--out my-folder` and `--clean`.
The first Android publish creates `signing/android-release.keystore`, which is gitignored. Back it up: if you lose the keystore, you can't update the same app.
Equivalent raw commands:
dotnet publish CrashBandicoot.Launcher -c Release -f net10.0-windows -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:IncludeAllContentForSelfExtract=true -p:EnableCompressionInSingleFile=true -o .\publish-single
dotnet publish CrashBandicoot.Launcher -c Release -f net10.0 -r linux-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:IncludeAllContentForSelfExtract=true -p:EnableCompressionInSingleFile=true -o ./publish-linux
The single-file binary extracts its bundled dependencies at runtime. User data (`save/`, `game/`, `settings.json`) is always written next to the real exe.
Before uploading a release, make sure it contains only tools and UI: **no** `.bin`/`.cue`/`.chd`, **no** `main.cs`, **no** `game.recomp.dll` or `game/` folder.
### Repo layout
| Path | Role |
|------|------|
| `CrashBandicoot.Launcher/` | WinForms launcher (Windows), Avalonia launcher (Linux, `Linux/`), CLI, and the local recompile pipeline |
| `AndroidLauncher/`, `AndroidRuntimeHost/` | Android app |
| `RecompOne.Runtime/` | PS1 HLE runtime (from RecompOne), plus frame pacing, widescreen and cheats |
| `RecompOne.Recompiler/` | Recompiler library (from RecompOne) |
| `examples/mods/` | Sample mods, see [`docs/MODDING.md`](https://github.com/Matteo842/CrashBandicoot-Launcher/blob/HEAD/docs/MODDING.md) |
| `docs/` | Technical notes ([how we got it playable](https://github.com/Matteo842/CrashBandicoot-Launcher/blob/HEAD/docs/CRASH_BANDICOOT_RECOMP.md), [native widescreen](https://github.com/Matteo842/CrashBandicoot-Launcher/blob/HEAD/docs/NATIVE_WIDESCREEN.md), …) |
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|