A developer has demonstrated God of War: Chains of Olympus and God of War: Ghost of Sparta running directly in web browsers without traditional emulation.
A developer has demonstrated God of War: Chains of Olympus and God of War: Ghost of Sparta running directly in web browsers without traditional emulation. The games are executed through a WebAssembly translation of the original PSP executable code, compiled ahead of time into C++ and linked against a minimal reimplementation of the PSP's operating system and graphics subsystem.
The technical achievement bypasses software emulation layers by converting the PSP's MIPS-based machine code into WebAssembly modules. These modules interface with browser-native graphics through WebGL2, enabling playback at resolutions up to four times the PSP's native 480×272 output. Performance tests show stable 60 frames per second operation on desktop browsers, with mobile devices also supporting touch-based controls.
The process begins with decrypted PSP game files, which are analyzed by the PSPRecomp toolchain. Functions are extracted into 16 KiB translation units written in C++, then compiled into WebAssembly. A lightweight host environment simulates the PSP's kernel, handling memory management, file system access via HTTP range requests, and input/output operations. Graphics rendering is achieved through a custom WebGL implementation that emulates the PSP's Graphics Engine (GE) behavior, including advanced effects like stencil-based shadow mapping and texture filtering.
Early performance was limited to approximately six frames per second. Optimization efforts focused on reducing overhead in framebuffer swapping and WebGL buffer validation. Techniques such as frame pacing synchronization and targeted index buffer management improved throughput significantly. In Firefox, initial rendering bottlenecks were traced to excessive buffer revalidation; isolating draw operations to smaller buffers restored performance.
Audio is handled through a reimplementation of the PSP's ADPCM-based sound processor, with music and voice tracks decoded from ATRAC3+ streams using FFmpeg. The audio pipeline integrates with browser AudioWorklets for low-latency playback.
A second title, God of War: Ghost of Sparta, was successfully ported using the same framework. Initial attempts stalled due to encrypted data files requiring decryption via the PSP's DRM system. Once decrypted, the game booted and ran at 55–60 frames per second at triple native resolution. The white screen issue observed during startup was traced to an omitted ambient light factor in the lighting model, which affected shadow rendering.
The project provides tools for users to port their own PSP games. The workflow requires a decrypted executable, a C++20 compiler, and Emscripten for WebAssembly generation. Extracted game data can be streamed directly from the browser, with disc content loaded on-demand. Performance varies by title, with some games encountering unimplemented system calls or unsupported graphics features.
Hosting requires specific cross-origin policies to enable SharedArrayBuffer usage, and browser compatibility depends on WebGL2 and OffscreenCanvas support. Fallback modes disable multi-threading when necessary. The repository contains no proprietary game assets, only original emulation code released under MIT and LGPL licenses.
This approach represents a distinct alternative to traditional emulation, leveraging ahead-of-time compilation and browser-native APIs to run legacy handheld game code in modern web environments.
- Publisher
- Hacker News
- Reliability
- high
- Published
- 10/8/2026, 11:30:15 AM
- Retrieved
- 10/8/2026, 11:30:15 AM
- Relevance
- 80%
- Confidence
- 85%

