Windows 98SE on Modern Hardware

Some good news, with real HW machine Geforce 6600 PCI-E its working fine with old AGP 66.xx drivers… So you can use older that unofficial drivers with PCI-E cards.

I made X600 passthrough with working picture to WIndows 98 machine, that is good thing. Its some HP Wokrstation low profile card with DMS-60 connector for monitor connection. X300-X600 are actually different chips than X700-X850 cards, those should be only some Radeo 9xxx cards quickly ported to PCI-E… Or simply its all thing of compatibility card by card… so if want make it working, i would recommend get couple cards… try them with WinXP machine if they are working fine mess with Win98, where it is always more complicated.

With this HP card, i so far struggle with make anything else than 640x480x16 colors working… its strange i can install card, its able to reboot fine, its even able to detect attached monitor, but its still within 640x480… when i set in wizzard other resolution, after reboot i again get this resolution.

I dunno if problem is Qemu bugs, that im using DMS-60 to 2x VGA adapter for VGA monitor, or there is problem that this card has 2 devices (i never made such card working with Win98, Matrox G200 MMS had 4 devices, but only 2 ids (for 2-4 device, there was same id) and it worked only when i pass through one of them) - primary in device manager is fine, secondary for second monitor is always with exclamantion mark, i passthrough both… Other problem could be that for this driver are needed some windows updates or something like that.
So its annoying, lots things to try… but when i will find the way i can make it simple for others…

Its getting more annoying because of sound cards rebooting and because im not able dump bios of some of card like this, so i can start machine only one, after that i need to reboot, because card is stuck after first use.

It seems that i find to way how to dump the roms, i have to it after Passhtrough and reboot, i now dump something and it seems that is working with X600, i can at least restart machine within on boot settings.

I also tried to pass through only one - primary device and second is no more in device manager, but i still can set better resultions, it is still 640x480x16 or i get blue screen… There are 2 things in conflict… you want to have clean system for trying in other hand some update could fix some problems… other thing are all these C++, Visual Basic, .Net and other runtimes, i dont have install most of them and it theory these lastest Win9x drivers could require them, even when they dont complain about them…
My real HW system is fully updated with all unonfficial update packs etc… i wanted my gaming system clean to max game compatibility, but maybe its bad idea… Solution would be install clean system with real HW, but even than its other HW than emulated, so its not easy… We really need more people trying this to share some knowledge.

About the Matrox issue, and MAYBE with some of the other issues, it may be related to PCI Topology. If you’re willing to try again, read this: https://pastebin.com/2q1sZvhb


Play around with -device pci-bridge (PCI-to-PCI Bridge) and -device i82801b11-bridge (PCIe-to-PCI Bridge) or even ioh3420 (PCIe Root Port) then attach to it the PCI Devices. These look like this:

-device ioh3420,chassis=0,id=testbus <br />-device vfio-pci,host=01:00.0,multifunction=true,bus=testbus,addr=00.0 <br />-device vfio-pci,host=01:00.1,bus=testbus,addr=00.1 <br />
Note that you can’t passthrough bridges, but you can try to replicate the topology inside the VM. Pay attention to that.

Matrox is working fine, even i just pass through only main device, i dont really neeed to make all 4 videochips working, it was good for WIn9x 4 monitors walls. BTW its working multimonitors with KVM good? I mean use 2 or monitors inside wirtual machine, with Win9x i can live with 1 monitor, but if would use WinXP+ machines, i need 2,3 monitors to really be effective.
Maybe its hard to orient in situation, i have problem with ATI X600 PCIe.

PCI topology, what is mean idea behind it? If pass through devices by "normal" way they are at same level? And on real machine one device is some subdevice of other? I would be nice if it would work like that out of box…
Im not lowlevel enough to see difference between PCIe-to-PCI brigde and PCIE Root Port… what is bridge self-explaning but what is Root port? Ok this is this for PCI-e device. Wiil this PCI-e to PCI working with emulated i440 chipset, which is more PCI, than PCI-E?

How to make same which when PCI not PCI-E device has its sub device?

