# fogleman/nes

**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/fogleman-nes).**

5,650 stars · 532 forks · Go · MIT

## Links

- GitHub: https://github.com/fogleman/nes
- awesome-repositories: https://awesome-repositories.com/repository/fogleman-nes.md

## Description

This project is a Nintendo Entertainment System emulator written in Go. It functions as a hardware simulation that executes game ROMs by mimicking the original console's circuitry, including the processor and picture processing unit.

The emulator includes a game library browser that identifies local files and retrieves titles and thumbnails from online databases using file checksums. It also implements a system of memory management mappers to ensure compatibility across various game ROM formats and hardware configurations.

The software covers high-level capabilities for game ROM execution and retro game playback. It further provides input control translation to map keyboard or joystick presses to simulated hardware controller actions.

## Tags

### Operating Systems & Systems Programming

- [Console Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/hardware-emulators/console-emulators.md) — Simulates the full processor and system architecture of the NES to execute original ROMs.
- [ROM Hardware Mapping](https://awesome-repositories.com/f/operating-systems-systems-programming/rom-hardware-mapping.md) — Associates read-only memory regions with specific hardware buses to simulate various ROM mapper configurations. ([source](https://github.com/fogleman/nes/blob/master/README.md))
- [Nintendo Entertainment System Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/hardware-emulators/console-emulators/nintendo-entertainment-system-emulators.md) — Simulates the full circuitry of the Nintendo Entertainment System to execute original game ROMs.
- [Cycle-Accurate Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/hardware-emulators/cycle-accurate-emulators.md) — Implements a processor simulation that tracks individual clock cycles to ensure precise hardware timing.
- [Hardware Input Translation](https://awesome-repositories.com/f/operating-systems-systems-programming/keyboard-input-modes/hardware-input-translation.md) — Converts host keyboard signals into the binary formats required by the emulated vintage hardware. ([source](https://github.com/fogleman/nes/blob/master/README.md))

### Data & Databases

- [Memory Management Mappers](https://awesome-repositories.com/f/data-databases/memory-mapping-utilities/memory-management-mappers.md) — Translates console-specific memory addressing and bank-switching schemes into host system memory space.

### Game Development

- [Game Execution Environments](https://awesome-repositories.com/f/game-development/game-execution-environments.md) — Provides a runtime environment specifically designed to execute and maintain the stability of NES game titles. ([source](https://github.com/fogleman/nes/blob/master/README.md))
- [Retro Gaming Frameworks](https://awesome-repositories.com/f/game-development/retro-gaming-frameworks.md) — Provides a platform for loading ROM sets and simulating original hardware characteristics for playback.
- [Game Library Interfaces](https://awesome-repositories.com/f/game-development/game-library-interfaces.md) — Provides a graphical interface for browsing and launching a local collection of game files. ([source](https://github.com/fogleman/nes/blob/master/README.md))

### Graphics & Multimedia

- [Framebuffer Renderers](https://awesome-repositories.com/f/graphics-multimedia/graphics-rendering-engines/framebuffer-renderers.md) — Simulates a picture processing unit that writes pixel data directly to a memory buffer for display.

### Content Management & Publishing

- [Game Library Organization](https://awesome-repositories.com/f/content-management-publishing/category-organizations/game-library-organization.md) — Organizes local game files into collections using automated metadata and thumbnail retrieval.

### Programming Languages & Runtimes

- [Go Language Implementations](https://awesome-repositories.com/f/programming-languages-runtimes/go-language-implementations.md) — Implemented in Go to leverage performance and concurrency for real-time hardware emulation.

### Software Engineering & Architecture

- [Frame-Based Polling](https://awesome-repositories.com/f/software-engineering-architecture/polling-based-input-models/frame-based-polling.md) — Queries input device states synchronized with the application's update loop for real-time interaction.

### User Interface & Experience

- [Keyboard Input Mapping](https://awesome-repositories.com/f/user-interface-experience/form-and-input-management/input-handling/secondary-modifier-keys/keyboard-input-mapping.md) — Maps physical keyboard key codes to internal constants for simulated hardware input.
- [Game Input Mapping](https://awesome-repositories.com/f/user-interface-experience/game-input-mapping.md) — Translates raw keyboard and joystick inputs into high-level game controller actions.
- [Game Launchers](https://awesome-repositories.com/f/user-interface-experience/game-launchers.md) — Implements a unified dashboard for organizing and launching local game files. ([source](https://github.com/fogleman/nes#readme))

### Part of an Awesome List

- [Software Tools](https://awesome-repositories.com/f/awesome-lists/more/software-tools.md) — Nintendo Entertainment System emulator.
