[Discussion] QEMU 3Dfx Virtualization

Hi,
I can’t answer to mp, perhaps because i’m a new user.
I will try what you explained to me.

For the while i tested with my own compilation (based on 6.2 QEMU Version) after successful did it. At the beginning i didn’t see my intel 4770k could run whpx then i stopped to stay focus on the tutorial i’m writing for French people to promote QEMU for 2d Games. I tried just now (and several times) to run it with whpx and os freeze just after identification.

edit:
I tried the old 5xx version, there is sound problem for me with sb16 as device that i don’t have on 6.2. When i run “Croc” in 3dfx-mode i get a black screen with wrappers i compiled from the github project.

Yesterday i thought i will stop to try, and today i’m almost sure… for the while i can use wrappers under w10 i will make a x86 w10 image, to have all old and new games and stop this machine here. In the future i could deploy this image for all x86 games, and for 2dgames i will use qemu raw.

There is not enough informations from the project to continue, don’t even try to ask for my problem to the creator according how he answered me. I’m happy to not have paid in blind mode, you can’t pay without know if it will work at the end. I’m pretty sure it works well on linux, perhaps i will try sometime, but under windows host… For the while it’s fail after fail. I would promote it, make a big tutorial, too bad. I will continue my tutorial for QEMU raw, if things change i will see, for the while it’s a big “NO”.

thanks a lot in all cases i’m happy to can talk with you about all of this.

If run other normal -non Qemu - Hyper-V virtual is it working? If you are using Qemu for 2d games, its better to use some other graphics card not VBEMP, i thing that i could emulated some Cirrus or S3, VBEMP is not stable for 2D, there is lots of missing features.

yep, i use Cirrus card for 2d games, and p2, it’s perfect for old games like this… i use GlassShader above QEMU and it makes nice shaders effect, near what you see on a CRT screen.

Hyper-V works i got the message “Windows Hypervisor Platform accelerator is operational” ,i don’t have a ahxm compatible. i use whpx. If i run without no problem, since i activate it, just after identification mouse is stucked, and i can send ctrl+alt+del or whatever, nothing appears.

I put all dll i compiled from the project in the right folders, made “pif” to not have problems with ms-dos prompt…


I will try a last thing run it from MSYS2 instead of “CMD” | edit: same problem

Hyper-V is operational is just message… Try actual run one virtual:
https://docs.microsoft.com/en-us/virtual…virtual-machine

Because if you have VirtualBox or Vmware, its not compatible with Hyper-V unless you have Windows 10 1909+ and using Hyper-V for all, its im not wrong you enable and disable with some bootloader flag command…

Well for me its working…

which dll do you use for c:\windows c:\windows\system and the one for the game folder ? Because i use those i compiled from the project, then perhaps it’s couldn’t work with 5 version (my compilation use the 6.2 and last work from github). I add my cpu doesn’t allow vx-d

Well im not expect here there are two intel virtualization things:
VT-x and VT-d … VT-d is name for Intel® Virtualization Technology for Directed I/O (VT-d) , so it should be for some disk operation acceleration and cards passthrough for KVM, i dont thing that is what you need, but i could be wrong, try to ask on vogons.

Dlls this is mention which Qemu-3dfx guide:
https://github.com/kjliew/qemu-3dfx

For Win9x/ME:
Copy FXMEMMAP.VXD to C:\WINDOWS\SYSTEM
Copy GLIDE.DLL, GLIDE2X.DLL and GLIDE3X.DLL to C:\WINDOWS\SYSTEM
Copy GLIDE2X.OVL to C:\WINDOWS // These are for DOS…
Copy OPENGL32.DLL to Game Installation folders

Of course it never worked with all games, but my test matrix for Qemu 5.2 should help (!There 2 sheets one for DOS and one for Windows 98!):
https://docs.google.com/spreadsheets/d/1…dit?usp=sharing

i know for dll i have already compiled myself but it was with the last building, i ask myself it mine are correctly compiled for 6.2 as for the 5 version. For the while crashes or nothing.
Nohting happened with game i mentionned like croc