From where is this article, who se author etc?

Mostly not working Linux sound - reboot marathon
- i already posted all dmesg outputs, could you check them?

This is really too highlevel for me…


Yeah i want to blacklist Nvidia HDMI audio, if it would help to make on board soundcard working for every boot session. I would need details how to exactly that script should be done… i never bound something… that echo command above is doing exactly what… add some id to that virtual system tree… - but what is goal of that?

I have tried more modern ATI 7000 PCI passthough and again, seffault… it seems that ATI PCI cards are doomed for passthrough.

I made Geforce 2 MX PCI working fine even with old Nvidia 21.8x driver, so other success story. Performance is quite nice, better than Voodoo 4/5 would do.

I retested not working games from my Geforce 6600LE + unofficial 82.xx testing list : Windows 98SE on Modern Hardware (12) with Geforce 2 MX PCI.
- used 41.xx driver, bewore i used 28.xx but i got some freezes in 2d. To be sure i ran Video card memory test - lots of old card have fried memory chips (i know that is not 100%, because all memory areas cant be tested) and it pass fine.

Main message is, its better…

Details:
- Drakan is working fine
- Expandable is the same - its not in nGlide list at all - so its maybe Direct3D only, somewhere i read that there some new demo… i dunno which one i have…
- Gothic II - not starting, no error message, which some advanced debug tools and dependency walker, would be probably possible to discover way, but its out of my scope. Probably some runtime is missing. Maybe when i will try to install full game, i will discover more…
- Heretic II - is the same, regarding http://www.zeus-software.com/downloads/nglide/compatibility - be aware it has 2 part Glide native nad OpenGL native, there are fixed but they are probably for full game only…
- Heavy Metal FAKK 2 - is the same - again in nGlide guide is fix at least for full game
- HomeWorld - its now working fine
- NHL 2000 - now game is starting menu is fine, but when i start gameplay im geting only audio and black picture, regarding nGLide there are fixes at least for full game.
- NHL 2001 - now game is starting menu is fine, but when i start gameplay im geting only audio and black picture, regarding nGLide there are fixes at least for full game.

Other question is which Nvidia driver is best for nGLide usage within Win98 - and if it really matters and which version nGLide is the best one…

I did it first for myself but this could help to everyone, small overview which drivers could be used for which Nvidia cards:
Riva 128 / ZX - only special one drivers, some drivers are on Vogons - http://vogonsdrivers.com/index.php?catid=24
TNT / TNT2 : 2.08-71.84
Geforce 1=256 SDR/DDR : 3.68-71.84
Geforce 2 : 5.32-81.98 so almost full range…
Geforce 3 : 8.05-81.98
Geforce 4 : 28.32-81.98
Geforce 5 : 43.45-81.98
Geforce 6800 line : 61.76 to 81.98 -
Geforce 6600, 6600 GT : 66.94 to 81.98 -
Geforce 6200 : 71.84 to 81.98 -
Geforce 6600LE : 81.85 to 81.98 , so i discovered, that there are official drivers for it.
Geforce 7 line : only unofficial 82.69 drivers



I read whole article, but its too academic and complex… I mean all informations here are probably right, but that style… i thing that its better to explain whole system at first and after add some flesh on the bones if is needed… and let reader choice, if need it… Practical part - i mean commands are only at the end of article in small section.

First of all, because Windows 98 is not possible to install with Q35 chipset its already bad situation because because im adding PCIe videocards to on PCI bus, but at least for some cards are working. Other sure thing that it would be better if physical card, has multiple subdevices, is better to use multifunction… so far im only pass through devices as standalones, as this:
-device vfio-pci,host=08:00.0,x-vga=on,romfile=/media/Win7_64/VirtualMachines/!roms/ATI-HP-X600.rom <br />-device vfio-pci,host=08:00.1 </i>
Hmm, here is clearly advantage of virtmanager, which is doing such thing automatically.

