What's new
Built-in editor
- This is a rust-implementation of the MS-DOS original.
Overlay support for disk images
- When mounting a readonly disk image with a write overlay, writes go to .rdelta files in 64kB blocks.
- If the base image changes lateron, the delta files are refused.
- If Rust-DOS is killed during writes, only that 64kB block is lost.
Drive selection buttons for Windows
- For windows users, choosing which disk to browse was not straightforward. They now see dedicated drive buttons.
Reboot
There's now support for the following reboot mechanisms:
- port 92h
- writing 06h/0Eh to port CF9h (new)
- INT 19h
- jumping to FFFF:0000
- a triple fault
- Ctrl+Alt+Del at the prompt (new)
- a new debug server call, POST /api/control/reboot
Automated Game Regression Test Suite
- This suite downloads approx. 19 MB of shareware and freeware and runs a test suite with various scenarios and configurations.
- Each scenario takes picture and sound hashes at fixed points and compares them against "golden" masters.
- When a hash changes, the run saves the new picture or sound next to the previously recorded one in target/game_suite/, and writes report.md.
- If changes are desired/expected, run with
GAME_SUITE_BLESS=1to re-record new hashes.
Games tested
- Early PC games: Alley Cat, Digger, Sopwith, Rogue, Scorched Earth.
- Real-mode games: Keen 1, Wolf3D, Jill (in CGA, EGA and VGA modes), Cosmo, Duke Nukum.
- Protected-mode games: Doom, Heretic, Duke3D, Descent, Raptor.
Test configurations
- CPU and core: 386, 486 and Pentium, from 300 to 80000 cycles. Pairs of scenarios run on both the interpreter and the dynamic recompiler and must give the same hashes.
- Sound: PC speaker, SB 2.0, SB Pro 2, SB16, Gravis Ultrasound, General MIDI and Disney Sound Source.
- Two linked machines: Doom over IPX, a null-modem cable and a modem call, plus Heretic over IPX. Both machines must reach the game and stay in it.
How to run
cargo test --release --test game_suite -- --ignored --nocapture
Bugfixes
- Fixed auto cycles failing to select sensible values in WASM
- Fixed GUS audio problems in Duke3D
- Fixed SB Pro / SB 2 panics due to wrongly assuming SB16 parameter support
- Fixed SB2.0 crash in Descent
- 7z was missing in the libretro supported extensions list
- Fixed Sam'n'Max startup crash with DPMI=on
- Stopped unit tests from leaving stray "layer15:" directories behind
- Fixed shell saying "Syntax error " when processing
IF ERRORLEVEL == 1 GOTO END - Added support for DOS reboot