And i can have a frozen os, i just removed, vxd files (from what i compiled) i don’t crash os for the while.

thanks.

Otherwise board which is able to run 4770K, its able to run also Broadwell cpus… 5770K its able to run both VT-D amd VT-x, maybe only just need to change cpu.
https://ark.intel.com/content/www/us/en/…o-3-70-ghz.html

Im now aware that i would need to compile these dlls, i just downloaded them… i could be wrong, but i dont thing they depends on Qemu version, at least it the past they worked with multiple versions.

could you explain me where you dll them ? perhaps the problem is relative with my compilation of them.
For the 5770k for the while i have no money, i need to work, and in all case i prefer so see before. Furthermore i try to do it and explain if it’s possible for people that don’t talk at all english (i’m not the best to write but it’s ok to understand), etc…

Thanks.

I thing that at the start of project where compiled dlls available for download on Github page, but not there is only source, but even Github page has link to Vogons, to try to ask there.

ok, i’ve already tried with vogons resources, same problem.
I can’t know if this project can work with my hardware without pay the author as i thought. I prefer to stop.


Thanks for your help.

Instead of stop everything without explain, i will write all my processus.


Tested both version on a laptop intel 7th gen with a 1060 8g with everything activated and a 4770k 16g 1070 desktop. same problems

Unreal tournament run with 3dfx mode on 5.02 version but render is not like a 3dfx. I have a mouse problem, i can’t see cursor on 3dfx and d3d mode. for me it’s like a software renderer, i’m not ejected but it’s obviously not glide…
My compiled version based on 6.02 crashes immediately after log in (same on my desktop with a 4770k).

- For desktop i ran 3DFX-QEMU with MSYS2 as with powershell, problems still the same… for laptop i ran under powershell only.
- In both case my win98 img has glidex.dll, glide2x.dll, glide3x.dll, FXMEMMAP.VXD in the c:\windows\system directory of my windows guest (windows 98) from a compilation based on the last work available on github.
- i made shortcuts for set the ms-dos prompt in fullscreen
- i copied onpengl32.dll from my compilation inside the game.
- commandline (tried severals still to have the same problems) with 5 version ./qemu-system-i386-520glide.exe -rtc clock=host,base=localtime -m 256 -accel whpx -vga std -device sb16 -usb -no-reboot -k fr-fr -drive format=raw,file=“e:\VM\QEMU\Machines\w98-2.raw” -netdev tap,id=netw0,ifname=OpenVPN_TAP,script=no,downscript=no -device rtl8139,netdev=netw0,mac=52:55:00:d1:55:01

----------
- Croc doesn’t work at all , black screen
- Quake demo is like for unreal tournament, not a real 3DFX mode
- Severance doesn’t work at all.

----------
I tried with dll 3dfx and d3d from dgvoodoo 2.48 just in case, in the same folder than the qemu recompiled… nothing more.

For me…
- i missed something important this is why i explain what i did
or
- there is problem with dll. Without the one used for the 5 version i can’t know if i could work i need a w98 img or dll to verify. Perhaps it could work with 5 version including dll and something has been removed since for the new compilation for 6.02 qemu version.

I hope it could be useful for somebody.

*sb16 device for qemu 5 makes the sound awful, but i’ve already installed drivers, then for the while…

2022-04-10_12h13_34.png

mesa.zip (2.45 MB)

3dfx.zip (879 KB)

Few hints:
- Games will not magically switch into 3dfx mode… Quake demo if im not wrong has not has not glquake.exe executable (for Opengl), its only for full game, it was released after game release…
- in Unreal tournament you have to switch rendering API from ingame menu, or from configuration dialog, its visible at first start and after crash… or maybe with some additional starting parameters google it,
you have select Glide, OpenGL i thing never worked.
- d3d will not work unless you will pay for it you need additional dlls…
- Severance and Croc and i thing i never tried… but have to set to Opengl or Glide to have any chance to make it working…

