Graphical issues with all Windows games after the MMX commit
So far it looks like all Windows 98 games are showing what looks like polygon/triangle glitching.
This problem might be caused by this MMX commit because i'm almost certain that this issue wasn't happening roughly a week ago. It definately don't happen in Preview 4 at least.
Here it is in Quake 3:
https://github.com/user-attachments/assets/b86279d3-37d9-42f5-ae50-afbd32d00da7
It does not happen with any DOS game i've tried so far. Only Windows games, and some games have it worse than others but they all have it. Some games i've tried are: Q3, Deus Ex, Unreal, Unreal Tournament, Motorhead, Return to Castle Wolfenstein, Forsaken, Need for Speed II SE.
It occasionally causes previously stable Windows games to crash as well. The crashes are pretty random. A game might work fine, then another time it will crash on a loading screen or something like that. Loading screen crashes seem to be most common.
These problems happen with both Hardware OpenGL and Software Multi-Threaded core settings.
The MMX patch is also applied with any System > CPU Type core setting. So i can't test Windows without MMX enabled lol.
The polygon graphical issue already happened previously, but in rare cases, like with Daikatana which you can see in the vid here. Whatever has caused this to become much worse might be a clue to what causes this issue in the first place...
Tested with RA 1.22.1 on Win11.
Yeah it does not look good... The issues happen on two CPU emulation cores (dyn_x86 and normal) which have separate implementations of MMX. It seems even worse on the dynrec CPU core where Q3 doesn't even launch at all anymore. I'm not sure if MMX is at fault or if just the CPU announcing that it is more advanced than a basic Pentium CPU is enough to cause these issues. The MMX implementation on dyn_x86 is very simple, it just forwards the MMX instructions to the actual CPU so I'm not sure how something that simple can be at fault. So I don't think I can fix this so we likely need to disable MMX (at least by default).
The MMX patch is also applied with any System > CPU Type core setting. So i can't test Windows without MMX enabled lol.
As of now, when using the [ Run Installed Operating System ], DOSBox Pure will indeed just overwrite the setting with the highest supported CPU feature set, so that's likely why you're seeing this. Running Win 9x with anything but Pentium is worthless but maybe now that we have 2 Pentium options it should at least use them if they have been set.
I was hoping you'd say it's something completely different and not MMX, because it would be great to have MMX! Anyway i messed around with some dyn_x86 files for MMX but being as i don't really know what i'm doing, nothing helped or i made things worse. I doubt the problem would be related to this though:
or if just the CPU announcing that it is more advanced than a basic Pentium CPU is enough to cause these issues
And yeah this option would be good to have:
but maybe now that we have 2 Pentium options it should at least use them if they have been set.
Btw, Quake 3 gets 88.4 FPS in the timedemo with Preview 4, versus 95.6 FPS with the latest MMX commit. A pretty nice 8% increase. But... Q3 doesn't use MMX at all, so that's kinda weird but i'll take it :) Maybe a different change is responsible for this.
So I think the 3dfx driver on Windows 9x uses MMX and the emulation is faulty. I tried running Quake 3 in DOSBox-X with MMX enabled and... same issues appear there even though DOSBox-X has a lot of accuracy improvements across the board. Then switching the CPU type down to Pentium without MMX and the problems are gone in X as well.
I tried running Quake 3 in DOSBox-X with MMX enabled and... same issues appear
Oh yeah, same for me too. Literally identical graphical problem in DOSBox-X, it's not any better or any worse.
And just tried many more DOS games with CPU Type set to Pentium MMX, and checked to make sure it's working (or at least being reported):
There's not a single DOS game that shows any graphical problems, including Voodoo supporting games that also support MMX, like Extreme Assault. So as you say, maybe it's just the 3dfx Windows driver. Extreme Assault is capped to just 30 FPS and a standard Pentium 100MHz is enough to hit that, so it's still pointless to use a Pentium MMX with DOS, but still, it apparently works fine in DOS.
Don't know if this may help (haven't tested myself yet) but theres this fork of wine for 9x MMX and 3dfx. https://github.com/crag-hack/wine9x
Theres also the original wine9x MMX from JHRobotics. https://github.com/JHRobotics/wine9x
Maybe it'll help you find a solution?