High resolution + color support beyond VGA 16-color in QEMU

Continuing the discussion from Floppy Disc and CD-ROM img and iso capture/creator [NOT URGENT]:

Hi Tim, indeed, @ecochrane 's response is on the money:

This is an issue in VirtualBox and VMWare as well as QEMU - the graphics drivers included by default with Windows 9x operating systems (Windows 95, 98, and ME) usually do not support higher than VGA 640x480 resolution and 16-bit color depth when paired with the emulated graphics cards that QEMU provides. The QEMU version used will likely not make a difference.

The solution is to install a better graphics driver. I highly recommend the VBEMP 9x project, a freeware (license is free for noncommercial use) driver that back-ported the better display drivers in Windows XP to 9x operating systems. You will want one of the “Universal VBE2.0 version” downloads, and from there Windows 9x in QEMU should be able to use the VBEMP.DRV driver in the 128MB folder - though can try with the other versions (64MB, 32MB of video RAM) if you have problems installing. The download is also a fairly extensive zipped directory of files and folders, so for easy import into EaaS and emulation I would probably recommend bundling the whole folder into an ISO file first in Windows 10 rather than trying to manually select them all as a “Files” type object (the applications you were looking at in the previous thread - ImgBurn, WinImage, etc - I think should also be capable of just creating an ISO file by pointing it at any given folder).

The VBEMP project page itself is not very clear about installing, so I am trying to see if there are existing tutorials that are useful, but if not, I should be able to create directions myself. Someone in the VirtualBox forums wrote a good guide for Windows 95/98 guests that should apply fine to QEMU as well, particularly for the “Video Driver Integration” instructions. I believe it also mentions the “SciTech Display Doctor” video driver, which is an alternative to the VBEMP drivers that is also a possibility here. Computer Hope’s general guidance for installing and upgrading device drivers in Windows systems should be relevant here as well: How to Install and Update a Computer Driver

One either the VBEMP or SciTech Display Doctor driver is successfully installed, you should be able to get SVGA resolutions like 1024x768 and color depths up to 24- or 32-bit.

1 Like

I just want to report back and say that I have had good success with this advice and I found out of all the drivers, the VBEMP drivers worked best, but it is worth noting there are two types. The VBEMP drivers with the 32mb, 64mb, or 128mb drivers are good for Windows 95, however there is another type of VBEMP driver package you can get from the VBEMP for Windows NT (All Versions) : BearWindows and AnaPa Corporation : Free Download, Borrow, and Streaming : Internet Archive which works with Windows 2000, and XP. Also, DO NOT do what I did and try and obtain the NT drivers from the creator’s website using their Bitcoin payment system. I think it might be a Russian scam and I had some issues. I should have identified them earlier from the internet archive.

As for the Scitech driver, I had mixed results with this. It works well for the DOS aspects, but doesn’t work for much else with QEMU.

I also tried the Cirrus CL-GD drivers for Windows 3.1 and 3.11. Unfortunately, while doing the patch /p trick helped, I still ended up with either lines or garbled text. The only way I found to get a larger SVGA 800x600 but only 16 colours display on Windows 3.11 was to choose “Custom” when first installing Windows 3.1 and then choosing the SVGA option. If you leave it to after installation, then this does not work, and you are left with a VGA 640x340 16 colour option only.

regards
Tim Mifsud

1 Like

thank you for the detailed report back and tests @tim.mifsud! especially the warning re: the VBEMP drivers :grimacing: , I’m sorry I didn’t realize that you were looking for NT drivers for Win2000 as well as 9x and earlier. I think we figured out how to get a higher 1024x768 resolution in Win 3.1x environments, let me check and report back.

1 Like

Ah ha, so for our Windows for Workgroups 3.11 environment, we ended up finding a solution using QEMU’s emulated “vmware” graphics device, rather than its emulated Cirrus card (e.g. running with -vga vmware flag)

This method involves the SVGA driver patch that can be downloaded here (possible elsewhere as well, I can check e.g. Internet Archive). The patch runs on the built-in SVGA driver for Windows 3.1x, so other than this patch you should just need the built-in SVGA driver included with your Windows 3.1x installation media. Images attached as well to illustrate the process.

Before starting, I’d make sure you’re not automatically booting straight into Windows - e.g. temporarily remove “WIN” from your DOS’ autoexec.bat file, if you’ve configured it that way.

  1. In Windows, alter the video display to SVGA (1024x768), 256 colors in System Settings
  2. reinsert and copy the native Windows 3.1x SVGA driver files from your installation media as prompted
  3. reboot - you’ll receive an error message if you try to run Windows (this is expected)
  4. reboot again to the DOS prompt
  5. insert the SVGA patch files (you can package them into an ISO or floppy image ahead of time, or upload them into EaaS/EaaSI as “Files”-type object, whichever, as long as your DOS installation has a CD-ROM driver)
  6. copy the contents of the SVGA patch to the C:Windows\System folder and run the patch on the SVGA256.DRV file as directed by the patch’s vgapatch.txt file
  7. eject all external media, reboot

