NES EMULATOR
MedNES
MedNES is a cycle-accurate NES emulator written in C++ with a command-line build and a browser-playable port. It implements a small set of classic mappers and is published under the MIT license on GitHub.

WHY IT MATTERS
Why MedNES matters
MedNES aims for cycle-accurate NES emulation while remaining small and readable. It is suitable for learning about NES internals, for experimentation, and for projects that build on a compact, open-source implementation (including a WebAssembly/browser port).
BEST FOR
Notable strengths
Cycle-accurate design, compact C++ codebase, cross-platform build using SDL2, a browser (WASM/HTML5) demo, and an MIT license that permits reuse and modification.
The people behind MedNES
History & project status
MedNES is hosted on GitHub (wpmed92/MedNES) and documents an ongoing development history in the repository. The README describes the emulator as cycle-accurate and cross-platform and lists supported mappers. The project includes a web port that can be run in a browser (the repository links to a demo site). The repository is active with commits and is distributed under the MIT license. There is a releases page on GitHub for binary releases, but users should verify available assets there; source builds are performed via the provided Makefile.
What MedNES supports
- Windows (build from source)
- macOS (build from source)
- Linux (build from source)
- Web (WASM/HTML5 demo)
Download and availability
OFFICIAL DOWNLOADS
Get MedNES
Official source and release assets are available on the project's GitHub repository and its Releases page. If no prebuilt binary matches your platform, build from source following the repository README. Official locations: the project's GitHub repository and the repository's Releases tab.
Get MedNES ↗DOCUMENTATION
Official documentation
Read the official configuration, compatibility, and troubleshooting material before changing advanced options.
Read official documentation ↗MedNES setup guide
Setup note: This guide describes verified, emulator-specific setup steps for building and running MedNES from the official repository. It assumes you will build from source (recommended) or use official release assets if present.
- 1) Get the source: Clone the official repository: git clone https://github.com/wpmed92/MedNES.git. Use the repository you cloned as the working tree for the build steps below.
- 2) Install prerequisites: Install a C++ toolchain and development tools for your OS and ensure SDL2 development libraries are available. The README lists SDL2 as a prerequisite. On Linux use your distro package manager (e.g., apt, dnf) to install libsdl2-dev; on macOS use Homebrew (brew install sdl2); on Windows install an appropriate MSVC or MinGW toolchain and SDL2 development headers/libs.
- 3) Build: From the repository root run make. The project includes a Makefile; this will compile the emulator into an executable named MedNES on most systems. If your toolchain differs you may need to adapt compiler flags or use your IDE to import the source/Makefile.
- 4) Run the emulator: From the repository directory run the built executable with the ROM insert flag: ./MedNES -insert <path/to/rom>. The README documents this exact command form. Expect the emulator to create .sav files for games that use battery-backed saves (handled by the emulator), and to write any runtime logs to stdout/stderr.
- 5) Browser demo (optional): The project links to a browser-playable port on the project's GitHub Pages site. If you prefer not to build locally, try the web demo linked from the repository to verify behavior. Note that browser demos are limited by the web build and may not expose every native feature.
- 6) Mapper and compatibility limits: MedNES documents support for a limited set of mappers: NROM (0), MMC1 (1), UNROM (2), CNROM (3). Because many NES games rely on other mappers or hardware expansions, only cartridges using the supported mappers are expected to run correctly. Consult the repository README and test suite for details on supported ROM types.
- 7) Troubleshooting and testing: If a ROM fails to load, verify it is a standard iNES-format .nes file and uses a supported mapper. Use the project's Test folder and any included unit tests to confirm the build. If you encounter graphical or timing issues, check that SDL2 is properly installed and that you built with optimizations appropriate to your platform.
Software reminder: MedNES does not include commercial game ROMs, BIOS, or firmware. You are responsible for supplying ROM files you legally own. The emulator is distributed under the MIT license.
Sources and further reading
Detailed guides and tutorials
Explore step-by-step guides for MedNES as they are published.
Retro Replay Retro Gaming History, Reviews & Emulation
