NES (Nintendo Entertainment System) emulator written in Rust with Python bindings
Project description
NES Emulator in Rust with Python Bindings
Overview
This project contains a NES (Nintendo Entertainment System) emulator written in Rust with Python bindings. It emulates the 6502 CPU, PPU (Picture Processing Unit), and other hardware components of the NES, allowing you to play classic NES games.
Features
- Full 6502 CPU emulation with all documented and many undocumented opcodes
- PPU emulation with basic rendering capabilities
- Cartridge loading support for NES 1.0 ROM format
- Save state functionality
- Keyboard input handling
Usage
import nesrs
emu = nesrs.Emulator("/path/to/game.nes", True)
while True:
emu.step_emulation()
frame = emu.get_current_frame()
value = emu.get_value_at_address(0x1234)
emu.set_key_event(KEY_UP, True)
Key bindings
When keyboard input is enabled:
- Arrow keys: Directional pad
- Space: Select button
- Enter: Start button
- A: A button
- S: B button
- Escape: Quit emulator
File Formats
- .nes files - NES 1.0 ROMs
- .cpu files - Serialized CPU states (save states)
Limitations
- Audio is not yet implemented
- Memory mappers are not supported
- No support for NES 2.0 ROM format
- Some undocumented CPU opcodes are not implemented
- Render order may not be correct
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nesrs-0.1.2.tar.gz.
File metadata
- Download URL: nesrs-0.1.2.tar.gz
- Upload date:
- Size: 244.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a63725b2606e7ec8773321ef164d9644129f53ae36f1b1cb6ca042d79c8f564a
|
|
| MD5 |
827c8750ae3655abac7b804ac567754a
|
|
| BLAKE2b-256 |
f881c8e77c621b936fa0976b7b708cbdedd579582c1f9696c45b0d00c5ae0a92
|
File details
Details for the file nesrs-0.1.2-cp38-abi3-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: nesrs-0.1.2-cp38-abi3-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.8+, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8295f9960029a0c97041469db62a909a5c248fbe1480951e91c676e69920c814
|
|
| MD5 |
10e9d98f61f91c7447d82a0ec5d0e3df
|
|
| BLAKE2b-256 |
dbe47a59f6a1f76234ef22007c6881515e2a670182f7c8bd09a76a1ac3223ab8
|