Skip to content

Latest commit

 

History

127 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NESEmulator




Modular and extensible Nintendo Entertainment System emulator written in C (still under development).

Always wanted to write some console emulator, so here it is.

What Works

  • 6502 cpu emulation - cycle exact, both documented and undocumented opcodes, without decimal mode
  • PPU emulation - still requires some work (graphical artefacts occur), but most popular titles using supported mappers should work just fine
  • iNES memory mappers: 0, 2, 3
  • Cocoa frontend featuring game library and keyboard controls
  • Utility tools written in Elixir:

Screenshots

./Output/app_library.png Super Mario Bros (1985) Pacman (1985) Balloon Fight (1984)

Controls

You can create your own keyboard keymap in settings, located at nescocoa -> Preferences.... Default keymap for controller 1 is below.

NES nescocoa
Up, Down, Left, Right Arrow keys
START w
SELECT q
A a
B s

Architecture

Project is using client-server architecture, with OS-specific frontend being a client and emulation library acting as a server.

System Components

Requirements

  • CMake 3.7+
  • clang/clang++
  • Google Test 1.8.1+
  • opencv 4 (for some tools)
  • macOS 10.14+ (for Cocoa frontend)

How to build

Just emulation library:

> mkdir Build/
> cd Build/
> cmake ../Emulator
> make

Emulation library and Cocoa frontend (only for macOS):

> cd Drivers/Cocoa
> ./build.sh

Then open nescocoa.xcodeproj, build and run.

About

Modular and extensible Nintendo Entertainment System emulator written in C, with Cocoa client

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages