NES
NES emulator written in Go
NES emulator written entirely in Go, aimed at accurately reproducing classic Nintendo Entertainment System games in a modern, cross-platform environment. It reimplements the NES hardware in software, including CPU, PPU (graphics), and APU (audio), and then presents the output using OpenGL for video and PortAudio for sound. The emulator supports a menu mode where, if you point it at a directory instead of a single ROM, it scans all ROMs and shows a game selection screen with thumbnails fetched from an online database keyed by each ROM’s MD5 hash. Once a ROM is chosen, the emulator maps keyboard controls to NES inputs and also supports USB joysticks, letting you play with a gamepad instead of just the keyboard. Under the hood it implements several common NES cartridge mappers such as NROM, MMC1, UNROM, CNROM, MMC3, and AOROM, which together cover the majority of NES titles in circulation.