VOGONS


QEMU 3Dfx Glide Pass-Through (WHPX/KVM works!!!)

Topic actions

Reply 480 of 491, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie
mr.cat wrote on 2021-01-09, 22:16:

EDIT: You weren't kidding when you said it's painful...
I now found out why the graphics drivers cannot be installed, so this may help peeps stuck in 16 color mode (win9x guest):

I realize where you were at trouble. Sigh ... a common myth of retro folks. ACPI is actually a good thing. You didn't force ACPI installation during Win98 setup invocation. Unlike the other UI-fancy PC emulation 😜, QEMU PC platform emulation is based on clean implementation of PC BIOS or OVMF UEFI. It is a no-fuss, minimalist concept. If you were familiar with IBM PC BIOS legacy, then you would know what I mean. So ACPI is preferred since this is the essential PnP and device discovery for modern PC firmware. The obsolete pre-ACPI PnP standard is likely just a stub.

You need to force ACPI installation for Win98 Setup invocation with:
**SETUP /NM /PJ**

Otherwise, Win98 PnP detection will not discover the existence of PCI bus.

Last edited by kjliew on 2021-01-11, 09:55. Edited 1 time in total.

Reply 481 of 491, by ruthan

User metadata
Rank Oldbie
Rank
Oldbie

You can add PCI bus later manually, through add device wizard, im using it a lot which Windows 98 KVM machines..
In device manager set driver for Plug&Play Bios manualy to PCI Bus, after device detection will start working..

Last edited by ruthan on 2021-01-15, 17:26. Edited 2 times in total.

Im old goal oriented goatman, i care about facts and freedom, not about egos+prejudices. Hoarding=sickness. If you want respect, gain it by your behavior. I hate stupid SW limits, SW=virtual world, everything should be possible if you have enough raw HW.

Reply 482 of 491, by mr.cat

User metadata
Rank Newbie
Rank
Newbie

Thanks guys. This is actually my first Win98 install, that's part of the problem..
Yes ACPI is a very good thing to have 😁

EDIT: ..or at least it would be, if it worked.
With ACPI enabled (re-installed from scratch with the /NM /PJ switches) , I got the bearwindows drivers (the 32MB variant from 2014) installed and the display mode can consequently be changed to 800x600x16bit or whatever.
But some vital ingredient must still be missing, because just launching "command" will mess the screen up (to double size & wrong colors). wglgears also immediately segfaults etc.
(This with -device vmware-svga,vgamem_mb=32 and kvm disabled)

