← How PS2 Web Recomp works

PS2 static recompilation in the browser

Follow PlayStation 2 code from static recompilation to C++, WebAssembly and a browser runtime, and distinguish PS2 Web Recomp from PS2Recomp.

Guide updated 20 October 2026. Sources are linked by section; upstream snapshot details appear below. No independent game or toolchain tests were performed for this guide.

A browser does not directly execute a PS2 disc image. In PS2 Web Recomp, the main CPU code is translated to C++, compiled to WebAssembly and combined with a runtime that implements supporting console behavior.

From a disc image to a browser program

The useful distinction is between preparing a game-specific build and running that build. Translation and compilation happen before browser playback; the resulting application still needs graphics, audio, input and file access at runtime.

  1. Your game data

    Start with legally acquired game data on your own build machine. A guide or source archive does not include a game.

  2. Generated C++

    Translate Emotion Engine code and explore execution paths to discover additional entry points.

  3. WebAssembly build

    Compile generated code and the supporting runtime with the project's Emscripten workflow.

  4. Local browser playback

    Serve the generated application, check the browser environment and observe the actual stage reached.

Sources: Reviewed PS2 Web Recomp README ↗

PS2 Web Recomp and PS2Recomp are different projects

Similar names do not make their commands interchangeable. Identify the repository before following a tutorial or interpreting a compatibility report.

PS2 Web Recomp and PS2Recomp are different projects
ProjectDocumented workflowUse it for
snuri00/ps2-web-recompGame-image exploration, generated code and a browser build; a native runner also exists.The browser workflow and game records described on this site.
ran-j/PS2RecompELF analysis or Ghidra-exported function maps, TOML configuration and generated C++ linked with ps2xRuntime.A separate experimental native-port toolchain and recompiler research.

Sources: Reviewed PS2 Web Recomp README ↗ · PS2Recomp README, eb8688b ↗

Why a runtime is still needed

Static translation covers the main game executable, not every console component. In the reviewed browser project, IOP modules use an interpreter, vector programs have recorded and runtime paths, and the GS graphics implementation uses WebGPU compute shaders.

This explains why a successful translation can still stop at a missing device behavior. It also explains why exploration coverage matters: code or vector programs needed later in a game may not have been encountered during the preparation stage.

Sources: Reviewed PS2 Web Recomp README ↗

Choose the next step for your goal

  1. To build locally, use the pinned source entry and the setup tutorial. Keep the commit, build environment and game release with your notes.
  2. To judge a game, read its evidence record. Reaching a menu, entering combat and completing a game are different observations.
  3. To debug a port, first separate translation or exploration failures from browser startup and runtime failures. Save the relevant log and the point reached.

Common questions

Can a static recompiler run every PS2 game?

A static translation does not establish that all required runtime behavior is implemented. Use source-backed, release-specific progress reports and keep untested stages explicit.

Is the source ZIP a playable browser game?

It contains project source. You still need the documented build environment and your own game data. This site does not host compiled game builds.

Does static recompilation guarantee a particular frame rate?

No. Compare the game stage, source commit, exploration coverage, browser, hardware and resolution. A reported benchmark is evidence for its stated conditions, not a promise for every build.