Tool

PS2 Web Recomp

Statically recompiles PlayStation 2 games for the browser: eerecomp translates the Emotion Engine code of a game's boot executable into C++ that is compiled to WebAssembly, and a runtime emulates the rest of the console, including a high-level EE kernel, an interpreted I/O processor running the disc's IRX modules, the vector units, SPU2 sound and the Graphics Synthesizer on WebGPU compute shaders. Its port script repeats headless runs to find functions reached through pointers and vector-unit microprograms to compile ahead of time, then builds the web page and a native runner.

Requirements and limitations

  • The README reports two titles brought up so far: the PAL Gran Turismo 4, playable from boot through races at full speed in Chrome, and God of War II from its menus into combat, which needed no game-specific code but exposed a recompiler bug and a vector-unit timing bug. It warns that another game will most likely stop at an unimplemented system call, IOP library function or GS feature, and that vector-unit results can differ from the console's in the last bit.
  • Users bring a disc image of a game they own; the repository contains no game code or data. The README states that the generated C++ and the built WebAssembly are translations of the game's executable that belong to its owners, asks users to keep them on their own machine and not publish them, and warns that anyone who can reach the local server can load the game.
  • Porting needs Git, CMake 3.20+, Ninja, a C++20 compiler (Clang preferred), Python 3 and 7-Zip for .7z images; the first run installs the Emscripten SDK and downloads wgpu-native, and the native window needs SDL2. Everything has been run on x86-64 Linux, and the scripts also build on Apple-silicon macOS; expect about 300 MB of disk per game. The page needs WebGPU, which Linux Chrome enables only behind flags (the software renderer fallback is too slow for 3D), plus cross-origin isolation headers and HTTP Range support.
  • There is no release, tag or CI workflow. scripts/test_vu_codegen.py exercises native and WebAssembly vector-unit code generation without a game disc, and a software GS rasterizer is kept as the reference for the GPU output. Frame rates are the author's measurements on one laptop. Last commit at review: 2026-10-19.
  • MIT-licensed; the MPEG decoder's VLC tables adapted from Play! keep its BSD 2-clause notice, and the README names PCSX2, Play! and the ps2sdk headers as behavior references. It states no affiliation with Sony or the games' publishers. This collection did not build or run it, and no game compatibility is implied.

About this entry

Type
Tool
Category
Game analysis tools
Relationship
Foundation tool
Targets
Binary · Game

Sources reviewed

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Primary sources

  1. README.md GitHub · snuri00/ps2-web-recomp · Revision 6526f48
  2. scripts/port.sh GitHub · snuri00/ps2-web-recomp · Revision 6526f48
  3. scripts/test_vu_codegen.py GitHub · snuri00/ps2-web-recomp · Revision 6526f48
  4. CMakeLists.txt GitHub · snuri00/ps2-web-recomp · Revision 6526f48
  5. LICENSE GitHub · snuri00/ps2-web-recomp · Revision 6526f48
  6. runtime/src/ipu/NOTICE GitHub · snuri00/ps2-web-recomp · Revision 6526f48