VOGONS


Rust-DOS, a new DOS emulator

Topic actions

Reply 100 of 108, by ultrahrc

User metadata
Rank Newbie
Rank
Newbie

Any chance to support 86Box's 86F diskimage ?

Reply 101 of 108, by dosmax

User metadata
Rank Member
Rank
Member

Unfiltered texture sampling for both software and OpenGL 3dfx rendering. The patch is based on the latest Github repo state.

Although not historically correct, people who didn't experience the mid 90s themselves may have a hard time to grasp in what way those super blurry textures may have been progress, and thus prefer a sharper unfiltered look.

With anisotropic filtering enabled the OpenGL renderer keeps mipmap-level filtering, and doing so finds a nice balance: sharp texels, but without ugly mip-level change artifacts.

I think that's it from my end for the time being. Those were the basics I wanted to get in. I might be back later with one or the other thing occasionally.

Reply 102 of 108, by dosmax

User metadata
Rank Member
Rank
Member

CD-Audio related behavior change/bugfix:

MSCDEX: don't play audio starting in a data track

A Play Audio request starting in a data track (e.g. sector 0 on a mixed-mode CD) used to play silence through the data track and report the drive as busy. Like DOSBox, accept the request but don't play, so the drive is not busy and the game can go on. Fixes EF2000 GFX+ CD music.

Reply 103 of 108, by Dividebysandwich

User metadata
Rank Newbie
Rank
Newbie

@dosmax: Merged, thank you!

ultrahrc wrote on Yesterday, 14:57:

Any chance to support 86Box's 86F diskimage ?

Yep I have a first throw in git, but it has a number of limitations and I need to do more testing. Anything that needs a full FDC will not be supported, i.e. games that rely on emulating the controller hardware for copy protection.

In other news, I finally got my Steam Frame and I'm busy ironing out the kinks right now. Streaming mode works, the renderer is selected automatically, but on-device rendering needs some love.

Reply 104 of 108, by Dividebysandwich

User metadata
Rank Newbie
Rank
Newbie

Good news everyone: Running standalone on the Steam Frame works, and performance is very good!
Of course you don't HAVE to use the 3d scene, you can also just run Rust-DOS in a 2D window that floats in your SteamVR space. And streaming works too.

7pcul4.png qbgm44.png

Reply 105 of 108, by Dividebysandwich

User metadata
Rank Newbie
Rank
Newbie

v1.5.0 has been released -> https://github.com/dividebysandwich/rust-dos/ … ases/tag/v1.5.0

Steam Frame support

* Headset sessions now run through GLX, EGL or a Vulkan bridge, whichever the OpenXR runtime offers. This means Rust-DOS now runs standalone on the Steam Frame.
* Foveated rendering on the Steam Frame, through Valve's density map layers reached via Zink.
* Auto VR settings for standalone headsets: a lighter look, adaptive resolution and 72 Hz.
* New `--vr-probe`, `--vr-graphics` and `--vr-resolution` options, and headset graphics and resolution in the settings window.
* The Windows builds now include the OpenXR DLL, and the tarballs include libopenxr.

Rust-DOS now runs really well on the Steam Frame, drawing between 12-16 Watts in the "90s Bedroom" scene. Of course rendering just the 2D dos window uses less battery.

PowerVR and Rendition Vérité 3D accelerators

Two more 3D cards from the era join the 3dfx Voodoo and the S3 ViRGE:

* **PowerVR PCX2**: scenes render through its tile-based ISP and TSP, with texturing, shading, parallel tiles and render timing. It has its own settings and a filter setting.
* **Rendition Vérité**: the Speedy3D command interpreter with triangles, blits, blending, Z buffer, fog, bilinear filtering, alpha texture formats and vertex colour modulation. vQuake runs, including its spans, lookups and particles.
* Tomb Raider runs on both cards.

Game packages: the automount folder and OS installs

Packages can now bring their own disks and their own operating system, following a proposal from the community:

