RUST-DOS

Lightning-fast x86 DOS emulator
For all platforms and the web

Download GitHub

v1.8.3 · Windows · macOS · Linux · RetroArch · GPL-2.0

Live demo

Rust-DOS

Pentium · 32 MB · Sound Blaster 16 · Gravis Ultrasound

C:\DESCENTDescent shareware
C:\DUKE3DDuke Nukem 3D shareware

Features

CPU and memory

  • 386/486 protected mode
  • DOS/4GW, DOS extenders
  • 386, 486, Pentium MMX
  • Pentium II, III, K6-2
  • Dynamic recompiler
  • Automatic CPU speed
  • XMS, EMS 4.0, LOADHIGH
  • Up to 512 MB of RAM

Graphics

  • VGA and Mode X
  • 3dfx Voodoo 1/2/3
  • S3 ViRGE with Direct3D
  • PowerVR PCX1+2
  • ATI 3D Rage 1+2
  • Rendition Vérité
  • VESA VBE 2.0, 1024x768
  • Tseng ET4000 HiColor
  • CGA, EGA, Hercules
  • Tandy 1000, IBM PCjr
  • Monochrome monitors
  • CRT shaders and realtime effects

Sound

  • Sound Blaster AWE32, 16, Pro
  • Gravis Ultrasound
  • Covox Speech Thing
  • Disney Sound Source
  • Reverb and chorus effects
  • Disk drive noises

Music

  • OPL3 FM synthesis
  • AWE32 wavetable (EMU8000)
  • General MIDI, MPU-401
  • SoundFont, GUS patches
  • Roland MT-32 via munt
  • Roland SC-55
  • MIDI out to host ports
  • CD audio

Drives

  • Mount Floppy and HDD images
  • Mount CD images (ISO, CUE)
  • VHD and CHD disk images
  • 86F disk images
  • Play zip and 7z archives
  • FAT32 and long file names
  • IDE hard disks, CD-ROM
  • Host folders as drives
  • Host folders in Windows 95
  • Write overlays, game reset
  • Boot disk images at startup
  • Swap disks mid-game
  • Disk speed emulation

Networking

  • IPX games, LAN and online
  • Null modem and modem games
  • Hayes modem dials over TCP
  • NE2000 to the internet
  • Authentic dialup modem sounds

Extras

  • RetroAchievements
  • libretro core for RetroArch
  • Save and load game states
  • Rewind and Fast-forward
  • Game profiles and GOG loader
  • Game packages, DOSBox import
  • PDF manuals and code wheels
  • Gamepads as joysticks
  • Cheat finder
  • Epson printer to PDF, PNG
  • Host clipboard copy & paste
  • F1 help for every setting
  • DOS prompt with pipes
  • PNG, WAV, AVI capture
  • Web-based DOS Debugger
  • Internet BBS phonebook
  • Built-in file manager "RC"

Built-in Windows

New in Rust-DOS

Windows games, without Windows

Rust-DOS has a Windows of its own built in. Its KERNEL32, USER32, GDI32, DirectX and the other system DLLs are written into the emulator, as its DOS is. No Windows installation, no disk image, no Windows files: type the game's name at the DOS prompt and it runs.

  • Windows 95 and 98 games
  • Windows 3.1 programs
  • DirectDraw, DirectSound, DirectInput
  • Direct3D 5, 6 and 8 on a 3dfx card
  • OpenGL and Glide
  • DirectMusic, wave audio, MIDI, CD audio
  • DirectPlay multiplayer via the lobby
  • InstallShield and Wise setups
  • Unpack installers without the setup
  • AVI video, Cinepak included
  • Registry as an editable text file
  • Game profiles and GOG import
  • BlindWrite, CloneCD, Alcohol 120% image support
  • SafeDisk and SecuROM support

How it works... Games known to run

Experimental: runs fewer games than a Windows installation does

Windows 95 and 98 installations

Boot your own Windows 95 or 98 hard disk image, as in DOSBox-X, for the games that need the real thing.

  • 3dfx Voodoo 1/2/3 support
  • S3 ViRGE with Direct3D
  • ATI 3D RAGE drivers
  • S3 Trio and ATAPI CD-ROM
  • IDE disks, 32-bit disk access
  • Host folders as disks and CDs
  • Sound Blaster, GUS, MPU-401
  • PnP BIOS
  • TCP Internet Connectivity