EDIT2: Got it working at last. I did see some glitchy weirdness at first, that was resolved by adding the kernel drivers (fxmemmap.vxd and fxptl.sys, see the first post) that were missing.
In a Win9x guest they go to Windows SYSTEM directory.
(There was no mention about kernel drivers in my original December post with the win98 recipe, but it's now added)
The binaries for these can also be found in wrapper/drv directory (they are in a hex dumped form, I assume that is because they live on GitHub).

Last edited by mr.cat on 2021-01-13, 12:20. Edited 4 times in total.

Reply 483 of 491, by t9999clint

User metadata
Rank Member
Rank
Member

I have OpenGL sort of working now, but I can't seem to get it to see openglide.
On the linux side where does the qemu binary expect the openglide libraries to be (I'm using Debian buster)?

I've also noticed that directdraw doesn't work at all. Even for simple games that don't use any 3dacceleration. You guys have any tips for workarounds for this? Normally I'd just use one of the newer implementations of WineD3D, but i'm having difficulty finding a ddraw.dll wrapper that'll work on win98.

A third thing to note, I've noticed that if you try and render a OpenGL game in a window it ignores it's window position and just renders in the bottom left corner. This also seems to cause visual garbage in the rest of the window, is windowed support something that's just not possible with this solution?

Thanks for your help.

My Youtube Channel: https://www.kor.ninja/
My Soundfont Project: K.O.R. Soundfont Project V.5.0
My Soundcloud Page: https://soundcloud.com/clint-theriault

Reply 484 of 491, by mr.cat

User metadata
Rank Newbie
Rank
Newbie
t9999clint wrote on 2021-01-11, 11:38:

I have OpenGL sort of working now, but I can't seem to get it to see openglide.
On the linux side where does the qemu binary expect the openglide libraries to be (I'm using Debian buster)?

The default location is /usr/local/lib, if you compiled OpenGlide yourself.
AFAIK it uses dlopen() to find it so...man dlopen?
Also, LD_DEBUG=libs can sometimes help to find out how the libraries are loaded (just add it on the command line, before the command).

t9999clint wrote on 2021-01-11, 11:38:

I've also noticed that directdraw doesn't work at all. Even for simple games that don't use any 3dacceleration. You guys have any tips for workarounds for this? Normally I'd just use one of the newer implementations of WineD3D, but i'm having difficulty finding a ddraw.dll wrapper that'll work on win98.

Which games for example? If it's early DirectX (1-7), just copying the dlls isn't going to work (WineD3D's own readme has the details).
There is a longer explanation on that problem here:
https://web.archive.org/web/20151224173752/ht … ineD3DOnWindows

Also there is the fact that the oldest OS that is mentioned on WineD3D web page is Win2k, I don't know what witchery is needed for Win9x but seems it can be done:
Re: QEMU MESA GL pass-through for OpenGL games

Reply 485 of 491, by t9999clint

User metadata
Rank Member
Rank
Member

It won't work for any game that isn't using OpenGL to initialize fullscreen.
Starcraft, Diablo, NFS 2, WinQuake, Quake II, etc...
I'm trying this with the VMWare display and drivers, should I be trying with something else? Or is this expected behavior with this method.

My Youtube Channel: https://www.kor.ninja/
My Soundfont Project: K.O.R. Soundfont Project V.5.0
My Soundcloud Page: https://soundcloud.com/clint-theriault

Reply 486 of 491, by mr.cat

User metadata
Rank Newbie
Rank
Newbie
t9999clint wrote on 2021-01-13, 18:05:

It won't work for any game that isn't using OpenGL to initialize fullscreen.
Starcraft, Diablo, NFS 2, WinQuake, Quake II, etc...
I'm trying this with the VMWare display and drivers, should I be trying with something else? Or is this expected behavior with this method.

Ah ok thx, I see what you mean now. It will say something like "linked to missing export DDRAW.DLL:DirectDrawCreateEx."
I may be mistaken but from that other thread I got the impression kjliew cooked his own version of WineD3D to get around some ddraw issues.

Reply 487 of 491, by t9999clint

User metadata
Rank Member
Rank
Member

He did but I don't think he shared it anywhere, or explained how made them.

My Youtube Channel: https://www.kor.ninja/
My Soundfont Project: K.O.R. Soundfont Project V.5.0
My Soundcloud Page: https://soundcloud.com/clint-theriault

Reply 488 of 491, by ruthan

User metadata
Rank Oldbie
Rank
Oldbie

Here is some post where is writing about not Glide games, OpenGL preview..
Re: KVM(QEMU) Win98 videocard passthrough.I finally got it working- with full 3D API support Quake III 1600x1200 90+ FPS

Im old goal oriented goatman, i care about facts and freedom, not about egos+prejudices. Hoarding=sickness. If you want respect, gain it by your behavior. I hate stupid SW limits, SW=virtual world, everything should be possible if you have enough raw HW.

Reply 489 of 491, by mr.cat

User metadata
Rank Newbie
Rank
Newbie
ruthan wrote on 2021-01-13, 21:16:

Thanks ruthan, but isn't that simply the MesaGL implementation that is now included with qemu-3dfx? Or was there some point that I missed?
WineD3D handles the calls from a Direct3D app to MesaGL, but the problem is that some games try to use DirectX calls that aren't available in (vanilla) WineD3D.

Reply 490 of 491, by mr.cat

User metadata
Rank Newbie
Rank
Newbie
t9999clint wrote on 2021-01-13, 18:05:

It won't work for any game that isn't using OpenGL to initialize fullscreen.
Starcraft, Diablo, NFS 2, WinQuake, Quake II, etc...
I'm trying this with the VMWare display and drivers, should I be trying with something else? Or is this expected behavior with this method.

Which version of Diablo? diablosw.exe (md5sum: b3e9a4b1cfb0353fc6455f494f192bdb) seems to "just work" (using bearwindows drivers, no WineD3D needed).
For NFS2, only the SE version has Glide support. I don't think WineD3D is needed for these.

EDIT: Just to clarify, these pure GDI and DirectDraw programs use a different code path. You can see that pretty clearly if you take a look at the qemu console.
(if there are no telltale messages about wrapper activation, the app could then probably run on vanilla qemu just as well)

Last edited by mr.cat on 2021-01-15, 19:25. Edited 1 time in total.

Reply 491 of 491, by digger

User metadata
Rank Member
Rank
Member
kjliew wrote on 2021-01-11, 09:47:
I realize where you were at trouble. Sigh ... a common myth of retro folks. ACPI is actually a good thing. You didn't force ACPI […]
Show full quote
mr.cat wrote on 2021-01-09, 22:16:

EDIT: You weren't kidding when you said it's painful...
I now found out why the graphics drivers cannot be installed, so this may help peeps stuck in 16 color mode (win9x guest):

I realize where you were at trouble. Sigh ... a common myth of retro folks. ACPI is actually a good thing. You didn't force ACPI installation during Win98 setup invocation. Unlike the other UI-fancy PC emulation 😜, QEMU PC platform emulation is based on clean implementation of PC BIOS or OVMF UEFI. It is a no-fuss, minimalist concept. If you were familiar with IBM PC BIOS legacy, then you would know what I mean. So ACPI is preferred since this is the essential PnP and device discovery for modern PC firmware. The obsolete pre-ACPI PnP standard is likely just a stub.

You need to force ACPI installation for Win98 Setup invocation with:
**SETUP /NM /PJ**

Otherwise, Win98 PnP detection will not discover the existence of PCI bus.

Also, the system will idle at 100% CPU utilization if you don't force ACPI during installation! So indeed, you really do want to enable this.