โ† All projects

PetNES

A web NES emulator with a hand-written WebGL CRT renderer.

Cycle-accurate 6502 CPU (all 256 opcodes, including unofficials), 2C02 PPU with loopy scroll, and 2A03 APU with non-linear mixing, compiled from C++ to WebAssembly. Ships a WebGL CRT shader (scanlines, barrel distortion, phosphor bloom), save states, an IndexedDB ROM library, and gamepad support. Drop in a ROM and play.

Highlights

  • All 256 6502 opcodes emulated, including unofficial ones
  • Loopy-scroll-accurate 2C02 PPU and non-linear-mixing 2A03 APU
  • Hand-written WebGL CRT shader: scanlines, barrel distortion, phosphor bloom
  • IndexedDB-backed ROM library with thumbnails and save states
  • Gamepad support and live palette/channel editing

Technology

C++, WebAssembly, TypeScript, WebGL, Emscripten

Source code ยท Published site