CPU¶
The cpu_cycles setting controls the speed of the emulated CPU; it’s the single most important performance setting in DOSBox Staging. Getting it right can mean the difference between a game that plays perfectly and one that stutters, crawls, or races through its intro sequence.
Too many cycles and you’ll get sound stuttering and input lag as your host CPU struggles to keep up. Too few and the game turns into a slideshow. Finding the sweet spot for each game is part of the charm of retro gaming.
As a rough guide: early 8088-era games (Alley Cat, Sopwith) need around 300 cycles. 386-era titles want roughly 3,000–6,000. 486-class games like Doom are playable at around 25,000 but might need up 50,000 cycles for a completely smooth experience. Late Pentium-era titles such as Quake need 50,000 to 100,000 cycles or even more. See the cpu_cycles table for further details, or the Getting Started guide for a practical walkthrough of finding the right speed.
The auto setting for core is the most sensible default — it uses the faster
dynamic recompiler for protected-mode games and the more accurate normal
interpreter for real-mode programs. You’ll rarely need to override this.
Protected and real mode¶
DOS games released before about 1993 use real mode (the legacy 16-bit programming model of the Intel 386), while games from 1993 onwards almost exclusively use protected mode (full 32-bit operation). The important distinction is that most CPU-hungry games are protected mode games (e.g., FPS games and flight simulators), while older real mode games generally have much less demanding performance requirements.
DOSBox Staging detects the current mode automatically and applies different default speeds:
- Real mode: 3000 cycles/ms (roughly a 386SX at 20 MHz)
- Protected mode: 60,000 cycles/ms (roughly a Pentium at 90 MHz)
The conservative real mode default prevents older speed-sensitive games from running too fast. The higher protected mode default gives demanding games the headroom they need.
You can easily tell which mode a game uses by watching the cycles value in the
DOSBox Staging window’s title bar — it will show 3000 in real mode and
60,000 in protected mode (assuming default settings). You can also spot
protected mode games by the presence of DOS extenders such as DOS4GW.EXE,
PMODEW.EXE, or CWSDPMI.EXE in their game directories.
Finding the correct cycles setting for a game¶
While the defaults get most games running, manual tweaking is often needed to make a game run smoothly. Setting the cycles too high wastes host CPU power that could be used for glitch-free audio emulation — there’s no benefit to emulating a faster CPU than the game actually needs.
Use the cpu_cycles table as a starting point: look up what CPU the game was designed for, set the corresponding cycles value, then fine-tune from there:
- Early DOS games from the 1980s usually run fine at 3,000 cycles (386SX/20 level)
- For 2D games from the 1990s, 25,000 cycles (486DX2/66 level) handles virtually everything
- 3D games typically need 50,000–100,000 cycles (Pentium range)
- 3D SVGA gaming at 640Ă—480 or above may require 200,000+ cycles
You can adjust the cycles on the fly while playing with Ctrl+F11 to decrease by 20% and Ctrl+F12 to increase by 10% (Cmd+F11 and Cmd+F12 on macOS). Once you’ve found a good value, update your config to match.
Always aim for the lowest cycles value that gives adequate performance — overdoing it only increases the chance of audio glitches and wastes host CPU resources.
Speed-sensitive games
Some games, particularly those from the 1980s and early 1990s, are sensitive to CPU speed. Setting cycles too high can cause them to run too fast, behave erratically, or crash outright (e.g., “integer divide by 0” errors). A few games may even fail sound card detection and refuse to start if the emulated CPU is too fast. If a game misbehaves, try lowering the cycles before investigating other causes.
For a hands-on walkthrough of finding the right cycles setting for specific games, the Getting Started guide walks you through a few a practical examples:
Configuration examples¶
Fixed speed globally — Roughly emulates an 486DX2/66 in both real and protected mode:
Different real and protected mode speeds — 20,000 cycles for real mode, 400,000 for protected mode, with throttling enabled so the host CPU doesn’t get overloaded:
Max speed — As fast as your host CPU can handle. Useful when compiling programs, rendering 3D images, or playing late-90s 3D games at high resolutions:
Warning
Using max cycles can cause problems: some games crash or misbehave
when the emulated CPU is “too fast”. The effective speed varies across
different host machines, and audio glitches are common. It’s best to use
the lowest fixed cycles value that runs the game at an acceptable speed.
Configuration settings¶
You can set the CPU emulation parameters in the [cpu] configuration
section.
core¶
-
Type of CPU emulation core to use.
Possible values:
-
autodefault –normalcore for real mode programs,dynamiccore for protected mode programs. Most programs will run correctly with this setting. -
normal– The DOS program is interpreted instruction by instruction. This yields the most accurate timings, but puts 3–5 times more load on the host CPU compared to thedynamiccore. Therefore, it’s generally only recommended for real mode programs that don’t need a fast emulated CPU or are timing-sensitive. Thenormalcore is also necessary for programs that self-modify their code. -
simple– Thenormalcore optimised for old real mode programs; it might give you slightly better compatibility with older games. Auto-switches to thenormalcore in protected mode. -
dynamic– The instructions of the DOS program are translated to host CPU instructions in blocks and are then executed directly. This puts 3–5 times less load on the host CPU compared to thenormalcore, but the timings might be less accurate. Thedynamiccore is a necessity for demanding DOS programs (e.g., 3D SVGA games). Programs that self-modify their code might misbehave or crash on thedynamiccore; use thenormalcore for such programs.
-
cputype¶
-
CPU type to emulate. You should only change this if the program doesn’t run correctly on
auto.Possible values:
autodefault – The fastest and most compatible setting. Technically, this is386_fastplus 486 CPUID, 486 CR register behaviour, and extra 486 instructions.386– 386 CPUID and 386-specific page access level calculation.386_fast– Same as386but with loose page privilege checks which is much faster.386_prefetch– Same as386_fastplus accurate CPU prefetch queue emulation. Requirescore = normal. This setting is necessary for programs that self-modify their code or employ anti-debugging tricks. Games that require386_prefetchinclude Contra, FIFA International Soccer (1994), Terminator 1, and X-Men: Madness in The Murderworld.486– 486 CPUID, 486+ specific page access level calculation, 486 CR register behaviour, and extra 486 instructions.pentium– Same as486but with Pentium CPUID, Pentium CR register behaviour, and RDTSC instruction support. Recommended for Windows 3.1 games (e.g., Betrayal in Antara).pentium_mmx– Same aspentiumplus MMX instruction set support. Very few games use MMX instructions; it’s mostly only useful for demoscene productions.
cpu_cycles¶
-
Speed of the emulated CPU (
3000by default). If cpu_cycles_protected is onauto, this sets the cycles for both real and protected mode programs.Possible values:
<number>– Emulate a fixed number of cycles per millisecond (roughly equivalent to MIPS). Valid range is from 50 to 2000000.max– Emulate as many cycles as your host CPU can handle on a single core. The number of cycles per millisecond can vary; this might cause issues in some DOS programs.
Ballpark cycles values for common CPUs (treat as starting points, then fine-tune per game):
Emulated CPU MHz Cycles Year 8088 4.77 300 1981 286 8 700 1984 286 12 1500 1986 286 25 3000 1988 386DX 25 4500 1988 386DX 33 6000 1989 386DX 40 9000 1991 486DX 33 12000 1990 486DX2 66 25000 1992 486DX4 100 35000 1994 Intel Pentium 90 50000 1994 Intel Pentium 100 60000 1994 Intel Pentium 120 75000 1995 Intel Pentium 133 80000 1995 Intel Pentium MMX 166 100000 1997 Intel Pentium II 300 200000 1997 Intel Pentium III 866 400000 2000 Note
-
Setting the CPU speed to
maxor to high fixed values may result in sound drop-outs and general lagginess. -
Set the lowest fixed cycles value that runs the game at an acceptable speed for the best results.
cpu_cycles_protected¶
-
Speed of the emulated CPU for protected mode programs only.
Possible values:
auto– Use the cpu_cycles setting.<number>– Emulate a fixed number of cycles per millisecond (roughly equivalent to MIPS). Valid range is from 50 to 2000000.max– Emulate as many cycles as your host CPU can handle on a single core.
The default is
60000.Note
See cpu_cycles for further info.
cpu_throttle¶
-
Throttle down the number of emulated CPU cycles dynamically if your host CPU cannot keep up. Only affects fixed cycles settings. When enabled, the number of cycles per millisecond can vary; this might cause issues in some DOS programs.
Possible values:
on,offdefault
cycledown¶
- Number of cycles to subtract with the
Dec Cycleshotkey (20by default). Values lower than 100 are treated as a percentage decrease.
cycleup¶
- Number of cycles to add with the
Inc Cycleshotkey (10by default). Values lower than 100 are treated as a percentage increase.
cpu_idle¶
-
Reduce host CPU usage when the DOS shell or an application is idle. With
cpu_cyclesset tomax, this can reduce host CPU core usage from ~100% to around 25% when the shell is idle.This also makes the shell more multitasking-friendly, which benefits Windows 3.1 DOS prompts.
The feature works by emulating the HLT CPU instruction, so it might interfere with third-party DOS power management tools such as DOSidle and FDAPM — disable it if you use those.
Possible values:
ondefault,off