# amhndu/simplenes

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/amhndu-simplenes).**

5,087 stars · 1,125 forks · C++ · GPL-3.0

## Links

- GitHub: https://github.com/amhndu/SimpleNES
- awesome-repositories: https://awesome-repositories.com/repository/amhndu-simplenes.md

## Topics

`c-plus-plus` `emulator` `nes-emulator` `sfml`

## Description

SimpleNES is a C++ application that simulates original Nintendo Entertainment System hardware to run legacy games on modern computers. It functions as a hardware simulator and retro gaming emulator designed to execute classic game ROMs by recreating the original console environment through software.

The system implements a software version of the 6502 CPU and picture processing unit to render retro game video and audio. It recreates 8-bit console architecture to ensure the execution of original game ROMs.

The project covers low-level hardware simulation, including cycle-accurate CPU emulation, memory-mapped input/output, and buffered pixel rendering. It also includes sample-based audio synthesis for legacy audio rendering and a configuration system for mapping physical keyboard keys to emulated game controller buttons.

## Tags

### Game Development

- [Retro Game Emulation](https://awesome-repositories.com/f/game-development/retro-game-emulation.md) — Functions as a retro gaming emulator designed to run classic NES software on modern computers.

### Graphics & Multimedia

- [High-Performance Game Emulators](https://awesome-repositories.com/f/graphics-multimedia/c-multimedia-libraries/high-performance-game-emulators.md) — High-performance C++ application that maps console hardware signals and graphics commands to desktop components.
- [Game Audio Synthesis](https://awesome-repositories.com/f/graphics-multimedia/game-audio-synthesis.md) — Implements a system for generating synchronized sound output that aligns with the visual playback of emulated software. ([source](https://github.com/amhndu/simplenes#readme))
- [Waveform Synthesis](https://awesome-repositories.com/f/graphics-multimedia/waveform-synthesis.md) — Generates square and triangle waveforms by calculating discrete audio samples to simulate the original sound chip.

### Hardware & IoT

- [Vintage Hardware Simulation](https://awesome-repositories.com/f/hardware-iot/vintage-hardware-simulation.md) — Simulates the physical and electrical behavior of legacy components, including the 6502 CPU and picture processing unit.
- [Memory-Mapped I/O Simulation](https://awesome-repositories.com/f/hardware-iot/vintage-hardware-simulation/memory-mapped-i-o-simulation.md) — Maps hardware registers and peripheral addresses to a virtual memory array for efficient data exchange.

### Operating Systems & Systems Programming

- [Console Architecture Simulation](https://awesome-repositories.com/f/operating-systems-systems-programming/console-architecture-simulation.md) — Recreates 8-bit console architecture in C++ to execute original game ROMs.
- [Hardware Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/hardware-emulators.md) — Implements a core engine that simulates physical hardware components to execute legacy software and render video and audio. ([source](https://github.com/amhndu/simplenes#readme))
- [Nintendo Entertainment System Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/hardware-emulators/console-emulators/nintendo-entertainment-system-emulators.md) — Specialized emulator targeting the hardware and processor architecture of the Nintendo Entertainment System.
- [Cycle-Accurate Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/hardware-emulators/cycle-accurate-emulators.md) — Simulates the original processor's timing and instruction set using cycle-accurate emulation to ensure correct game speed.

### Networking & Communication

- [Hardware State Emulators](https://awesome-repositories.com/f/networking-communication/protocol-emulation-layers/hardware-state-emulators.md) — Models the hardware as interconnected components that update internal registers and memory states on every clock cycle.

### System Administration & Monitoring

- [Hardware Audio Synchronization](https://awesome-repositories.com/f/system-administration-monitoring/time-synchronization/audio-output-synchronization/hardware-audio-synchronization.md) — Generates synchronized sound output that matches the original audio experience of retro game hardware.

### User Interface & Experience

- [Frame Buffers](https://awesome-repositories.com/f/user-interface-experience/virtual-drawing-planes/pixel-buffer-rendering/frame-buffers.md) — Implements a buffered pixel rendering system that flushes final frames to the display to ensure smooth video output.

### Part of an Awesome List

- [Game Development](https://awesome-repositories.com/f/awesome-lists/more/game-development.md) — NES emulator for learning and gaming.
