Back
Pokemon Emerald Ported to WebAssembly (100k FPS)
SiTech AI Team3 min read

Pokemon Emerald Ported to WebAssembly (100k FPS)

The 2004 Game Boy Advance game Pokemon Emerald now runs in a browser tab. pokeemerald-wasm is not an emulator: it recompiles the pret/pokeemerald decompilation to WebAssembly with Emscripten and reports 100k FPS of game logic.

Pokemon Emerald, the 2004 Game Boy Advance title, now runs inside a browser tab at a figure the project's coverage describes as 100,000 frames per second. The project, pokeemerald-wasm, surfaced on Hacker News in early June 2026 and is hosted at pokeemerald.com; its GitHub repository was created on 29 May 2026 and has since collected hundreds of stars.

Compiled, not emulated

The headline number is easy to misread. pokeemerald-wasm is not a Game Boy Advance emulator: it does not simulate the handheld's ARM7 processor, memory map or sound chips. Instead it takes pret/pokeemerald — a community decompilation of the game into readable C and ARM assembly — and recompiles that source to WebAssembly with Emscripten, adding a browser front end. The pipeline runs from an original ROM to decompiled C source, then to WebAssembly, then to the browser. Nowhere in it is GBA hardware recreated.

That distinction is what makes the speed possible. An emulator pays an interpretation cost on every instruction and mimics hardware timing frame by frame; recompiled code is simply the game's own logic, executed natively by the host. Discussion on Hacker News put it plainly, describing the result as the game itself compiled to Wasm rather than a Wasm-based emulator.

What "100k FPS" actually measures

According to technical coverage of the project, 100,000 FPS refers to the throughput of the game logic once its frame cap is removed — not to 100,000 rendered images per second. The original hardware was locked to a 60 Hz refresh; uncapping it lets the recompiled loop run as fast as the CPU allows, which makes the figure a benchmark of headroom over emulation rather than a playable mode. Real play syncs back to 60 FPS, with the surplus absorbed by fast-forward, input responsiveness and low-end devices.

In the browser the build needs no plugins or downloads: arrow keys move, Z is the A button, X is B, Enter is Start and Shift is Select.

Persistence, mobile and the road ahead

Commenters on Hacker News reported that in-game saving genuinely works, a sign that the port preserves real player state rather than serving as a graphics demo. Mobile behaviour is rougher: one Android Firefox user found the page did not behave as an installable progressive web app and was pointed to the browser's "Add to home" option instead. Trading between games is not available yet, and it is the feature users ask for most often.

The repository is not browser-only. One Makefile target builds a native binary by converting the WebAssembly module to C with WABT's wasm2c and linking a Raylib host, while another produces a Linux framebuffer front end intended for jailbroken Kindle Scribe e-readers. As with other decompilation projects, no ROM or copyrighted assets are distributed — users supply their own legally owned copy to build the game.

Why it matters: it is a working demonstration that a full commercial game can be recompiled to WebAssembly and run in a browser tab with performance to spare, an argument for readable source as the durable form of game preservation.

SSiTech

SiTech — AI-powered web development

We build fast, modern websites and bring AI into real business workflows. Have a project or a question? We'd love to help.