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