Skip to content
Screenshot from the video game (own work).
Screenshot from the video game (own work). Image by Jordan Mechner, via Wikimedia Commons (CC BY-SA 4.0).

martypc

MS DOS WINDOWS EMULATOR

martypc

MartyPC is a cycle-aware emulator of early IBM PC, XT, PCjr and Tandy-class machines (targeting MS‑DOS-era software) implemented in Rust. It emphasizes cycle accuracy for the Intel 8088 CPU and detailed peripheral timing, and is distributed as an open-source project with periodic binary releases and nightly build artifacts on GitHub.

ms dos windowsPRIMARY SYSTEM
2022PROJECT BEGAN
Open sourcePROJECT MODEL

WHY IT MATTERS

Why use MartyPC?

MartyPC is intended as a development and research tool for retro PC programmers and preservationists who need detailed timing visibility. It aims for very high cycle accuracy on the 8088 and models many PC-era peripherals (CGA/MDA/Hercules/EGA work in progress, PC speaker, Adlib, SN76489, floppy FDC and DMA).

BEST FOR

Notable strengths

Near-cycle-accurate Intel 8088 emulation with test-suite validation and hardware cross-checking; detailed CGA overscan and composite simulation; built-in debugging/logging features and tooling aimed at retro PC development and demo compatibility (capable of running challenging demos such as 8088MPH and Area5150).

Prince of Persia gameplay on DOS
Gameplay from Prince of Persia on DOS.

The people behind martypc

History & status

MartyPC began as a hobby project in April 2022 and rapidly evolved from a learning project in Rust to a precision PC/XT-family emulator. Development notes on the repository indicate the author focused on making the 8088 cycle-accurate in late 2022 and continued improving peripheral timing through 2023–2024. The project publishes releases and GitHub Actions artifacts; the repository lists Last Released Version 0.4.1 and a development branch/version (0.5.0) in active development. The project is actively maintained on GitHub and also publishes nightly/CI builds for adventurous users. While many devices are implemented and usable, some peripherals and features remain work-in-progress (for example, VGA is under development and some DMA and advanced PIC modes are incomplete).

What martypc supports

  • Windows (official binaries available)
  • Linux (build from source / CI artifacts)
  • macOS (build from source / CI artifacts)
  • Web (WASM frontend available via project demo site)

Download and availability

OFFICIAL DOWNLOADS

Get martypc

Official binary releases and published release assets are available from the project's GitHub Releases page. Nightly/automatic builds are available as GitHub Actions artifacts on the Actions tab. For non-Windows platforms or the latest development versions you will need to build from source using the repository's BUILDING.md instructions.

Get martypc ↗

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.

martypc setup guide

Setup note: Practical setup notes for running MartyPC: you will typically need to download a release or CI artifact, provide any IBM PC ROMs you own (the emulator does not include commercial BIOSes or game files), and optionally build from source if you need the latest features or are on a non‑Windows platform.

  1. 1) Get the official binaries or artifacts: Visit the project's GitHub releases page and download the appropriate release archive for your OS (Windows executables are published as release assets). If you want the absolute newest changes, check the Actions tab for workflow runs and download the artifacts (GitHub login may be required).
  2. 2) Prepare ROMs (BIOS): MartyPC can use real IBM PC/XT ROM images for an authentic experience. The emulator does not ship commercial ROMs or BIOS files — obtain and dump any ROMs legally yourself. Place your ROM files into the emulator's roms/ folder per the project's README/wiki. The wiki contains guidance on supported ROM variants and file placement.
  3. 3) Configure disk images and file system: MartyPC supports various floppy disk image formats via its fluxfox library; use FAT/IMG or supported copy-protected image formats for software you own. Point the emulator's configuration (or command-line options if using a CLI build) to your disk image files. The included User Guide and wiki pages describe image formats and how to map drives.
  4. 4) Run and select machine profile: Launch the binary (or run the built executable). Choose the target machine (IBM 5150, 5160, PCjr, Tandy 1000, Turbo XT, etc.) in the UI or configuration file. If a GUI build is used, native and WASM frontends exist; note that some features differ between frontends.
  5. 5) Tweak performance and backends: If you encounter graphics/back-end issues on older GPUs, set the environment variable recommended by the project (example: WGPU_BACKEND=gl) as documented in releases or the README. For audio and OPL2 Adlib, expect higher CPU usage — the Adlib emulation uses an OPL2 binding that can be CPU-heavy.
  6. 6) Building from source (if needed): Follow BUILDING.md in the repository. The project uses Rust toolchain configuration; install Rust and the required toolchain, then follow the build steps for your platform. The README points to detailed build instructions on the Wiki. Nightly or development branches may require additional dependencies or features.
  7. 7) Debugging and logging: MartyPC is designed with debugging in mind: enable logging, use provided diagnostic views (video, timer, SN76489 oscilloscope view, etc.), and consult the User Guide for specific debug modes helpful when developing or testing software for 8088-era hardware.

Software reminder: MartyPC does not include commercial BIOS, firmware, or game ROMs. Obtain BIOS and game disk images only from legal, permitted sources. Check the repository's BUILDING.md and User Guide for specific build-time tool requirements.

Sources and further reading

Detailed guides and tutorials

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