Video bios usage in DOSBox

General information and assistance with DOSBox.

Video bios usage in DOSBox

Postby truth_deleted » 2013-8-22 @ 01:55

DOSBox 0.74/SVN has a function to load a video bios into memory. This bios type would match one of the machine types as outlined in the dosbox documentation. The most versatile machine type is svga_s3 and it corresonds to a S3 Trio 32/64 video card while running a Windows9x guest inside DOSBox. So, for instance, instead of running the S3 bios emulation, a memory dump of a real S3 video card can be loaded by DOSBox; this dump can be obtained from your S3 Trio64 PCI video card (86c764). The loading is done by this command: ldgfxrom <name of rom>. The video bios can be automatically loaded by adding the command line to your dosbox configuration file, after the lines for mounting the host directory with the rom file.

There are advantages and disadvantages to loading this video bios instead of the one built in to the emulator. The advantages include increased stability in a Windows9x guest, especially in the Windows shell, precise mouse movement in the 9x guest, and presumably additional video modes. Another advantage is that it allows the S3 to work in Direct3d games, although with no hardware acceleration. A major disadvantage includes an improperly displayed aspect ratio in 640x480 mode in the 9x guest; instead 800x600 works fine. This aspect ratio problem should be easy to fix in code, but it also makes some DirectX games difficulty to use, such as their menus, which typically display at 640x480. However, the video bios does not impair game speed to any large extent.

This video bios feature should be tested in DOS and 9x applications running in DOSBox, even though this function is officially unsupported. Also, if you experience mouse cursor movement problems in DOS or 9x games, then this feature will likely help. Third, if you have stability problems running a 98 guest or mouse cursor problems, then this feature will help in this case, too. I haven't yet found a reason to always load the video bios for DOS or 9x gaming, but it has helped the precision of mouse movement in Rainbow Six (just in software mode; D3D6 mode already runs well); Unreal Tournament also runs in D3D mode with playable speeds (Glide mode is of course preferred).

Re: Video bios usage in DOSBox

Postby leileilol » 2013-8-22 @ 03:39

Loading the S3 BIOS will also strip the supported VESA modes, which you can then run the good ol' s3vbe20 to restore back :)

I dumped my s3 card (and a couple of other cards) and it's a blast from the past seeing them boot together with the CRT shader.

Don't forget that loading video bioses will also load their built-in fonts... some have interesting ways on handling (or mangling) the DOS charset.
Voodoo2s aren't 100mhz stock
Geforce256 isn't released as a beta on New Years '99 under the Quadro brand
386DX vs SX isn't about a missing FPU
DOS gaming isn't a bilinear 320x200 16:10
DOS PCs aren't better than the Macintosh
Old PCs aren't 'aesthetic'
User avatar
Posts: 9040
Joined: 2006-12-16 @ 18:03

Re: Video bios usage in DOSBox

Postby truth_deleted » 2013-8-22 @ 04:41

leileilol wrote:Don't forget that loading video bioses will also load their built-in fonts... some have interesting ways on handling (or mangling) the DOS charset.

That's interesting. I don't know if it's related, but I noted that the s3 bios allows "" to work within the 9x guest. Otherwise, the "" window box doesn't show any text.

Re: Video bios usage in DOSBox

Postby Jorpho » 2013-8-22 @ 15:19

Really? I thought the command-prompt window used soft fonts supplied by Windows, or at least can be adjusted to do so.

I don't suppose FIX8x14 helps?
User avatar
Posts: 7043
Joined: 2003-2-14 @ 19:50
Location: Canada

Re: Video bios usage in DOSBox

Postby h-a-l-9000 » 2013-8-22 @ 20:13

Otherwise, the "" window box doesn't show any text.

The current DOSBox implementation uses a non-standard way to load character sets to video memory. Windows doesn't understand that and so every character is black. There was a fix, but incomplete.
DOSBox Author
Posts: 4512
Joined: 2005-2-23 @ 00:14

Re: Video bios usage in DOSBox

Postby truth_deleted » 2013-8-23 @ 02:31

Thank you - FIX8x14 did restore the text to the command prompt window. :happy: Also, I appreciate the information on the S3 emulation.

Re: Video bios usage in DOSBox

Postby truth_deleted » 2013-8-25 @ 07:28

Edit: I could not find a way to properly show 640x480/16 in 9x (with a S3 bios loaded). For testing this mode, a (compatible) S3 bios is available here: First, load the bios by typing the following in DOSBox: <ldgfxrom 362.rom>, given the rom file is in the mounted directory; also, ensure the win9x image is mounted so that it is bootable after the rom file has been loaded. This should enable use of the 800x600/16 resolution. even though the bios does not match the machine type exactly. It should also work in DOS, especially for the rarer text modes.

Re: Video bios usage in DOSBox

Postby truth_deleted » 2014-6-03 @ 03:19

Attached patch to make compatible the 640x480 mode with the above S3 bios (362.rom). It has been tested with 8-bit and 16-bit colors at that resolution only; a number of the higher and lower resolutions are supported with the patch, too (such as 1024H). This patch is specific to loading that bios and should not be applied to cases where the bios isn't loaded.

Tested this in DOS and 95. Others may confirm if DOS Quake has smoother motion with the bios loaded. For DOS, the s3vbe utility should be loaded after the video bios:
Code: Select all
ldgfxrom 362.ROM
This will unlock additional video modes in DOS games, such as Quake.

For 95 + the patch, the s3vbe utility should not be loaded until after boot:
Code: Select all
ldgfxrom 362.ROM
In my case, this unlocked additional video modes.

Other S3 video bioses may work in DOS, but 95 is typically not compatible. Here is an example bios which only works in DOS:
Code: Select all
DSV3365e/MPG3365 BIOS ver 1.02-02
Patch to load s3 bios (362.rom) in dosbox-svn
(1.09 KiB) Downloaded 82 times

Re: Video bios usage in DOSBox

Postby truth_deleted » 2014-6-04 @ 03:50

Running the dosbox debugger shows a difference between loading and not loading the video bios. In Quake and Simcity2k, but not at the dosbox command line, the hsync and vsync rates are 501.13kHz and 954.53Hz (640x480). However, these rates are not unusual when the bios is not loaded (vsync around 70Hz).

I have not tested this fully, but the motion in Quake is more fluid with the bios loaded. I also haven't noted "video tearing" yet. I do not know yet whether the host system is enforcing a lower vsync or whether the above numbers are reported accurately where the bios is loaded.

Here is a summary of some results where the bios is loaded:
Code: Select all
640x400 at dosbox command line
h total 100 end 80 blank (80/98) retrace (85/97)
v total 449 end 400 blank (407/442) retrace (412/414)
h 31.47kHz     v 70.09Hz    fps 70.087    aspect 1.00

640x480 in Quake
h tot 100 end 80 (80/98) retrace (83/95)
v tot 525 end 480 blank (488/517) retrace (489/491)
h 501.13kHz    v 954.53Hz   fps 954.5333  aspect 1.00

Edit: I believe the clock rate is causing this problem (svga.get_clock in vga_draw.cpp and SVGA_S3_GetClock in vga_s3.cpp).

Edit2: the problem goes away with use of a S3/Trio64 video bios. This works with nearly all resolutions, including 640H, and also does not require the above dosbox patch. I believe the former S3/Trio3D bios was causing Quake to run too fast; therefore, the main advantage of the video bios is for testing and use of the rarer video modes, but not for performance reasons.

Return to DOSBox General

Who is online

Users browsing this forum: No registered users and 3 guests