Skip to content
Screenshot dal film Cinque poveri in automobile (1952)
Screenshot dal film Cinque poveri in automobile (1952) Image by Mario Mattoli / Mario Albertelli, via Wikimedia Commons (Public domain).

Aldo

NES EMULATOR

Aldo

Aldo is an open-source MOS Technology 6502 emulator written in C (targeting C23) with a stated milestone to become a usable NES emulator and longer-term goals to support other 6502-based systems.

NESPRIMARY SYSTEM
History documentedPROJECT BEGAN
Open sourcePROJECT MODEL

WHY IT MATTERS

Why Aldo matters

Aldo is designed as a modern-C 6502 implementation with both CLI and GUI components and an explicit focus on correctness: it includes unit tests, BCD and nestest verification targets and aims to be usable both as a learning 6502 project and as the basis for a 'fantasy' 6502 computer and NES implementation.

BEST FOR

What Aldo does well

Clear, test-driven 6502 core and tooling with documented build targets for macOS and Debian/Ubuntu, an SDL3/Dear ImGui GUI layer (not yet fully platform-layered), and verification targets that reference established test suites (nestest, BCD tests).

The Legend of Zelda gameplay on NES
Gameplay from The Legend of Zelda on NES.

The people behind Aldo

Repository and development notes

The project's primary home is a GitHub repository containing source, an MIT license, and a README describing the goals (6502 core, NES milestone, other 6502 systems). The repository includes many commits and multiple build/test targets. The README documents how to build on macOS (Xcode/Homebrew) and Debian/Ubuntu, describes CLI and GUI build paths, and lists external dependencies and test targets used for verification.

What Aldo supports

  • macOS (CLI and GUI build instructions provided)
  • Linux (Debian/Ubuntu – CLI and GUI build instructions provided)
  • CLI (ncurses-based)
  • GUI (SDL3 + Dear ImGui; platform layer work-in-progress)

Download and availability

OFFICIAL DOWNLOADS

Get Aldo

Official source and binary releases (if any) are published on the project's GitHub repository and releases page. Acquire source or releases from the repository; commercial game ROMs, firmware or BIOS are not included and must be obtained separately by users.

Get Aldo ↗

DOCUMENTATION

Official documentation

Read the official configuration, compatibility, and troubleshooting material before changing advanced options.

Read official documentation ↗
Broken or missing download? Emulator projects move and official links sometimes change. Please contact Retro Replay so the source can be verified and updated.

Aldo setup guide

Setup note: This setup guide focuses on building and running Aldo from source for CLI and (experimental) GUI on macOS and Debian/Ubuntu Linux as documented by the project. Follow the exact commands and dependency notes below from the repository rather than general build recipes.

  1. 1) Inspect the repository: Clone the official repository and review the README and Makefile. Example: git clone https://github.com/drmonkeysee/Aldo.git. Read the README to confirm any updates to dependencies or build targets before proceeding.
  2. 2) Prepare dependencies on Debian/Ubuntu: Ensure a UTF-8 terminal locale. Install build-essential, git and ncurses headers: sudo apt update && sudo apt install -y build-essential git libncurses-dev. For GUI builds install libsdl3-dev and curl as needed per README.
  3. 3) Prepare dependencies on macOS: Install Xcode. Install Homebrew if needed and (optionally) ncurses via brew install ncurses. Follow the README steps to copy SDL3 frameworks into the ext/ folder for the macOS GUI project.
  4. 4) Build and run the CLI: From the repository root run make run to print usage. To run a program ROM or test file pass FILE=<path>: make run FILE=<file>. The CLI depends on ncurses and the build described in the README; follow the README if your environment differs.
  5. 5) Build the macOS GUI (optional): Run make ext, open the Xcode project in mac/Aldo.xcodeproj, ensure SDL3.xcframework is present in ext/, then build the Aldo target. The bundled GUI app embeds a shared lib used by the CLI within the app bundle (see README).
  6. 6) Build the Debian/Ubuntu GUI (experimental): Install libsdl3-dev and run make ext then make debug-gui as described in the README. The README warns the platform layer is not fully implemented and the GUI build is primarily useful for cross-checking compilation.
  7. 7) Run verification tests: The repository provides test targets: make test for unit tests, make nestest nesdiff to run kevtris's nestest CPU tests, and make bcdtest for BCD tests. Follow the README requirements (CinyTest, Python ≥3.12, etc.) to run these targets.
  8. 8) Notes on using NES ROMs: The project README states the current milestone is to build a NES emulator. Aldo does not include commercial game ROMs, BIOS, or firmware. If you load NES ROMs for testing, ensure you have legal rights to those ROMs and understand mapper support and compatibility are determined by the emulator's current implementation (check repository code and tests for which mappers/features are supported).

Software reminder: Follow the repository README for exact dependency versions. The project links to external test suites and libraries (ncurses, SDL3, Dear ImGui); do not assume these are bundled. Respect software licenses and do not expect commercial game ROMs or BIOS files to be included.

Sources and further reading

Detailed guides and tutorials

Explore step-by-step guides for Aldo as they are published.