NesTs Nintendo Entertainment System (NES) Emulator

Screenshot of Donkey Kong
Screenshot of Super Mario Brothers
Screenshot of Legend of Zelda

Summary

You can play online demo HERE. TypeScript/React.js NES emulator implementation for My Own Learning Porpose. The implementation is NOT fully faithfull to the original NES hardware and some codes are still messy.

Getting Started

First, run the development server:

npm run dev
# or
yarn dev

Open http://localhost:3000 with your browser to see the result.

Key-Mappings

NES Button Keyboard
Arrow-Right
Arrow-Down
Arrow-Left
Arrow-Up
SELECT Space
START Return
A X
B Z

Roadmap

The following is a checklist of features and their progress:

  • [x] Console
    • [x] NTSC
  • [x] CPU
    • [x] Official Instructions
    • [ ] Unofficial Instructions
    • [x] Interrupts
  • [x] PPU
    • [x] VRAM
    • [x] Background
    • [x] Sprites
    • [x] NTSC TV Artifact Effects
    • [x] Emphasize RGB/Grayscale
  • [ ] APU
    • [ ] AudioWorklet
    • [x] Pulse Channels
    • [x] Triangle Channels
    • [x] Noise Channels
    • [x] Delta Mulation Channel
  • [x] Inputs
  • [x] Memory
  • [x] Cartridge
    • [ ] Battery-backed Save RAM
    • [x] iNES Format
    • [ ] NES 2.0 Format
    • [ ] Mappers
      • [x] NROM (Mapper 0)
      • [x] SxROM/MMC1 (Mapper 1)
      • [x] UxROM (Mapper 2)
      • [x] CNROM (Mapper 3)
      • [ ] TxROM/MMC3 (Mapper 4)
      • [ ] ExROM/MMC5 (Mapper 5)
  • [ ] Misc
    • [ ] Reimplement UI/UX for smartphone users
    • [X] GitHub page
    • [ ] Unit/Integration tests
    • [ ] Refactor Source Codes
    • [X] Error Handling
    • [ ] Documentation
    • [ ] Make Things Responsive

GitHub

https://github.com/ognis1205/nests