Developer Yifeng Wang and the PocketJS team have managed to run a reimplementation of Counter-Strike on the original PSP at stable 60 FPS, using just 12 MB of RAM. The open-source project demonstrates that extreme optimisation can overcome hardware limitations from 22 years ago.
Sony's portable console, the PlayStation Portable (PSP), launched in 2004, features a 333 MHz processor and 32 MB of RAM. In 2026, those specifications seem ridiculous compared to any modern smartphone, but a team of developers has managed to run a playable version of Counter-Strike on it at 60 frames per second.
The mastermind behind this is Yifeng Wang, known as doodlestrike, along with the PocketJS team. Their creation, OpenStrike, is not a direct port of Valve's original game, but a complete reimplementation of the engine from scratch, specifically designed for the PSP's limitations.
The project is available as open source on GitHub and represents the first video game runtime built entirely with the PocketJS ecosystem. It includes classic maps from the GoldSrc era, bots, shooting mechanics with bullet spread and tracers, maintaining the competitive essence of Counter-Strike.
Key optimisations to achieve 60 FPS
This technical achievement is based on several architectural decisions that any tech startup founder should study. Instead of calculating lighting in real-time, the team precalculated all the lighting for the maps and stored it in the vertex colours of the geometry, eliminating dynamic calculations during gameplay.
They also used 8-bit colour palettes instead of 32-bit textures, reducing the memory footprint by 75%. Mipmaps, versions of different resolutions of the same texture, are already prepared, avoiding scaling calculations at runtime.
Resources are loaded only when needed, keeping memory usage at a constant 12 MB, which leaves space for the PSP's operating system and avoids costly swaps. The engine uses the BSP (Binary Space Partitioning) system to determine which parts of the map are visible from the player's camera, drawing only what can be seen.
The game runs at the native resolution of the PSP screen, 480×272 pixels, without scaling or wasting rendered pixels that will never be seen.
Comparison with other projects on limited hardware
OpenStrike joins a tradition of demakes and reimplementations that prioritise gameplay over graphical fidelity. However, what sets it apart is the combination of 22-year-old hardware, sustained 60 FPS, just 12 MB of RAM used, and a modern tech stack based on JavaScript and Rust. The Pocket3D 3D engine is written in Rust, while the game logic uses JavaScript.
Similar projects have managed to run games on retro hardware, but few maintain that consistent fluidity. Most sacrifice frame rate or drastically reduce map complexity. OpenStrike achieves both: complete maps and consistent performance.
Lessons for tech startups
For tech startup founders, especially in sectors like SaaS, mobile apps, or platforms that handle limited resources, the lessons from OpenStrike are directly applicable. The PocketJS team did not try to cram the original Counter-Strike onto the PSP, but built something new from scratch, designed for those specific constraints.
This translates to the idea that when facing severe technical limitations (budget, infrastructure, time), one should not force existing solutions. Sometimes, a lightweight and specific reimplementation outperforms a heavy adapted product. A concrete action: identify a component of the product that is consuming disproportionate resources and ask if it can be rewritten from scratch with a minimalist approach.
The OpenStrike project demonstrates that smart engineering can overcome even the most extreme hardware limitations, providing a smooth gaming experience on a device that, by today's standards, is nearly obsolete. The developers have published the source code on GitHub, allowing anyone interested to study the applied optimisations or even contribute to the project.

