Skip to main content

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

IssueImpactSource
Audio static (Chrome/Safari)All Chromium users affectedIssue #739
Audio degrades in FirefoxNoise after 5 secondsIssue #928
iOS performance regressions30fps cap on iPhone 13Issue #823
iframe-only for SPAsCannot integrate with React/Vue/AngularOfficial docs
N64 requires manual reset to bootUX frictionIssue #1190
64MB ROM size limit (hardcoded)Some ROM hacks failIssue #1173
Mobile buttons obstruct gameplayPoor mobile UXIssue #926
WebGL version mismatchVisual glitches in MK64Issue #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

IssueImpactEvidence
SIMD disabledRSP runs 2-4x slower than possibleMakefile: -DNOSSE
Emscripten 2.0.7 (2021)Missing 4+ years of optimizationsMakefile
Single-threadedNo parallelismNo -pthread flag
Missing R button on mobileGames unplayableIssue #57
Z button brokenIssues reportedIssue #61
No save exportUsers can't backup savesIssue #65
No audio for some usersComplete silenceIssue #49
Chromebook: 5-10fpsUnplayable on low-endIssue #6
OoT crashesMajor game brokenIssue #48

Why We Fork This One

Despite its issues, N64Wasm is the best starting point because:

  1. MIT license — no copyleft concerns
  2. Standalone — no RetroArch runtime dependency
  3. Simple build — single Makefile, clear structure
  4. Proven — works today, just needs optimization
  5. 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-web actually 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:

AspectStatus
MicrocodeStandard F3DEX2 (HLE compatible)
Expansion PakNot required
ROM Size~12MB (well within limits)
Known issuesTHPS1 A-button bug in some mupen versions
Glide pluginBest rendering option for THPS
AudioStandard 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.