I think is place here my physical machine lspci, and lspci -tv ouput, you can help me make Qemu lines for it… When i look about or some iGPU examples which are using this feature, its too complex, too many new things together…
That ioh3420 - is unknow thing for me, i didn saw it even in article… in the rest multifunction=true make sense, bus=testbus - is just id - clear, addr = 00.0 - slot im not really sure why this number is used.
Last line - is clear, sub device is added as first device sub device.

So i adjust my original lines to to this style, it would be:
-device vfio-pci,host=08:00.0,multifunction=true,bus=testbus,addr=00.0,x-vga=on,romfile=/media/Win7_64/VirtualMachines/!roms/ATI-HP-X600.rom <br /> -device vfio-pci,host=08:00.1,bus=testbus,addr=00.1 </i>

Its it ok?

Is tried to make more games runing with Geforce 2 MX PCI, i made working everything except NHL 2000, what is great result.

Expandable demo- its not working, fix is use start parameter: “-nocputest” So its not Videocard related.
Half Life II - retail - cd, no Steam version, its working. Its slideshow on Geforce 2 MX PCI, but it was expended.
Gothic II - full game is working, i tried to rerun demo, but its not working,
so its probably not adjusted for Win98.
Heavy Metal FAKK - its working, i used nGLide fix with demo this starting parameter: "+set r_gldriver 3dfxvgl.dll"
Heretic II - demo is not working even with software mode, there has to be some bug too much memory etc, but full game is running fine.
NHL 2001 demo - i found out that there is 3D setup folder and here is some config file, magic parameter to make it working with no 3Dfx DIrect3D mode is: "3Dfx_D3D=0"
NHL 2000 - same trick as for NHL 2001 demo is not working there is probably other syntax than with NHL 2001, in software mode its running fine. I tried full game it need cd because of some copy protection and i make working cd rom and its pass through its too much hassle for me. Its shame that probably because of licencing arent these older EA Sport games on Gog…

Bonus:
TES: Morrowind is running fine - its also videocard heavy Win9x title.

Yeah of course, when you have enough slots, so can with Qemu easily make 2 machine, 2 systems disks images and only 1 main games data disk images and using 2 or more graphics cards, based on games which you want to run.
But as you see, maybe not all demos, because they will be never patched, but all or allmost all full games are running fine fine even on Nvidias if you invest some time into it.

Im trying to make Qemu running more easy, to run it without root privileges… based on Heiko tutorial:
https://heiko-sieger.info/running-window…r_mode_(nonroot)


But im getting evdev permission error and Heiko is not using etdev…
qemu-system-x86_64: -object input-linux,id=kbd1,evdev=/dev/input/by-id/usb-ZALMAN_ZM-K600S-event-kbd,grab_all=on,repeat=on: Could not open ‘/dev/input/by-id/usb-ZALMAN_ZM-K600S-event-kbd’: Permission denied

Update fix is:
sudo gpasswd -a YourUserName input //+Reboot

But i have some problem with networking:
qemu-system-x86_64: could not configure /dev/net/tun (tap0): Operation not permitted

I found that PowerIso has Linux port:
http://www.poweriso.com/download-poweriso-for-linux.htm

Its free, as usually its crippled so drag and drop is not working, but still is better than ISO Master, which cant rewrite existing ISO or has problem with Long filenames, special characters etc.

I find out that there is PCI-E 1x short Matrox card compatible with Win98, this could solve if you have only 1 short PCI-E free slot. Even if probably only PCI-E gen. 1 card what means 250 MB/s it would be probably enough for enough to not be bottleneck, PCI is i theory 133 MB/s. AGP 1x = 266 MB/s…
https://www.matrox.com/graphics/en/produ…/?productTabs=1

Some news.

I tried ATI X600 with WinXP its… its again working only with 4bit colors(16colors) when i install drivers and try to switch to more colors i get boot black screen crash, so its not working regardless of OS, its some KVM + ATI x… bug.

Otherwise here some Win98 - errors pictures - maybe, maybe can they can help someone in future:

2020-04-01 01.58.58-X600 Errors.jpg


2020-04-01 17.53.26.jpg


2020-04-01 17.53.49.jpg



I also tried Geforce 6600GT which not worked with Win98SE, with clean WinME and there is also some error - Windows system protection… i will try other videocard bios, but it also seems KVM unfriedly, but here are WinXP working fine.

I tried to make Qemu making with in user mode, instead of root… but broken something in system and i dunno how to undo it…

I ran:
sudo tunctl -t tap0 -g netdev // Target was make networking working under user

But im not getting this, error when i try to use virtio networking:
qemu-system-x86_64: -device virtio-net-pci,netdev=net0,mac=00:16:3e:00:06:08: Property ‘virtio-net-device.netdev’ can’t find value ‘net0’

Before i ran command above i had just permission error as user:
qemu-system-x86_64: could not configure /dev/net/tun (tap0): Operation not permitted

I can still ran not virtio networking fine…

I won, Geforce 6600GT is now working!

Solution was never Nvidia bios.

Gigabyte flashing utility, really hasnt too much options. So i tried Nvidia NVflash.

&nbsp;When i tried it, i had problem that some Bioses refused to work because is BoardID - there are 2 variants of Geforce6600GT , ids 4300 and 4301.
I found out that i need bios with ID -&nbsp;p216h1.
When i tried Nvflash, i wasnt able to force bios, but i found that that olded Nvflash (5.93.0.1) has options to overcome it with -4, -5,-6 optimal parameters.

Original bios was&nbsp;5.43.02.27.00
&nbsp;when i searched through TechPowerUp bios DB:
https://www.techpowerup.com/vgabios/?man…I&model=6600+GT
I found that tehre is newer MSI bios (5.43.02.69.00) -&nbsp;https://www.techpowerup.com/vgabios/3163/msi-6600gt-128-050411-2
I flashed it to card and now its working.

I used Nvidia 82.69 drivers… but i will try better ones later. Update: yeah 66.94 driver is working too.

If someone wonder what is difference between Geforce 6600LE and Geforce 6600 GT its quite big:

Geforce6600.png

I can say that some Windows 98 udpates improving games compatibility i had problem at least to start Evolva and Mafia 1 demo and with updates its now possible.

Because i dont aggressive updates like Unofficial services pack 3 and KernEx and official updates are now not available on MS side, i just install Autopatcher 2007 - but i didnt run it… but only install all official updates, some good unofficial ones and some runtimes / codec packs.

I finally got Sintech ASM108x PCI-E to PCI adapter and Geforce 5500 PCI is working well with it… so even too 2 ASM adapter on board and external can work together.

There are still lots of Geforce 5 PCI cards, available on ebay with reasonable prices ~25$, i had to download card from make it working, it wasnt possible with rom parser for Linux, but old version on Nvflash form Freedos USB flash (Rufus make it) was able to dump it.

Otherwise i did my duties and reported all KVM Win98 related bugs, i dont have big expectation from it, but:
https://bugs.launchpad.net/qemu/+bug/1873335
https://bugs.launchpad.net/qemu/+bug/1873337
https://bugs.launchpad.net/qemu/+bug/1873338
https://bugs.launchpad.net/qemu/+bug/1873339
https://bugs.launchpad.net/qemu/+bug/1873340
https://bugs.launchpad.net/qemu/+bug/1873341
https://bugs.launchpad.net/qemu/+bug/1873344
https://bugs.launchpad.net/qemu/+bug/1873542

I think that I may have an idea about why the sound cards doesn’t work properly under DOS. It should be because SeaBIOS does NOT support ISA PnP. While the cards are PCI, they are supposed to provide a backwards compatible interface for DOS which should be ISA compatible, and that is what is missing. Windows 98 should be able initialize them OS side, but DOS does not unless you manually do so with a specialized tool.

Look around for things like these:
https://www.vogons.org/viewtopic.php?t=72553
http://www.vcfed.org/forum/showthread.ph…Enabler-for-DOS




EDIT

After googling around some more, what SeaBIOS does not support is PnP BIOS specifications. I’m unsure whenever that affects PCI Devices, as I thought that it covered ISA PnP only. Not sure how to initialize them.