# NES Console Emulator
A Rust-based endeavor to emulate the Nintendo Entertainment System.
Table of Contents
Goals
- Developing a cycle-accurate NES emulator with cross-platform deployment including WebAssembly
- Implemented complete MOS Technology 6502 CPU instruction set with precise timing emulation
- Architecting PPU (Picture Processing Unit) with per-dot rendering for authentic video output
TODO
Here’s how you can represent your list items with emojis for better visual distinction:
- ✅ Implement 6502 CPU (minus APU)
- ✅ Official opcodes
- ✅ Unofficial opcodes
- ✅ Ensure cycle accuracy
- ✅ Create 6502 CPU test runner for single-step tests
- ✅ Implement iNES 1.0 ROM parsing
- ✅ Implement Bus-centric architecture (NES wrapper handles orchestration)
- ✅ Implement interrupt handling
- ✅ Non-maskable-interrupts
- ✅ Software-defined interrupts
- ✅ Implement user-input via Joypad 1
- 🔲 Implement cycle-accurate DMA transfer through Bus
- 🔲 Implement PPU
- 🔲 Background nametable rendering
- 🔲 8x8 sprite rendering (with horiz/vert flips)
- 🔲 8x16 sprite rendering
- 🔲 Detect sprite-overflow
- 🔲 Sprite collision detection
- ✅ Encapsulate mapper logic behind Cartridge trait
- 🔲 Implement APU
Resources
- 6502 opcode references:
- Illegal opcodes
- Single-step opcode tests
- iNES file format spec
- snake.nes
- PPU timing: