Common searches

First post, by truth_deleted

User metadata

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

Reply 1 of 8, by leileilol

User metadata
Rank l33t++

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.

long live PCem

Reply 2 of 8, by truth_deleted

User metadata
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 "command.com" to work within the 9x guest. Otherwise, the "command.com" window box doesn't show any text.

Reply 4 of 8, by h-a-l-9000

User metadata
Rank DOSBox Author
DOSBox Author

Otherwise, the "command.com" 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.


Reply 6 of 8, by truth_deleted

User metadata

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: http://drivers.s3graphics.com/en/download/dri … 68/bio20b02.zip. 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.

Reply 7 of 8, by truth_deleted

User metadata

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:

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:

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:

DSV3365e/MPG3365 BIOS ver 1.02-02


  • Filename
    File size
    1.09 KiB
    File comment
    Patch to load s3 bios (362.rom) in dosbox-svn
    File license
    Fair use/fair dealing exception

Reply 8 of 8, by truth_deleted

User metadata

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:

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.