Windows 3.x

Install Windows 3.1 or 3.11 on the emulated disk and start it from the DOS prompt, as on a 1993 PC.

  • Normal and 386 enhanced mode
  • Sound and media playback
  • Internet via Trumpet and NE2000

Screenshots

A tour of Rust-DOS: Descent, Norton Commander, Stunts, Test Drive III and F-15 Strike Eagle II, and the settings window's Drives, Display, Emulator, Sound, Mixer, Games, Cheats and Stats pages

VR and 3D rooms

Windows 3.1's Program Manager on a beige PC's monitor, on a desk in a dark room lit by a desk lamp, with speakers, keyboard and mouseAn instant camera on the desk beside the keyboard, with three photos it took of the bedroom

Sit at the PC you had as a kid. Experience immersive 3D scenes on your 2D monitor or in an OpenXR headset and your Steam Frame.

  • Steam Frame standalone and streaming mode support
  • Foveated rendering
  • Model your own room in Blender
  • Browse and download new scenes
  • Working power and HDD activity lights
  • 2D, 3D and VR without a restart
  • Pointer support, controllers as gamepad
  • Virtual Joystick and game manual
  • Physical keyboard passthrough rendering
  • Instant camera, switchable room lights
  • Day/Night cycle and weather simulation
  • VFX-1 Headset emulation in VR

Debugger

The Rust-DOS debugger in a browser, paused in Descent: the game's screen, disassembly, registers, memory, stack and the DOS log

Start Rust-DOS with --debug-server and open the debugger in a browser, or drive the machine from scripts and LLMs over its HTTP API.

  • Pause, step, step over, run to
  • Disassembly with breakpoints
  • Registers, flags, memory, stack
  • Watchpoints and instruction trace
  • Screen with remote keyboard, mouse
  • DOS log, tables and machine state
  • Memory heatmap

Q & A

What is Rust-DOS?

An emulator of a DOS PC, written in Rust, for the games of DOS's golden age: from the early PC games of the 1980s to the 3D games of the late 1990s, and Windows 95 / 98 games, with or without a copy of Windows.

It runs on Windows, macOS and Linux, as a core for RetroArch, and in the browser, as the live demo above does. DOS is built in, so there is nothing else to install: drop a game's folder, a zip or a CD image onto the window and play.

Is this a Dosbox-recomp?

No. The CPU/FPU core, dynamic recompiler, VGA, DPMI, GUS, SoundBlaster, MPU-401, Networking, VR code, etc. is original Rust code.

The parts that were ported from Dosbox-X and Dosbox-Staging are the 3dfx Voodoo core, the S3 Trio 64/ViRGE, and much of the IDE, ATA and ATAPI code. The SoundCanvas code is based on the Nuked-SC55 project. Early versions had a port of the zip handling code from Dosbox-Pure but this was replaced with new Rust code following Rust conventions. Some similarities with Dosbox-Staging exist due to implementation of identical behavior. The disk noise algorithm and sounds are the same as Dosbox-Staging, but then again I've contributed this feature there too.

In any case, these projects are under the same GPL license as Rust-DOS.

Which games work?

Most DOS games, from real-mode games for the 8088 to protected-mode games with DOS extenders such as DOS/4GW. Among them:

  • Doom, Heretic, Wolfenstein 3D and Duke Nukem 3D
  • Descent and Descent II
  • Quake in DOS, in software or with the 3dfx Voodoo
  • Tomb Raider in 3dfx mode, with its 3dfx patch
  • SubCulture in 3dfx mode, under Windows 9x, with its CD music
  • Commander Keen, Jill of the Jungle, Cosmo, Raptor, Scorched Earth
  • Alley Cat, Digger, Sopwith, Rogue and other games of the CGA era

Many of these are in Rust-DOS's regression suite, which plays them on 386, 486 and Pentium machines with each sound card and checks that the pictures and sound come out the same every time.

Rust-DOS is still young, and some games may not run properly yet. If yours doesn't, please report it on GitHub.

How fast is it next to DOSBox?

At the same fixed CPU speed, Rust-DOS, DOSBox-X and DOSBox Staging emulate the same machine and would get the same benchmark scores. What differs is how much of the host's CPU each needs for the same amount of DOS work.

These tables show the Host CPU time on an x86-64 PC, in seconds, at the same fixed speed. Lower is better.

