Repository navigation
v1.3.1
What's new
Optimizations!
A large amount of individual optimizations have been implemented in order to close some of the performance gaps to other DOS emulators:
- Busy-wait fast-forward reduced the cost of idling - this mostly saves battery on portable devices
- Guest flags now live in the host flags, allowing special instructions to be used
- Target specific host instructions are now used extensively on both X86_64 and ARM64
- Fewer block transitions with various individual optimization strategies like superblock optimization, a hot/cold split, etc.
- More code is now translated to native instructions, both in real mode and protected mode.
- Native bulk string operations
- Improved Voodoo software rasterizer
- Native end-to-end RGBA pipeline, improvements to VBE/S3 linear modes, the S3 Trio 2D engine and the Virge 3D code
- Various free plumbing wins gave another 3-5%
The result is that, depending on the application, Rust-DOS is often faster than Dosbox-X and Dosbox-Staging.
As can be seen in this table, Dosbox-Staging is still faster in software rendered Quake, and likely in some other games too. So the answer to the question "Is Rust-DOS faster" is a definitive "depends"... though most games should be faster.
On the Raspberry Pi 5, Rust-DOS is most definitely faster however:
If I made any mistakes in testing please let me know. For example Dosbox-X performed poorly in Quake until I changed some settings from their default - which in fairness the manual does mention, but it was not something I would've expected.
NOTE: Dosbox-X and Dosbox-Staging are proven and battle-tested - Unlike Rust-DOS. So while it may be faster, there may be games that have issues or straight up don't work yet. In such cases please file a bug report.
New Floating Point Unit emulation modes
The FPU emulation now has two modes: Accurate and Fast. The default is Accurate-FPU mode, which means full F80 floating point ADD/SUB math using the f80 Rust crate. On the other hand, Fast-FPU mode cuts this down to 64-bit precision which is enough for the vast majority of games and applications. Also note that the effects really depend on the program, for example Descent doesn't really care, while Quake can speedups of 10%-12% by using Fast-FPU mode without a single pixel on the screen looking different.
This setting can be found in the Emulator tab of the settings UI.
Gravis Ultrasound MIDI patch corruption fixes
There were two subtle bugs in GUS patch management that caused both attack envelope and loop point / tail corruption. These have been fixed and even demanding MIDI music such as Descent 2 Level 2 sound precisely like the real thing.
Settings UI tab reordering
Games and State are now the first two tabs in the settings UI. This should help encourage users to build up their Games library and use savestates, since these are more of a daily task than actually changing the display, emulator or sound settings.
