Skip to content
Screenshot published by the zebes project
Screenshot published in the zebes project's official README. Image source: zebes project on GitHub.

zebes

NES EMULATOR

zebes

Zebes is a cross-platform NES (Nintendo Entertainment System) emulator implemented from scratch in Rust. It focuses on accurate CPU and PPU behavior for learning and experimentation; audio (APU) is not implemented yet.

NESPRIMARY SYSTEM
History documentedPROJECT BEGAN
Open sourcePROJECT MODEL

WHY IT MATTERS

Why this project exists

Zebes is a personal learning project by its author to study emulator internals and to improve Rust skills. The README states the emulator was created "for learning purposes and for fun."

BEST FOR

Notable characteristics

Cycle-accurate 6502 CPU implementation (Ricoh 2A03/MOS 6502 addressing modes and official instruction set), detailed PPU features (background rendering with proper scrolling, sprite zero hit, per-scanline evaluation, OAM DMA, PPUDATA buffering, nametable mirroring and NTSC odd-frame timing), and several supported mappers (NROM, MMC1, UxROM, CNROM, MMC3). The project also separates core, frontend, and a terminal debugger as a Cargo workspace.

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

The people behind zebes

History & status

The repository is an actively maintained personal project with commits and a documented history in its GitHub repo. The author describes it as "very green" and oriented toward learning; contributions are not currently being accepted. The project implements many core CPU and PPU behaviors but explicitly notes there is no audio (APU) emulation yet and that some mappers (for example MMC5) are still work-in-progress. The codebase is organized into three workspace members: zebes (frontend using macroquad), core (emulator core), and debugger (terminal-based debugger using ratatui).

What zebes supports

  • Nintendo Entertainment System (NES)
  • Frontends: graphical frontend (zebes) and terminal debugger (zebes-debugger)
  • Platforms: cross-platform (buildable on systems supported by Rust and macroquad — typically Windows, macOS, Linux)
  • download_text

Download and availability

OFFICIAL DOWNLOADS

Get zebes

Official releases and source are available from the project's GitHub repository and Releases page. The project is not published to crates.io; prebuilt binaries are not guaranteed — building from source is the supported route. Check the Releases tab on the GitHub repository for any published assets.

Get zebes ↗

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.

zebes setup guide

Setup note: Zebes is intended to be built from source with Rust. The repository is a Cargo workspace; the frontend uses macroquad and the debugger uses ratatui. The steps below follow the project's README and reflect the supported build/run options documented by the author.

  1. Prerequisites: Install a recent Rust toolchain (rustup, cargo). Ensure your system has dependencies required by macroquad for windowing/graphics (these are platform-dependent: e.g., SDL2 or system OpenGL/Vulkan support on some platforms).
  2. Clone the repository: git clone https://github.com/dnlzrgz/zebes.git cd zebes
  3. Build the project: Build in release mode with Cargo from the workspace root: cargo build –release. This compiles the frontend, core, and debugger per the workspace configuration.
  4. Run the frontend: Run the graphical frontend directly from the workspace: cargo run –release. The frontend expects to be provided NES ROM files externally; the project does not include commercial games or BIOS files.
  5. Run the debugger: Run the terminal-based debugger: cargo run –release -p zebes-debugger. The debugger is a separate workspace member and is intended for inspecting core emulation state.
  6. Install locally (optional): Because zebes and zebes-debugger are not published to crates.io, the README suggests installing from the local clone: cargo install –path zebes and cargo install –path zebes-debugger. This installs binaries to your Cargo bin directory.
  7. Configuration & controls: Default keyboard controls are documented in the README (Z/X for A/B, Space Select, Enter Start, arrow keys for movement, F toggles FPS, R resets). Controller support is described as very basic (keyboard) and the author plans to add controller and customization later.
  8. Limitations & practical notes: There is currently no APU (audio) emulation. Only certain mappers are implemented (NROM, MMC1, UxROM, CNROM, MMC3); other mappers are WIP. Expect missing features and edge-case incompatibilities common to learning-stage emulators. Prebuilt binaries are not guaranteed — building from source is the standard method. Do not expect the project to include or supply NES ROMs; obtain game ROMs and any required firmware legally.

Software reminder: Zebes does not include commercial game ROMs, BIOS or firmware. Ensure you only use game images you legally own. Building requires Rust and any platform dependencies of macroquad; follow the README for current build instructions.

Sources and further reading

Detailed guides and tutorials

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