Skip to main content

Pyntendo

pip install pyntendo

A Nintendo Entertainment System (NES) emulator written in Python and Cython.

  • All core components are implemented, including audio, and the most important mappers.
  • Performant (runs at 60fps on modern machines)
  • Fully headless operation is supported
    • NumPy-based input/output
    • Very limited external dependencies (really just NumPy)
    • See Headless Demo for a minimal example
  • Pure Python/Cython, fully compatible with CPython (>3.6)

Although most games I have tested seem to run without issues, there are still some open issues that would improve performance and accuracy and probably make some hard to emulate games work or work better.

  • Several popular(ish) mappers are not implemented (along with lots of less popular ones)
  • Some fine timing is not quite right, which might cause issues in some sensitive games
  • This is not a cycle-accurate emulator, so sub-instruction level timing is not correctly emulated, and some parts of other systems are not emulated in a cycle-correct way
  • See my devnotes for known issues and planned work

I would like to give huge thanks and kudos to everyone who contributed to the amazing NESDev Wiki and all the other fantastic sources (most listed in the code), tests and forums for NES emulator development and 6502 progamming. Without these resources it would have been impossible to develop this emulator.

Usage

Basic usage:

from nes import NES
nes = NES("my_rom.nes")
nes.run()

Screenshots

Here are some screenshots of the emulator in action: Super Mario Brothers, Donkey Kong, MegaMan

Dependencies

Depends on the following libraries for key functionality:

  • numpy (optional?)
    • headless operation
    • (possibly also required by pygame surfarray, used in rendering)
  • pygame (optional)
    • timing
    • rendering
    • input
    • (without pygame, only headless operation is possible)
  • pyaudio (optional)
    • audio playing
    • sync to audio
  • pyopengl (optional)
    • OpenGL rendering
    • (not essential; can use SDL rendering via pygame)

License

Distributed under the MIT License (see here)

Metadata

Release files for pyntendo 0.0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyntendo 0.0.8
File Size Uploaded
pyntendo-0.0.8.tar.gz 1.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyntendo 0.0.8
File Interpreter ABI Platform
pyntendo-0.0.8-cp37-cp37m-macosx_10_7_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.7+ x86-64 Details

Total release size: 2.0 MB

Release files / pyntendo-0.0.8.tar.gz

Download URL pyntendo-0.0.8.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
bbf84e3e750f9ba87d2032d8a5cbae83684d4eccb390d886b7c521214ccdaeec
BLAKE2b-256 checksum
How to use checksums
d9d340aa65ff07873c69db4de2ff86a404649fd730a50e07927244bf735f9e84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.9.0 pkginfo/1.7.0 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.3

Release files / pyntendo-0.0.8-cp37-cp37m-macosx_10_7_x86_64.whl

Download URL pyntendo-0.0.8-cp37-cp37m-macosx_10_7_x86_64.whl
Size 870.4 kB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.7+ x86-64
SHA-256 checksum
How to use checksums
00c392ca1a71149c535d32dadac365c49f8b3564ec4a1517f9ca7c76f28f4e94
BLAKE2b-256 checksum
How to use checksums
19d2ace816b55b16ec24daabaa50ef9f7ef96e85efd44c492059e53809d14ddc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.9.0 pkginfo/1.7.0 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.3

Release history Release notifications | RSS feed

This release

0.0.8 This release

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page