┌─────────────┬──────────┬──────────┬─────────┐
│             │ Rust-DOS │ DOSBox-X │ Staging │
├─────────────┼──────────┼──────────┼─────────┤
│ 3DBench     │     0.80 │     2.18 │    1.54 │
│ Doom        │     3.91 │     4.06 │    4.26 │
│ PC Player   │     2.44 │     3.16 │    3.38 │
│ Chris's 3D  │     0.68 │     1.80 │    0.76 │
│ Quake       │     3.83 │     3.63 │    3.39 │
│ Quake 3dfx  │    27.5  │    35.3  │   86.4  │
└─────────────┴──────────┴──────────┴─────────┘

In most cases Rust-DOS needs the least host CPU: about half of Staging's on 3DBench and a third on Quake with the 3dfx Voodoo, and about a tenth less than Staging on Doom and Chris's 3D. Staging is still faster on software-rendered Quake.

On a Raspberry Pi 5 (ARM64), Rust-DOS needs less CPU than DOSBox Staging on every test, a quarter to two thirds of Staging's time.

┌─────────────┬──────────┬──────────┬──────────┐
│             │ Rust-DOS │  Staging │ ×Staging │
├─────────────┼──────────┼──────────┼──────────┤
│ 3DBench     │     1.51 │     5.59 │     0.27 │
│ Doom        │    11.84 │    19.13 │     0.62 │
│ PC Player   │     7.97 │    17.20 │     0.46 │
│ Chris's 3D  │     1.75 │     4.00 │     0.44 │
│ Quake       │    12.85 │    21.68 │     0.59 │
│ Quake 3dfx  │    74.7  │   112.3  │     0.67 │
└─────────────┴──────────┴──────────┴──────────┘

The maximum emulation speed, flat out at 2,000,000 cycles, shows the frames per second on a x86-64 PC. Higher is better.

┌─────────────┬──────────┬──────────┬─────────┐
│             │ Rust-DOS │ DOSBox-X │ Staging │
├─────────────┼──────────┼──────────┼─────────┤
│ Doom        │  313 fps │  198 fps │ 233 fps │
│ Quake       │  351 fps │  254 fps │ 394 fps │
│ Quake 3dfx  │ 35.9 fps │ 23.4 fps │34.3 fps │
└─────────────┴──────────┴──────────┴─────────┘

AMD Ryzen AI Max+ 395 with Arch Linux, and Raspberry Pi 5 with Debian 12, October 2026. Rust-DOS built after v1.3.0, DOSBox-X 2026.10.01 with its dynamic core running the FPU, DOSBox Staging 0.83.0. An emulated Pentium with the dynamic core, an S3 Trio and an SB16; medians of three runs. Benchmarks from Phil's DOS Benchmark Pack 1.6; Quake 3dfx is QDOS with Glide 3.

Note:These tests are conducted under specific conditions and may not reflect performance in all scenarios. Individual results can vary depending on the hardware and software environment. There may also be programs that could run significantly worse on Rust-DOS due to emulation inaccuracies. If you experience this, please let us know on our GitHub issues page.

Why not just use DOSBox?

DOSBox, DOSBox Staging and DOSBox-X are excellent, and Rust-DOS learned a great deal from them. Rust-DOS puts ease of use first: a game should just work, without reading up on configuration files first.

  • It's faster than DOSBox... well, in most cases. Individual games and scenarios may vary, but generally Rust-DOS delivers better performance, especially on weaker systems or a Raspberry Pi.
  • No complex sound setup: Most Cards including the Gravis Ultrasound just work out of the box. If you own a SoundCanvas or MT32, the corresponding ROMs can be downloaded with one button press from within Rust-DOS.
  • Automatic CPU speed governor automatically adjusts the CPU speed based on the game's needs, significantly improving on DOSBox's "auto" cycles mode.
  • Online rooms without port forwarding. Simply create or join a lobby and play IPX, TCP and serial cable and modem games with friends.
  • A settings window (Ctrl+F12) allows changing most settings without restart, with friendly F1 help for every setting.
  • Drop and play: Your favorite game's folder, .zip or .7z, a DOS game from a GOG install, or a CD / disk image.
  • Extras such as save states, rewind, RetroAchievements, a game's PDF manual and code wheel over the picture, and a cheat finder.
  • Debugging tools including a REST/WS API as well as a full web interface with live debugging and memory inspection capabilities.
