SwiftNES icon indicating copy to clipboard operation
SwiftNES copied to clipboard

Cross-platform NES Emulator written in Swift

SwiftNES

CI Status for macOS on GitHub Action

[WIP] Cross-platform NES Emulator written in Swift

Requirements

  • Swift 5.0.1 later
  • SDL2
  • GD Graphics Library
  • libsoundio

Roadmap

CPU

  • [x] Registers
  • [x] Memory map
  • [x] Addressing modes
  • [x] Official operations
  • [x] Unofficial operations
  • [x] Interrupt handlers
  • [x] Disassembler + nestest logging

PPU

  • [x] Registers
  • [x] Memory map
  • [x] Background rendering
    • [x] hardware accurate emulation
  • [x] Sprite rendering
    • [ ] hardware accurate emulation
  • [x] Sprite zero hit
  • [x] DMA
  • [x] Other flags
  • SDL
    • [x] Rendering by line buffer

APU

  • [x] Pulse wave channels
  • [x] Triangle wave channel
  • [x] Noise channel
  • [x] Sampling by DMC

The implementation has been completed but sounds are strange...

Controllers

  • Standard Controller
    • [x] Keyboard
    • [ ] Joypad

Cartridge, Mappers

  • [x] Parse iNES file
  • [x] Support mapper 0

Tools

  • [ ] Debugger

Goals

Run and play games in cartridges I bought in childhood.

Author

thara