Existing Browser N64 Emulators
Know your competition. Every one of them has critical weaknesses.
Competitive Landscape
EmulatorJS
3,800+ stars | GPL-3.0 | Active development
What it is: A JavaScript frontend that wraps RetroArch libretro cores compiled to WASM. Not a standalone emulator — it's a shell.
N64 cores: mupen64plus_next (default), parallel-n64 (alternative)
Strengths
- Multi-system (NES through PSP)
- CDN-hosted (no build step)
- Built-in UI (save states, settings)
- Large community
Critical Weaknesses
| Issue | Impact | Source |
|---|---|---|
| Audio static (Chrome/Safari) | All Chromium users affected | Issue #739 |
| Audio degrades in Firefox | Noise after 5 seconds | Issue #928 |
| iOS performance regressions | 30fps cap on iPhone 13 | Issue #823 |
| iframe-only for SPAs | Cannot integrate with React/Vue/Angular | Official docs |
| N64 requires manual reset to boot | UX friction | Issue #1190 |
| 64MB ROM size limit (hardcoded) | Some ROM hacks fail | Issue #1173 |
| Mobile buttons obstruct gameplay | Poor mobile UX | Issue #926 |
| WebGL version mismatch | Visual glitches in MK64 | Issue #920 |
Architecture Limitation
EmulatorJS explicitly states:
"To embed within React or a SPA, the only way is to embed an iframe into your page. If you try to directly integrate, it will disrupt SPAs and modify the DOM."
This is a fundamental architectural constraint — not a bug to be fixed.
N64Wasm (nbarkhina)
663 stars | MIT | Lightly maintained
What it is: A standalone port of the RetroArch ParaLLEl N64 core compiled to WASM via Emscripten 2.0.7.
Strengths
- MIT license (maximum freedom)
- Self-contained (no RetroArch dependency at runtime)
- Three rendering options (Glide, Rice, Software)
- Gamepad support
- Works on iPhone 13, Xbox Series X browser
Critical Weaknesses
| Issue | Impact | Evidence |
|---|---|---|
| SIMD disabled | RSP runs 2-4x slower than possible | Makefile: -DNOSSE |
| Emscripten 2.0.7 (2021) | Missing 4+ years of optimizations | Makefile |
| Single-threaded | No parallelism | No -pthread flag |
| Missing R button on mobile | Games unplayable | Issue #57 |
| Z button broken | Issues reported | Issue #61 |
| No save export | Users can't backup saves | Issue #65 |
| No audio for some users | Complete silence | Issue #49 |
| Chromebook: 5-10fps | Unplayable on low-end | Issue #6 |
| OoT crashes | Major game broken | Issue #48 |
Why We Fork This One
Despite its issues, N64Wasm is the best starting point because:
- MIT license — no copyleft concerns
- Standalone — no RetroArch runtime dependency
- Simple build — single Makefile, clear structure
- Proven — works today, just needs optimization
- ParaLLEl core — better accuracy than mupen64plus-next HLE
mupen64plus-web
4 stars | GPL-2.0 | Minimal maintenance
What it is: Emscripten port of Mupen64Plus as an ES6 module.
The Only Good Thing About It
- Clean programmatic API (no UI bundled)
npm install mupen64plus-webactually works
Why We Don't Use It
- GPL-2.0 (copyleft)
- Only Rice video plugin works
- Tiny community (4 stars)
- No SIMD, no threads, no modern APIs
- "Audio is experimental"
Desktop Emulators (For Reference)
These can't run in browsers but represent the accuracy/performance targets:
Ares
- 91.2% game compatibility (824/903 games completable)
- Full LLE RSP + ParaLLEl-RDP (Vulkan)
- Most accurate N64 emulator available
- C++ with custom framework, Vulkan-dependent — can't port to WASM without massive effort
gopher64
- Rust N64 emulator (1,100 stars, very active)
- Full LLE RSP with SSE4.1 SIMD
- ParaLLEl-RDP via Vulkan
- Same developer as simple64 (archived)
- Theoretically could target WASM if ParaLLEl-RDP replaced with WebGPU renderer
simple64 (Archived Feb 2025)
- mupen64plus fork + ParaLLEl-RDP
- Replaced by gopher64
- Proved that integrated ParaLLEl-RDP is the right approach
What We Exploit
THPS Compatibility
Tony Hawk's Pro Skater 1 & 2 on N64:
| Aspect | Status |
|---|---|
| Microcode | Standard F3DEX2 (HLE compatible) |
| Expansion Pak | Not required |
| ROM Size | ~12MB (well within limits) |
| Known issues | THPS1 A-button bug in some mupen versions |
| Glide plugin | Best rendering option for THPS |
| Audio | Standard audio — no exotic features |
Verdict: THPS is in the "easy tier" for N64 emulation. Any working N64 emulator handles it. Our optimizations will make it butter-smooth.