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.
- Native widescreen (16:9). Nothing is stretched: the game draws more of the world on both sides of the screen, with the same camera. The HUD moves out to the new screen edges.
- High frame rate. 60, 120, 240 FPS or uncapped. Each object keeps its original speed, so the game plays as it did on a PS1, only smoother. You can switch frame rate in game with hotkeys.
- High resolution. Internal resolution from native up to 8x (4K).
- Image options. Bilinear, sharp bilinear and soft smooth texture filters, plus dedither and dejitter to remove the PS1 dithering and wobbly polygons, and an optional CRT filter (MattiasCRT) for the old TV look.
- Cheats. Infinite lives, level select, god mode and fly mode.
- Mods. Drop C# mods, texture packs and asset overlays into
mods/and switch them on or off from the launcher. See the modding guide. - Controllers and keyboard. Gamepad support, rebindable keys and optional analog movement: the left stick steers Crash in any direction, not only the 8 of the D-pad.
- Windows, Linux and Android.
- Plays from a
.chdor.cue+.bindump. No extraction or converter needed.
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.
- Download
CrashBandicoot.exefrom Releases. - Run it and click Select disc to choose your
.chdor.cue. - Click START GAME.
The first launch builds the game on your PC, which takes a moment. Later launches start straight away.
Install the .apk from Releases (arm64), select your disc, and play with touch controls or a gamepad.
-
Download
CrashBandicoot-Linuxfrom Releases and make it executable (browsers drop that permission):chmod +x CrashBandicoot-Linux
-
Double-click
CrashBandicoot-Linux(or run./CrashBandicoot-Linuxfrom a terminal). The launcher opens. -
Click Select disc to choose your
.chdor.cue, then 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: Settings, Controls, Mods and Cheat, with mouse, keyboard or gamepad. The first start 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.
To skip the launcher (for example in a Steam shortcut), start the game directly:
./CrashBandicoot-Linux --run /path/to/your/game.chdWithout the path, --run uses the last disc you played.
You need a GPU with OpenGL 4.3+ (Mesa, NVIDIA or AMD). 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.
Linux troubleshooting: instant Segmentation fault in a VM
If it crashes right after launching … game.recomp.dll, the VM probably can't create an OpenGL 4.3 context. Check with glxinfo -B and enable 3D acceleration. For a quick test, try software GL:
sudo apt install mesa-utils
LIBGL_ALWAYS_SOFTWARE=1 ./CrashBandicoot-Linux --run /path/to/game.cueMore about disc images (CHD, CLI options)
-
Supported dump: a standalone CD image with a single
MODE2/2352track, matching the NTSC-U disc. Other regions, multi-track layouts, DVD/GD-ROM images and CHDs that need a parent are not supported. -
To turn a
.cue+.bininto a CHD, use MAME's chdman with the CUE next to its BIN:chdman createcd -i "Crash Bandicoot.cue" -o "Crash Bandicoot.chd" -
The disc image must still be there each time you play, because the game streams levels and audio from it.
-
Command line options also work on Windows (
CrashBandicoot.exe --prepare …/--run …). Ifsettings.jsonalready points to a valid disc,--rundoesn't need the path.
- You point the launcher at your disc.
- The RecompOne recompiler translates the game's MIPS code into C# and compiles it on your PC, in a
game/folder next to the exe. Nothing is uploaded anywhere. - A runtime pretends to be enough of a PS1 (BIOS, GPU, sound, CD) for that code to run, and replaces the renderer with a modern one.
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:
- CHDSharp by Peterson Fernandes (@purelogiccode) and Gordon Jefferyes (@gjefferyes), for CHD support. See the third-party notices.
- CRT View by Mattias Gustavsson, whose crtemu shader is the optional MattiasCRT filter (MIT).
- The static recompilation community (N64Recomp and friends), for showing it could be done.
- Naughty Dog, for making the game we're all still playing almost 30 years later.
If you enjoy the project, you can buy me a coffee on Ko-fi
Building from source (developers)
You need the .NET 10 SDK.
dotnet build CrashBandicoot.Launcher -c Release
dotnet run --project CrashBandicoot.Launcher -c Release -f net10.0-windowsLinux (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.cueFrom the repo root, python publish_release.py asks which platform to build:
- Windows:
publish-single\CrashBandicoot.exe - Linux:
publish-linux\CrashBandicoot - Android:
publish-android\CrashBandicoot-<version>.apk(arm64, signed) - All three
You can also run it without prompts: --platform windows|linux|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-singledotnet 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-linuxThe 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.
| 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 |
docs/ |
Technical notes (how we got it playable, native widescreen, …) |
- Unofficial fan project. It is not affiliated with or endorsed by Sony Interactive Entertainment, Activision, Naughty Dog, or any rights holder. Crash Bandicoot and related names and marks belong to their respective owners.
- The game is not included. This repo has no ISOs, no disc images, no game assets and no recompiled game code. You need a dump of a disc you own. If you find this project bundled with a ROM or ISO, it didn't come from here.
- License: the original code in this repo is MIT. RecompOne components keep their upstream MIT license and notices. The license covers our software only and grants no rights to Crash Bandicoot itself.