Do I have to set the CPU speed?

No. With cycles=auto, the default, Rust-DOS watches the frames a game draws. It speeds the CPU up while the frame rate follows, and stops where it doesn't: where the game caps its own frame rate, or at the display's refresh rate. While a game waits for a key, it slows down again.

There is of course always the option of manually setting the CPU speed using the cycles configuration option.

How precise is the FPU?

The floating-point unit (the 387 maths coprocessor) has two modes in Rust-DOS:

  • exact: on 80 bits, like a real 387. Every game computes exactly what it would on an actual PC. The default.
  • fast: on the host's 64-bit doubles, as multiplications and divisions always are. Games that compute a lot with the FPU (Quake, flight simulators, 3D benchmarks) need noticeably less host CPU, which helps on slow hosts such as a Raspberry Pi.

Fast results can differ from a real machine's in their last digits, and always round to nearest. Most games never notice. Pick exact if a game draws or behaves oddly in fast mode, or for benchmarks that check the FPU's precision.

In the benchmarks, fast mode took Quake from 1.22 to 1.05 times DOSBox Staging's host CPU, and Chris's 3D from 0.99 to 0.90, with the same scores. On the Raspberry Pi 5, Quake went from 0.59 to 0.56 times Staging's.

Like most settings in Rust-DOS, the FPU mode (fpu in the configuration file) can be changed without restarting.

How do I play online?

Rust-DOS instances play IPX games together, as PCs on one network would. They meet in a room at a relay, which passes their traffic on. The public relay, relay.rust-dos.com, is there for everyone, and since every player connects out to it, nobody has to forward a port, set up a VPN or install a network driver.

In the settings window (Ctrl+F12), the Network page lists the rooms on your network and online, and makes new ones, with a password if you like.

Just create or join a lobby, then start the game's network play as usual: IPXSETUP for Doom and Heretic, the game's own setup for the others. Null modem and modem games work between the first two players in a room.

Can I use my DOSBox setups?

Yes. A game set up for DOSBox, a GOG game or a DOSBox configuration file becomes a game profile with the settings window's Import, or by dropping it onto the window. The profile takes the CPU, memory, video, sound and joystick settings, the drives it mounts and its start commands.

The configuration file is in DOSBox's style, and MOUNT and IMGMOUNT take DOSBox Staging's syntax. A game's files stay as they were installed; its saves and changes go into a folder of their own, and a reset takes the game back.

Does it run 3dfx Voodoo games?

Yes. With voodoo=true the machine has a 3dfx Voodoo Graphics, for Glide games in DOS and in Windows 95/98, drawn by Rust-DOS or again with OpenGL at up to four times the card's resolution.

  • Quake in DOS, as QDOS with Glide
  • Tomb Raider, with the 3dfx patch from the Tomb Raider Gold CD
  • SubCulture's 3dfx version, under Windows 95/98, with its CD music
  • GLQuake with 3dfx's MiniGL, under Windows 95/98

Glide games expect a Pentium, so set cpu=pentium as well. Direct3D games under Windows 95/98 run on the emulated S3 ViRGE.

Does it run Windows?

It doesn't need to: Rust-DOS has a Windows of its own built in, its system DLLs written into the emulator as its DOS is. Windows 95 and 98 games and Windows 3.1 programs start from the DOS prompt like DOS games, with DirectX, Glide and OpenGL, their setups, and DirectPlay multiplayer through the lobby. It is experimental and runs fewer games than a real Windows does.

Windows 3.x itself runs from the DOS prompt in normal and 386 enhanced mode, with sound, and with Trumpet Winsock on the NE2000 for the internet.

Windows 95/98 runs from a hard disk image of your own (BOOT, or at every start): with IDE disks and a CD-ROM drive for its 32-bit disk access, Plug and Play, Sound Blaster and GUS, an S3 Trio, the S3 ViRGE for Direct3D and the 3dfx Voodoo. Your folders reach it as extra hard disks or CDs.

Can I play in VR?

Yes. The DOS screen becomes the monitor of a PC in a 3D room, and you sit in front of it. Its picture lights the room, the sound comes from the speakers on the desk, and the power and disk lights work.

  • --vr, or the settings window's VR page, shows the room in a VR headset
  • --vr-desktop shows it in the window, no headset needed: hold Ctrl+Shift and move the mouse to look around
  • Switch between 2D, 3D and VR at any time, without a restart