- you have to put some Qemu dll into folder with dgVoodo is thing that i already sent you these and you need some dgVoodoo settings and i have Qemu.bat within same directory.
glide.dll
glide2x.dll
glide3x.dll
Im adding my dgVoodoo conf file.

SB emulation is Dos sucks, that is why everybody are using AC97 and its in all tutorials

API-select.png

dgVoodoo.zip (4.5 KB)

This how Qemu output window output looks like when it is working:
D:\Games!Emulators\Dos-QEMU>C:\Programy\Qemu52-3dfx\qemu-system-i386-520glide.exe -rtc clock=host,base=localtime -m 512
-accel whpx -vga std -device AC97 -boot c -hda D:\Games!Emulators\Dos-QEMU\HDDs\Win98System2-8GB-440-AC97-VBE-3dfx.vmd
k -hdb D:\Games!Emulators\Dos-QEMU\HDDs\Win-Data-28G.vhd -drive file=D:\Games!Emulators\Dos-QEMU\Isos\Win98SE-ENG.iso,
index=2,media=cdrom -drive file=D:\Games!Emulators\Dos-QEMU\Isos\Win98-Data-and-Drivers-CD2.iso,index=3,media=cdrom -ne
tdev tap,id=mynet0,ifname=TAP -device rtl8139,netdev=mynet0 -usb -no-quit -k en-us
Windows Hypervisor Platform accelerator is operational
audio: Failed to create voice ac97.pi'<br />audio: Failed to create voice ac97.mc’
audio: Failed to create voice ac97.pi'<br />audio: Failed to create voice ac97.mc’
audio: Failed to create voice ac97.pi'<br />audio: Failed to create voice ac97.mc’
audio: Failed to create voice ac97.pi'<br />audio: Failed to create voice ac97.pi’
audio: Failed to create voice ac97.mc'<br />audio: Failed to create voice ac97.mc’
audio: Failed to create voice ac97.mc'<br />audio: Failed to create voice ac97.mc’
audio: Failed to create voice ac97.pi'<br />audio: Failed to create voice ac97.mc’
audio: Failed to create voice ac97.pi'<br />audio: Failed to create voice ac97.pi’
glidept: DLL loaded - glide2x.dll // There is passthrough magic triggered…
trace: _grGlideGetVersion@4 called
glidept: grGlideGetVersion Glide 2.43
trace: _grSstQueryBoards@4 called
trace: _grGlideInit@0 called
glidept: f6c9c59-18:00:19 Feb 2 2021 build WRAPFX32
wr2x_trace: _grErrorSetCallback@4
wr2x_trace: _grSstQueryHardware@4
wr2x_trace: _grSstSelect@4
glidept: grSstWinOpen called, fmt 1 org 0 buf 3 aux 1 gLfb 0xe5a28000
glidept: LFB mode is Shared Memory (fast), One-copy


After start of Unreal tournament.

UT.jpg

I checked severance… At least demo, wasnt able to detect OpenGL virtual card(only D3D was available), regarding of pcgamingwiki full game has OpenGL support, but i dunno if would work with Qemu, OpenGl has to be detected by game setup, otherwise it will not wrong… and because its done through Opengl32.dll hack its possible that hack will not wrong…

thanks for your answers,

sorry if i look rude, as you can see i’m not a good in english.


full game => black screen as i said.
Unreal tournement Demo => 3dfx mode selected.

- I know all the games you mentionned, i was a young man when they 've been released. I made a lot of lan party with it.
- d3d i know.
- croc can ben launched in 3dfx mode, severance same…

For the while nothing work, i begin to try under linux just to see.



You seem to not talk about the wrappers you need to install under windows guest, dgvoodooo… 1.4, 2.48 … if it’s 2.48 it’s for host. We must add dgvoodoo 2.48 dll into qemu folder ? If it is, just to verify i’ve already did it just to see… doesn’t work too.


Not on 6.02 version, sound is perfect, but only for the windows version of qemu, for linux it’s crash. I can launch with no sound card just for see but i doubt that if it’s ok for 2d games suddenly it can’t for all 3d games, but why not.
I add, I didn’t see any tutorial about qemu 3dfx, and there is almost nothing for windows too, this is why i made a tutorial for french people to play 2d games under windows10 host/windows 98 guest. I can’t do it in english as you can see when you read me.

