Skip to content
Screenshot published by the neskell project
Screenshot published in the neskell project's official README. Image source: neskell project on GitHub.

neskell

NES EMULATOR

neskell

Neskell is an open-source Haskell implementation of the MOS 6502 (NMOS 6502 / Ricoh 2A03) CPU intended as the CPU core for a future NES emulator. It implements the CPU and includes a test suite and tracing tools; it does not implement the NES PPU or APU and therefore is not a complete NES emulator.

NESPRIMARY SYSTEM
2013PROJECT BEGAN
Open sourcePROJECT MODEL

WHY IT MATTERS

Why this project exists

The author created Neskell to learn Haskell and to implement a reliable MOS 6502/2A03 CPU core that could be used as a building block for a future NES emulator. The README states the project goal is CPU emulation rather than a full-system emulator.

BEST FOR

What Neskell is good for

Accurate 6502 / NES Ricoh 2A03 CPU emulation, unit and community test-suite integration, execution tracing, and use as a CPU core in research or as the CPU component of a larger NES or 6502-based system emulator.

The Legend of Zelda gameplay on NES
Gameplay from The Legend of Zelda on NES.

The people behind neskell

History and status

Neskell's repository contains many commits and an extensive README describing building, testing, tracing and the project's goals. README material and trace logs in the repository show activity and test output from 2013; the project documents that the NMOS 6502 / 2A03 implementation is largely complete but that no PPU or APU emulation has been attempted. The GitHub repository currently has no binary releases (no packaged releases on the Releases page), and the project is distributed as source code. The codebase supplies a CLI for running tests and tracing; it is not a drop-in emulator for NES ROMs because the video (PPU) and audio (APU) subsystems are absent.

What neskell supports

  • MOS 6502 / NES Ricoh 2A03 CPU emulation (NMOS 6502)
  • Test-suite execution and execution tracing
  • Builds with Make, Stack or Cabal (Haskell toolchains)
  • Host platforms: POSIX-like systems (Linux/macOS) — tested on OS X 10.6 in README

Download and availability

OFFICIAL DOWNLOADS

Get neskell

Source code is available from the project's GitHub repository. There are no prebuilt binary releases in the Releases section; obtain sources via git clone and build locally.

Get neskell ↗

DOCUMENTATION

Official documentation

Read the official configuration, compatibility, and troubleshooting material before changing advanced options.

Read official documentation ↗
Broken or missing download? Emulator projects move and official links sometimes change. Please contact Retro Replay so the source can be verified and updated.

neskell setup guide

Setup note: Neskell is a Haskell CPU core. Below are practical, verifiable setup steps to build and run its tests and to integrate the core into other tools. This guide assumes a POSIX-like development host (Linux or macOS) and familiarity with Haskell toolchains (Cabal or Stack) and basic make usage.

  1. 1) Get the source: Clone the official repository: git clone https://github.com/blitzcode/neskell.git. Confirm you are using the repository master branch and inspect README.md for the latest build notes.
  2. 2) Install Haskell toolchain: Neskell's README notes it was tested with the Haskell Platform (the README mentions Haskell Platform 2013.2.0.0) and also states it now builds with Stack or Cabal. Install either Stack (recommended nowadays) or GHC + Cabal. Also ensure you can run make.
  3. 3) Install missing Haskell dependencies: The README specifically mentions the ansi-terminal package as an external dependency. If using Cabal: cabal update && cabal install ansi-terminal (or use cabal build which will fetch dependencies). If using Stack, run stack setup then stack build to fetch dependencies automatically.
  4. 4) Build: From the project root you can build with make according to the README: make. Alternatively use stack build or cabal build depending on your toolchain. The project provides a Makefile that wraps the build and test steps.
  5. 5) Run the test suite: Neskell includes a comprehensive test suite and a CLI to run tests. After building, run the quick test suite: ./neskell –quick-test –no-verbose +RTS -N -s. Use ./neskell –list-tests to enumerate available tests and ./neskell –test=NAME to run specific ones. Tracing options are available with –trace and produce per-test trace logs in src/trace (see README).
  6. 6) Using the core in other projects: Neskell is a CPU core (not a full system). To emulate NES ROMs you must provide or implement PPU and APU emulation and the system memory map (cartridge mapper support, iNES header handling, input, and timing). The repository exposes APIs and CLI features for setting CPU and RAM state and termination criteria — review the README and the src directory for interfaces you can call from a host emulator front end written in Haskell or another language that can interoperate with compiled Haskell libraries.
  7. 7) Practical notes: Because there are no releases, build artifacts must be produced locally. The README documents test and trace outputs and lists the project intent: CPU-only. Do not expect it to run commercial NES ROMs out of the box. The repository contains example traces and unit tests that are useful to verify CPU behavior and to drive integration into a larger emulator.

Software reminder: Neskell does not include NES PPU/APU, firmware, BIOS, or commercial game ROMs. You must supply any ROMs or firmware you use and confirm you have rights to run them.

Sources and further reading

Detailed guides and tutorials

Explore step-by-step guides for neskell as they are published.