Skip to content

v1.2.0

Latest

Choose a tag to compare

@dividebysandwich dividebysandwich released this 02 Oct 13:27
· 13 commits to main since this release

What's new

Built-in editor

  • This is a rust-implementation of the MS-DOS original.
image

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.
image

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

image
  • 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=1 to 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