Some time ago I wanted create ISO with drivers and other support software for Virtual Win 95/98/Me. Also, I wanted include Mesa3D and WineD3D to run OpenGL and DirectX application and games (maybe slowly but they'll run). It wasn't as simple as I thought, I hit a wall a few times, but result is a bit complex package contain VGA driver, OpenGL driver (software or hardware), WineD3D wrapper (translating DX to OpenGL) and OpenGlide wrapper (translating Glide to OpenGL).
Software rendering is accelerated by LLVMpipe driver in Mesa3D and hardware rendering is possible in VirtualBox 7.0 and 6.1 though VMSvga/VboxSVGA video adapter (in theory it can work in VMWare and Qemu, but maybe need some work).
To use hardware rendering in VirtualBox you must set Video adapter to VMSvga (switch VM type to Linux because VirtualBox GUI forbids it). Set video memory to 128 MB and check Enable 3D Acceleration. Last step is turn off GPU10 feature, by this command:
If I find some time in those busy times, I'll test this with my Core i3-12100F on both VirtualBox (was always the worst option for 9x, maybe this will change things) and VMware.
EDIT: And maybe I'll throw in my Core 2 Duo E8600 with GeForce 7900 GTX for some native testing...wished the Core i3 worked natively ?
Amazing progress! glchecker.exe says I have hardware acceleration here in VirtualBox 6.0, wonder if using 6.0 could cause additional compatibility issues. Like, many OpenGL and Direct3D apps work, but dxdiag from DirectX 9.0c doesn't show much 3D graphics through its Direct3D tests in Windows 98SE.
I was also reminded why I don't like using virtualization software for games. I tried playing Baldur's Gate II because I would actually prefer to play it in a VM if it could provide a decent experience, but high audio and input latency just makes it a pretty bad experience.
Maybe VMWare is better (or maybe AC97 works better than SB), but last I tried that had audio issues too. At least with Magpie you can use custom scaling algorithms and shaders, which used to be one of the disadvantages of gaming with virtualization software.
SoftGPU is pack of relatively independent components - you can combine VBEMP 9x driver and use my Mesa9x ( ) for OpenGL rendering and my Wine9x ( ) to DirectX -> OpenGL transport. OpenGL rendering will be software only, but on native HW it will be faster than in VM, VBEMP 9x also not having ICD feature, so you must replace opengl32.dll in system. Unfortunately, it will be still slower than your 7900 GTX.
I got a bit confused about the VirtualBox versions - version 6.0 has choose of VGA adapter, so HW acceleration can work (version 5.1 hasn't it). Please try latest version of SoftGPU, you may have encountered the R5G6B5 bug, newer version may work well.
Version 1.7.x was last which were WineD3D was compatible with 2000/XP, and it is closer to 9x, than try to port something newer. Newer versions using accelerated GDI access and can use Vulcan rendering, but it is useless on 9x. Next problem is OpenGL version, newer Wine are faster but needs more advanced OpenGL, but my actual driver has only 2.1 when is HW acceleration is on.
Tested Need for Speed: Hot Pursuit 2 (DX8, 2002). Without -nomovie command line argument it soon freezes, with -nomovie it draws 3D graphics and freezes later when I try to proceed to a race. Same results with Mesa9x. This game can be launched in a window by editing the rendercaps.ini file in My Documents\EA Games. The game doesn't freeze with wine9x dll's put into the exe's folder on Windows XP with VirtualBox Guest Additions installed.
I have successfully installed SoftGpu on Windows 98 VM in Virtual Box 7 (full 3d acceleration) but some actions are very slow, i.e: maximizing and minimizing windows, opening the start menu and other small things like every time a tool tip appears on the close, minimize or maximize window buttons.
Actually, I think I found the solution...just leaving it here for others: modern processors are too fast for Windows 98 (obviously) and setting the processor cap at around 85 or 90% helps with the slowdowns.
I already seen it, problem can be, as you mention it, with too fast CPU to set system timer correctly. But also, I think that problem can be in frequency boost in modern CPU - CPU is sometime very fast and sometime very slow and system timer become confused.
Where My Windows 98 is your VM name. If it's work for you, it is better solution than setting processor cap - setting processor cap not throttling CPU but only changing execution scheduling - so CPU has same speed as usual, only is scheduled to VM less time. For record, which CPU do you have?
This has helped a bit, but not much. Now I can have the execution cap at 100% and the VM indeed behaves a bit more smoothly (mostly in sound). The slow downs are also less evident but they still occur in the same occasions I mentioned before (maximizing, minimizing, etc...). But thank you for the tip!
I tried NFS HP2 in version 2.42 and with SW rendering works perfectly (but slowly) but with HW rendering I have, already mentioned, problems with Vertex shaders so graphic is a bit broken, but game looks stable (Windows 98 SE + last SoftGPU).
The hardlocks in Hot Pursuit 2 under Windows 98 were fixed by switching from Sound Blaster 16 to AC97, sorry for wasting your time on that. The switch to AC97 also fixed heavy framerate jerkiness in fr-08 intro by Farbrausch.
An additional benefit of using AC'97 ICHx emulation instead of SB16 emulation is that the former supports multi-channel audio, allowing multiple sounds to be played at once. You can notice this in a fresh installation of Windows 98 SE, when the "Welcome to Windows 98" pop-up window is shown on start-up. It plays music (starting with a church bell like sound), before the default start-up sound has finished playing. When emulating a SB16, you will only hear one of those sounds.
With the latest version (softgpu-0.4.2023.11 - using SVGA3D):
3DMark03 - Character models still missing, applying the MaxShaderModelVS workaround throws an error message: Could not create vertex shader - Invalid call
GTA SA - Works fine with the workaround!
I should have probably noted that I am using KernelEx and all the tweaks needed in 98SE for GTA IV to be able to at least attempt to launch it - still not working but I don't expect it to ever work, it's most likely impossible, though it has tried for like a half a second more than before!
Disabling HW Acceleration (unticking 3D Acceleration from VirtualBox settings - using llvmpipe):
- fixes glchecker benchmarks
- GTA SA works without workaround, but of course slower
- 3DMark03 works fine but it is very slow
- GTA IV exists sooner like it did previously