----------
for the second post, i don’t have the same image, i launch it with the same parameters… You seem forgot inside the windows guest you have the wrappers compiled from the project, it’s enough to be the cause of all crashs, freeze etc… It’s why i give a win98 image unactivated with my tutorial in all case, because launch it is juste a part of the work. After, if people want to go further they could make their own image.

----
I don’t understand, you check only demos, some games are abandonned , why don’t use directly them ?


------

From what i see, the author say "if works", his tutorials are not really tutorials, i found yesterday another "tip" lost in an issue that could affect compilation for linux as for windows, you must specify targets to avoid compilation problems. In reality you must be a qemu expert, familiar to compile to hope use his work. There is a lack of informations, worst probably now there were problems with vogons forum. The most time he answer, make a "little" donation, 60$ and you don’t know at all if it could work on your hardware, and it’s written he refuses to refund.

I see no real tutorial, most of videos are short and doesn’t show at all how to make. I will not say it’s a trap, but almost… in theory it’s not really open source. Some of my programs need dll, i give dll or package precompiled, it’s obviously free. If somebody have problem, and there is "issues" section, it’s for help. It’s really sad to see such a behavior, and sincerely i prefer to wait a solution appears, use gog, or even never play again to my games… even if i have souvenirs with a lot of them, than to pay for a guy acting like that. He want to be the only one or almost to use his work, good for him. Worst, he talk about games preservation, if open source exists it’s to let your work being reproductible, if you stop to work , it’s not abandonned, someone can continue … but with a such chaos, i’m not sure there is a lot of people that would.

Best regards, if you want to help people and democratises this solution, you will have to make a step by step tutorial+a package containing compilation and win98 image unactivated (perhaps one or 2 demos) instead the one the creator never did. I will continue to see under linux, from my side to look if there is a different behavior that could explain the problem.

Wrapper has to be installed only on host machine (OS which are using normally) not in guest (there should only add these *.dll files to windows and game directories sometimes)… monitor qemu windows, if not get there same messages at i when you start 3dfx mode something is wrong with your setup… There should be at least some failed calls.

BTW you could try to Dos too, there is simpler, just replace glide.ovl file within games directory with Qemu one and it should work, if is not something with your setup.

SB sucks for Dos.

Abandonware there does not exists anything like that in legal terms, its just term to hide piracy… Software rights are protected for 70 years.

which wrappers, compiled or dgvoodoo ?
because according to the github project



i dit it, for dgvoodoo 2.48 ok, in this case but he never talked about the needs to use dgvoodoo wrappers on host.

i copied ms/x86 directdraw, directx8, d3dimm.dll at the root of the folder when qemu exe are placed.
same for
glidex.dll files.
-----------------------
for sb16 i will use ac97 soon, i would just to try with compiled wrappers i made under linux when i saw something i never noticed before, pretty sure it was not written … (see next part)

-----------------------
I found why my version crashed (with qemu 6.02 3dfx compilation) you must use accel=whpx,kernel-irqchip=off" instead of just using "accel=whpx" according to his wiki. I stopped to freeze win98 host since i use this parameter. At least in my case with a 4770k, i don’t know for others. It was relative to the "FXMEMMAP.VXD" copied in c:\windows\system in win98 guest. I identified that quick but i didn’t know why.

-----------------------

I ran Unreal Tournament in Trim mode, i don’t understand why you have 3dfx mode on your video, nglide on host ? And suddenly i saw something on powershell before to have an exception about sound. I removed sb16 for ac97… a lot of problem to find good pilote but it’s ok and after ran again Unreal Tournament en trim mode i got this

2022-04-11_16h14_42.png



I made a video, it works for opengl, i have no sound because of screenpresso but i have sound in game (pass trough)

ok as i thought there were a wrapper missing, openglide by example. wrappers from compilation were not the only one to put.