You then should be able to run Windows with 1024x768 resolution and 8-bit color without glitches!

1 Like

Wow thanks Ethan. I tried using that vgapatch p with the cirrus card and of course it didn’t work.

I would totally like to try your solution, but I don’t know how to change the card in EaaSI to the vmware graphics device when creating an environment - remembering this is me using the downloaded version of EaaSI from the tar.gz link in the EaaSI User Handbook, on a single unlinked instance on my laptop in Docker v20.10.5.

I’m guessing this may be possible to do once we have access to the formal testing.

OMG! I just worked out I can change it to vmware in the config when creating or editing environments! I swear it didn’t let me do this before. Right, maybe its 4th time lucky for this environment

Ah, yes, sorry @tim.mifsud! The exact command/configuration passed to QEMU should indeed always be editable from the Environment’s details page or when creating a new environment, though that option has moved and changed labeling a few times in the EaaS interface, so that indeed may be a source of some confusion.

For the demo EaaSI Docker deployments that you’re referring to, it seems like you may have figured this out, but for everyone else’s sake, or future reference:

  • On the “Create Environment” page, it prepopulates with our suggested QEMU parameters when you select a System hardware template, but you can edit it if desired
  • Once an Environment is saved, navigating to its Details page, then clicking on “System”, you can see the same QEMU parameters under “Emulator Configuration”, then edit them by clicking the “Edit” button at the top of the page (and then don’t forget to click “Save” at the bottom of the page after changing). You should then, for example, be able to edit the text of a Windows environment so that the QEMU flags read -vga vmware instead of -vga cirrus.

QEMU’s full documentation should have information about what other emulated hardware devices might be available, e.g. alternative graphics cards, sound cards, network adapters, etc. However, their compatibility will vary wildly depending on what operating system or version exactly you are trying to run in your Environment, hence why we suggest/enforce some defaults with the system templates. Also, not all QEMU features will work with EaaS, but we’re happy to clarify those points of divergence if they come up.

1 Like

Just wanted to say I followed the above instructions, built a whole new environment with VMWARE graphics card from the ground up in DOS 6.22 with supplemental utilities and then into Windows for Workgroups 3.11, and this solution worked!
Thank you @ethan.gates ! You are a legend.

1 Like

I found VBEMP worked well for adding extended graphics capabilities to emulated Win98SE environment.

Interestingly, I could not get it to work on my real Win98SE setup. Though I did not try every permutation.

SciTechDisplayDoctor worked for a little while, but eventually made my VirtualBox Win98SE emulator explode catastrophically.

YMMV

Yes - Scitech has been useless for both the Cirrus graphics emulator and the VMWare graphics emulator. VBemp is the best, and surprisingly, the old manual version, even though called obsolete by the developer, is super handy for the VMWareII graphics driver in there. So with VBEMP it helps to have all three:

  1. The Vbemp NT graphics drivers (which you should avoid getting from the VBEMP site to avoid Russian hackers and scammers, instead obtain from the Internet Archive)
  2. The VBemp Universal drivers (with Atom, BIOS, 32mb, 64mb and 128mb folders), fine to obtain free from the developer
  3. The VBEMP 9x drivers - manual version - obsolete. Also fine to obtain free from the developer.

Then it is a little bit of trial and error. I found for Windows 98, you need to mostly choose the 1024x768 75hz monitor option and ensure the adapter is set to Optimal, then change the driver. Attempt to hit apply to the settings (even though they will stay at 680x400) Then restart windows within the emulation and then it seems to set itself right and Whammo! 32bit colour and decent resolution.
My next hurdle is figuring out why autopatcher for Windows 98 now crashes my VMWare KVM instance.

Actually, I will say that the older Scitech Uni drivers for DOS are actually pretty good if you can get them going. But otherwise useless for inside Windows.

Also - I’ve found this video super helpful for setting up Windows 98, especially for teaching me to force install ACPI support, which greatly improves the mouse tracking in EaaS for Windows 98. It is a pain to do it in EaaS though because it doesn’t quite work the same as Virtual Box, and I have to install Windows 98 twice and only on the second time can I re-install it with ACPI support, if starting with a fresh build and not from DOS 6.22. I want a fresh build as then I can have a hard drive size bigger than 2GB - (13) Windows 98 on VirtualBox - How to do it properly. 32bit Graphics and ACPI. NEW Version 6 - YouTube