NES EMULATOR
lazyboNES
A compact, single-repo NES emulator focused on running Super Mario Bros and related Famicom content in a text-mode terminal (also supports SDL2 output).

WHY IT MATTERS
Why this project exists
lazyboNES was created as a novelty/specialized NES implementation that renders NES video as text characters in a terminal. The project intentionally trades broad compatibility for features tied to Super Mario Bros and Famicom-specific experiments (BASIC cassette support, FDS booting, TAS playback, terminal colour modes).
BEST FOR
What it does best
Renders Super Mario Bros (and some Famicom software) in a terminal using curses/ANSI/256-color modes, with optional SDL2 graphical output and support for Famicom Disk System content and Family BASIC keyboard/cassette emulation for experiments and demonstrations.
The people behind lazyboNES
History and status
The repository and README document a short version history (0.1 through 0.9) and link to several developer blog posts demonstrating features such as TAS support, FDS support, telnet/terminal hacks and Family BASIC support. The codebase is small (C source files for CPU, PPU, APU, input, terminal UI and optional SDL2 GUI). Activity and release metadata are available from the GitHub repository; the project is maintained in a single public repository and distributed under an MIT license. Specific feature notes in the README state the emulator is heavily tied to Super Mario Bros and that other games may not render well. Blog posts from the author document later features (including Family BASIC and terminal/telnet updates).
What lazyboNES supports
- Nintendo Entertainment System (NES) including Famicom Disk System (FDS) support
- Text-mode terminal output (curses/ANSI/256-color)
- SDL2 graphical output (optional)
- Joystick/gamepad input via SDL2
- Famicom Family BASIC keyboard and data-recorder (cassette/WAV) support
Download and availability
OFFICIAL DOWNLOADS
Get lazyboNES
Official source and any releases are published on the project's GitHub repository. Visit the repository to clone the source or fetch release tarballs/binaries if provided.
Get lazyboNES ↗DOCUMENTATION
Official documentation
Read the official configuration, compatibility, and troubleshooting material before changing advanced options.
Read official documentation ↗lazyboNES setup guide
Setup note: This guide describes how to get lazyboNES from the official repository, build it and run SMB or FDS content. It focuses on the repository's verified files and common, practical steps for typical Unix-like and Windows builds.
- 1. Get the source: Clone the official repository: git clone https://github.com/kobolt/lazyboNES and change into the project directory.
- 2. Install dependencies: The codebase builds as a small C project and references ncurses/curses for terminal output and SDL2 for optional graphical/windowed output. On Linux install your distribution packages for SDL2 development headers and ncurses (names vary by distro, e.g. libsdl2-dev and libncurses-dev). On Windows the repository contains a Makefile.mingw which indicates a MinGW/MSYS build path and that SDL2 development libraries will be required.
- 3. Build: From the project root run make to compile for a Unix-like environment. A Makefile.mingw is provided for Windows/MinGW builds — use that with an appropriate MinGW/MSYS environment and installed SDL2 development packages. The repository also contains a plain Makefile and a top-level Makefile; inspect them for platform-specific targets and flags.
- 4. Run with a ROM or FDS image: The README makes clear you must provide your own game files; commercial game ROMs, firmware or BIOS files are not included. Start the emulator from the built binary and provide a supported ROM or FDS image as the program expects (refer to the README and the project's command-line options). Terminal mode is the special mode for text rendering; SDL2 mode can be used for conventional pixel output.
- 5. Controls, TAS and BASIC features: The project supports joystick/gamepad input via SDL2; keyboard input in the terminal is supported but described as difficult to use. TAS input in FM2 format and Family BASIC cassette (WAV) loading/saving are implemented — the repository and the author's blog posts describe usage and helper scripts (for example a tpr→WAV converter for Family BASIC cassette data). For Family BASIC features you must enable the emulator's BASIC mode (a command-line option) as documented in the project's README and blog posts.
- 6. Debugging and special features: The README documents an in-emulator debugger (Ctrl+C drops into a debugger for dumps) and notes a single in-memory save slot for states. The emulator supports a limited APU implementation (pulse/triangle/noise channels but not DMC) and only horizontal scrolling in the PPU; expect visual/audio differences compared to full-featured NES emulators.
Software reminder: You must provide any ROM, FDS image, Family BASIC files or other copyrighted content yourself; lazyboNES does not include commercial game content, BIOS or firmware.
Sources and further reading
Detailed guides and tutorials
Explore step-by-step guides for lazyboNES as they are published.
Retro Replay Retro Gaming History, Reviews & Emulation