* **`automount` folder**: images and folders at the top of a package's `automount/` folder are mounted by their names before the game's commands run:
* `c.vhd` and `d.vhd` are hard disks.
* `d.cue`, `d1.iso` and `d2.cue` are discs in one drive, switched with Ctrl+F4.
* `e/` is a folder CD and `e.hd/` a folder hard drive.
* `a.img` and `a1.img` are floppies.
* `d[GAME CD].iso` sets the drive's volume label.
* **Bring your own OS**: `os=win98se` now looks in the package's `automount` folder first and in the OS images folder after that. A `rust-dos.conf` can name an OS too, with `[game] os=`.
* **Ship a Windows game's install as a `c.vhd`**: a differencing VHD holds only what the game's install changed, and Rust-DOS boots it on top of your own copy of the OS image. Differencing VHDs are a standard format that VirtualBox, Hyper-V and Windows can make. GAME-PACKAGES.md explains how.
* **Differencing VHD images** can be mounted anywhere. Their parent is found by name, beside the image or in the OS images folder, and is checked by its id.
* **Stale save data is set aside, not lost**: when a package or OS image changes after you played, the old changes file is renamed to `.rdelta.stale-<date>` and the game starts clean. Nothing is deleted.
* **One player at a time**: a second Rust-DOS that tries to launch a game already being played is refused, rather than both writing into the same saves.
* The libretro core's **Boot OS** option now goes through the same package handling, so automount folders work there too.
* Fixed: drives inside an archive (such as a folder OS inside a `.dosz`) were read-only. Their changes now go to the game's saves.

Drives page improvements

* Create fixed and dynamic VHD images right from the Drives page.
* Mount images as BIOS disk numbers (`2`, `3`) from the Drives page.
* Pick a drive's IDE slot in the mount dialog.
* Keep a disk image's changes in a separate delta file, chosen in the mount dialog.
* VHD images show up in the settings file browser.

3dfx improvements

* Unfiltered texture sampling (`voodoo_texture_sampling`) for both the software and OpenGL renderers. It switches immediately, without touching the guest's registers.
* Glide gamma (`voodoo_gamma`), set through the `SST_RGAMMA`, `SST_GGAMMA` and `SST_BGAMMA` environment variables.
* CRT shaders keep their scanlines, mask and glow at the 3dfx card's own resolution with the OpenGL renderer above 1x (`voodoo_scale_shader`).
* Anisotropic filtering in the OpenGL renderer.

Other changes and fixes

* 86Box `.86f` floppy images are now supported.
* MSCDEX Play Audio starting in a data track now plays nothing, as in DOSBox. This fixes CD music in EF2000.
* DPMI host: coprocessor status and emulation functions 0E00h and 0E01h.
* FPU: x/0 gives infinity with ZE, and 0/0 the indefinite with IE.
* Settings go back to your configured baseline before a game launches, so one game's settings no longer leak into the next.
* Launching a game from the settings window while a program runs asks before closing that program.

Distribution

* Rust-DOS now also ships as AppImage files for aarch64 and x86_64. This should make it a lot easier for SteamDeck, SteamMachine and SteamFrame users to just download and run instead of having to unpack tarballs.

Reply 106 of 108, by dosmax

User metadata
Rank Member
Rank
Member

One more fix: both Descent II 3dfx patches had no working mouse. The fix addresses that and will likely fix mouse support for quite a few other games as well.

Note that this is outside of my area of expertise and was entirely agent generated. The agent ran quite a few tests including visual verifications. However, I only tested the fix against a handful of other games, so I can't rule out entirely that it breaks something else. Most of what the fix does seems to be taken from Dosbox-Staging, so the risk is probably low.

[PATCH] Fix mouse support in Descent II 3dfx variants

- Both variants: return FFFFh from INT 33h AX=0020h to pass mouse initialization, and preserve full 32-bit registers across callbacks
- D2_3DFX.EXE: leave interrupt vectors 60h–65h unused so DOS/4GW can install its mouse callback translator, fixing startup hangs and button handling
- D2VOODOO.EXE: deliver pending button callbacks after reflected mouse polls with IF clear, fixing working movement but unresponsive buttons
- Add regression tests without changing IRQ12 infrastructure
- May also improve mouse compatibility in other DOS/4GW games.

Reply 107 of 108, by Dividebysandwich

User metadata
Rank Newbie
Rank
Newbie

@dosmax: Ah, excellent. Well I have my regression test suite for exactly that reason 😀

Reply 108 of 108, by dosmax

User metadata
Rank Member
Rank
Member

If you mean the automated tests, those ran through fine. Wouldn't trust those 100% though, you never know whether maybe some or the other game may be allergic to e.g. the interrupt change. But DosBox-Staging doing the same should instill some confidence in that respect.

As far as I'm aware I think (with a little help of from me) you now have the best option out there for Glide games under DOS, at least for my needs. 😀