With a headset, a controller points a laser at the screen as the mouse, and the thumbsticks and buttons are the joystick. Ctrl+Shift+Home centers the view where you sit.

Which VR headsets work?

Headsets that SteamVR or Monado drive through OpenXR, such as the Valve Index, HTC Vive, Varjo and Windows Mixed Reality headsets. On Windows the .msi and the .zip bring the OpenXR loader along; on Linux, install your distribution's openxr package (the .deb recommends it).

The Steam Frame works too, standalone or streamed: see below.

Does it work on the Steam Frame?

Yes. Rust-DOS runs standalone on the Steam Frame itself with smooth performance, both as a plain 2D window and a 3D VR scene with foveated rendering. Power usage when running standalone on the Steam Frame is around 12-16 Watts with the full "90s bedroom" 3D scene being rendered.

You can also run Rust-DOS on your PC and let SteamVR stream the picture to the headset.

Can I build my own VR room?

Yes: model your childhood bedroom, or that LAN party, in Blender and export it as glTF. A mesh named screen shows the DOS picture and an empty named spawn is where you sit; speakers, the PC's lights and the rest are optional. The guide to building rooms explains it all, and the repository has an example .blend to start from.

The settings window's VR page also downloads rooms that others have shared, such as the 90s bedroom. Made one you'd like to share? Open an issue on GitHub and it can join the list.

Do I need DOS or a BIOS ROM?

No. Rust-DOS has its own DOS and BIOS: XMS, EMS, a DPMI host for DOS extenders, upper memory, a mouse driver, keyboard layouts and a DOS prompt with batch files, pipes and EDIT. A real MS-DOS boots from a disk image too, for the rare game that wants it.

What about AWE32, MT-32 and SC-55?

They all work. The Roland MT-32 is emulated by munt, AWE32 is supported natively, and the Sound Canvas SC-55 by a built-in port of Nuked-SC55. Rust-DOS automatically discovers existing ROMs on your system.

If you own the Sound Canvas SC-55 or the AWE32, Rust-DOS can automatically download their ROMs for you.

Which computers does it run on?

Windows (7 and later), macOS (Apple Silicon and Intel) and Linux (x86_64, and ARM64 boards such as the Raspberry Pi), as a libretro core for RetroArch, and in the browser as WebAssembly.

The dynamic recompiler, which runs protected-mode games several times faster, works on both x86-64 and ARM64 hosts.

Does the live demo keep my files?

No. The demo runs from a copy of its disk in memory: what DOS writes to C:, and the save states, are gone when the page closes.

The full web build, rust-dos-<version>-web.zip from the downloads, keeps a 250 MB C: in the browser's storage, and takes files, folders and zip archives dropped onto the page.

A game doesn't work. What now?

First try another machine in the settings window (Ctrl+F12): a 486 instead of a Pentium, less memory, another sound card, or the interpreter instead of the dynamic core.

If it still fails, please open an issue on GitHub with the game's name and version, and attach Rust-DOS.log from the configuration folder. It lists what the game asked for that Rust-DOS doesn't do yet.

Is it free?

Yes. Rust-DOS is free and open source, under the GNU General Public License, version 2 or later. The source is on GitHub, and contributions are welcome.

About

Rust-DOS

Version 1.8.3

An x86 DOS emulator
written in Rust

© dividebysandwich · GPL-2.0

IBM VGA font by VileR, int10h.org
CC BY-SA 4.0

Keyboard

F10
Menu
F1
This help
Live demo
Enter
Power on
Ctrl+F10
Keyboard back to the page
Ctrl+F11
Zoom
Ctrl+F12
Settings
Ctrl+F8
Sound on / off
Ctrl+F1
Save state
Ctrl+F2
Load state
Ctrl+F3
Next slot (Shift: previous)
Ctrl+F9
Save states
Ctrl+F5
Screenshot
Ctrl+F7
Record video
Ctrl+Shift+F12
Performance overlay
Alt+Pause
Pause
Alt+F12
Fast forward (hold)
Questions
↑ ↓
Select a question
Tab
To the answer
Esc
Fold the questions in
Download
↑ ↓
Select
Enter
Open / download
Bksp
Parent directory
F5
Copy (download)