VOGONS


MMX/3DNow!/SSE usage

Topic actions

First post, by d1stortion

User metadata
Rank Oldbie
Rank
Oldbie

How about throwing a list of software together that uses them to some extent? Mainly for stuff that came out within just a few years of when the CPUs were released, obviously, because it's kind of boring when it's 10 years later and everybody already has a CPU like that.

Here's some I can think of:

Games:
POD: Uses MMX, a special OEM version was bundled with Pentium MMX processors.

Rebel Moon Rising: Requires MMX, was (exclusively?) bundled with Pentium MMX Overdrive CPUs. (http://www.thefreelibrary.com/INTEL+ANNOUNCES … R...-a019169821)

Extreme Assault: Uses MMX, probably one of the few DOS games to do so.

Half-Life: Uses MMX to great extent, particularly for the software DSP sound engine and probably also skeletal animation system

Unreal: Uses MMX for its Galaxy sound engine, in fact the readme suggests to lower the sampling rate to 11 kHz for better performance on non-MMX CPUs. MMX was also used greatly for the software renderer. There is probably some 3DNow! usage and SSE is detected, although I don't think it's used

Quake II: 3DNow! patch written by AMD to promote K6-2, provides a notable speed boost (and supposedly there are even graphical differences with this?!). There are specific options available for 3DNow! software, OpenGL and Voodoo2 MiniGL ("3DfxGL") IIRC, and also a later version that is more optimized towards K7. No MMX usage though:

http://www.quake2.com/q2faq.html#II.4 wrote:

Quake II does NOT use Intel's latest MultiMedia eXtensions. Unreal will though as well as other upcoming games. Even then, it's wise to buy a MMX chip if you're already thinking of upgrading your machine.

The Quake engine uses the Intel FPU extensively, and also uses a native feature of the Intel FPU called Parallel FPU lines. This allows simultaneous integer and FPU calculations and Quake uses these to do lots of calculations at the same time. The problem is that the MMX instructions use the Parallel FPU lines for calculation, and if MMX were supported in Quake, Quake and the MMX would be fighting over the usage of the Parallel FPU lines. This isn't the problem for most programs because Quake is just about the first major program that even uses Parallel FPU lines in the first place, so other programs don't have this conflict.

Carmack reported that a MMX version of Quake he had in alpha stages would run, at best, the same speed in 16-bit colour as an 8-bit colour version does on a non-MMX Pentium chip of the same clock speed. Carmack says this increase in colour depth only isn't worth the development time and money and has decided not to support MMX with the Quake engine in its current form.

Quake III Arena: Not sure on this one, I believe it uses MMX and 3DNow! but not SSE, even though it is detected?

Emulators:

ZSNES (DOS+Windows) supports MMX and requires it for certain video filters and audio interpolation options. ePSXe gets a sizeable speed boost from SSE I believe, although more checking would be needed. 1964 has a "SSE optimizations enabled" message.

As far as drivers/APIs go, the 3dfx drivers/Glide were optimized for all three:

http://www.3dfxzone.it/dir/3dfx/voodoo3/faq/general/ wrote:

A. We have worked diligently with AMD to insure that our drivers for Voodoo3 as well as drivers for Voodoo Banshee and Voodoo2 will get the maximum possible benefit from the 3DNow! instruction set. You can even see several AMD K6-3D systems in our booth today!

A. Collaborating with Intel, we optimized current and future Voodoo products for the Pentium III processor, enabling consumers to enjoy greater levels of realism in their games and entertainment content. All of the application programming interfaces (APIs) supported by Voodoo3 – including Microsoft’s Direct X6, Glide from 3Dfx and OpenGL from Silicon Graphics – have been optimized for the Pentium III processor. As a result, content developers can incorporate more intricate models and scenes, and apply significantly greater realism to the movements of characters and objects.

As for Pentium II, with Voodoo Banshee we introduced a patent to directly handle out-of-order commands from the Pentium II so that there are no CPU stalls. This hardware optimization results in as much as a 15 percent performance improvement.

DirectX 6.1 introduced 3DNow! support (http://www.weblearn.hs-bremen.de/risse/RST/SS … s/3ddirectx.htm), although there are reports of that being gone in DirectX 7 (http://www.hardwarecentral.com/showthread.php … rectX-6.1-3DNOW!)?

There is also this diagnostic software Perfmonitor, which requires K7 or Netburst, but it can show executed MMX and SSE instructions to verify if old games use them.

I also found this nice list with 3DNow! supported software. Where is my Duke Nukem Forever with 3DNow! support?! 😁

Last edited by d1stortion on 2014-02-19, 18:16. Edited 1 time in total.

Reply 1 of 59, by F2bnp

User metadata
Rank l33t
Rank
l33t

Cool thread d1stortion!

In before elianda, swaaye and leileilol hahahaha 🤣

I believe Rayman 2 also uses MMX, if it detects it and installs the appropriate version (probably just an extra executable) during installation.
Also, Jazz Jackrabbit 2 does some funky MMX stuff with lightning I believe. Or perhaps it merely improves on the sound quality.

Reply 2 of 59, by d1stortion

User metadata
Rank Oldbie
Rank
Oldbie

Good call on JJ2, now that you mention it that game has some hardware accelerated mode (DirectDraw?) that runs much faster, but looks decidedly worse than software, which offers additional lighting effects as you said. MMX usage can be toggled ingame actually, but when testing I can't say that it made for a noticeable difference. My guess is that the stuff that MMX speeds up is not the bottleneck on my PIII 1100, some testing between PPro 200 1MB and PII 233 would be better suited to see if it does much for the game.

Reply 3 of 59, by swaaye

User metadata
Rank l33t++
Rank
l33t++

When you run Unreal on a Pentium Pro, the game informs you that MMX is not supported and configures audio to low quality. I believe you can force it back to higher quality though. I imagine the software renderer would run poorly, since it is built around MMX. However, the PPro 200 + Voodoo2 is still a solid Unreal platform because the PPro has such an excellent memory subsystem and FPU.

Other games I know of offhand that weren't mentioned would be Battlezone 2 which has some improved lighting/shadowing or something if you have SSE (it is an option in the menu). The unofficial BZ2 patch, a work of 2 of the game's original programmers, has additional SSE use among other things like a overhaul of the audio and video renderers. Also, some Westwood games including Blade Runner, C&C Tiberium Sun and Red Alert 2 use MMX.

Reply 5 of 59, by Stiletto

User metadata
Rank l33t++
Rank
l33t++

I remember someone involved with DOXBox development put together a list of DOS games they'd need to worry about for their CPU emulation. Can't remember where it got to though. Maybe I'll hunt it down in the forum search later.

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 6 of 59, by d1stortion

User metadata
Rank Oldbie
Rank
Oldbie

About those games bundled with CPUs, in the link I've edited in it says that both POD and Rebel Moon Rising came on one CD, along with other stuff, which was included with Pentium MMX Overdrive CPUs. Does anyone know if there is only one single version of that CD, and did it come with regular Pentium MMX CPUs as well?

Reply 7 of 59, by noshutdown

User metadata
Rank Oldbie
Rank
Oldbie

i have tried that 3dnow version of quake2, and i would say that it only works with glide or software renderer, but not for opengl. with 3dnow opengl there is only about 5% improvement in speed, and the colored lightmaps became very ugly. also the sounds became distorted, and i dunno why.

quake3 is listed as with 3dnow support, however a k6-3+550 still got smoked by celeron300a oc 450, at 6.6fps vs 9.6fps. it managed to slightly edge out the pentium mmx though.

Last edited by noshutdown on 2014-02-20, 01:32. Edited 1 time in total.

Reply 8 of 59, by leileilol

User metadata
Rank l33t++
Rank
l33t++

I'm not convinced Unreal's SoftDrv uses MMX. Doing software rendering in MMX would be slower because of the CPu switching, though MMX is useful for blitting up... still an impressive piece of work however 😀

For Engoo I thought about using MMX intrinsics for the colored lightmap but the cycles it takes to switch on an older processor(100+) wouldn't make the performance better on PMMX and PII. In the end, using lookup tables (to 8to24 the texture pixel) on lookup tables (to mix the light intensities in 15bit, the part where MMX could be used) on lookup tables (to 15to8) seems very fast.

There are a few early Direct3D games that allow the choice of the MMX-based rasterizer. Hasbro Interactive titles come to mind...

Battlezone II is both a serious MMX and SSE user, one of the earlier cases. 😀

Quake III Arena seems to use MMX only for certain memory copy functions... and I can barely find SSE-specific code in there other than to pad triangle data for it. There is an official build of 1.27g compiled without MMX support if you want to try comparing performance with plain 1.27g (the old Dec 2000 version that ships with Q3TA)

Attachments

  • Filename
    quake3nommx_127g.zip
    File size
    411.43 KiB
    Downloads
    94 downloads
    File license
    Fair use/fair dealing exception

apsosig.png
long live PCem

Reply 9 of 59, by swaaye

User metadata
Rank l33t++
Rank
l33t++
noshutdown wrote:

i have tried that 3dnow version of quake2, and i would say that it only works with glide or software renderer, but not for opengl. with 3dnow opengl there is only about 5% improvement in speed, and the colored lightmaps became very ugly. also the sounds became distorted, and i dunno why.

What do you mean by Glide? Quake 2 only has OpenGL and Software modes. Do you mean a specific MiniGL?

Reply 10 of 59, by noshutdown

User metadata
Rank Oldbie
Rank
Oldbie
swaaye wrote:
noshutdown wrote:

i have tried that 3dnow version of quake2, and i would say that it only works with glide or software renderer, but not for opengl. with 3dnow opengl there is only about 5% improvement in speed, and the colored lightmaps became very ugly. also the sounds became distorted, and i dunno why.

What do you mean by Glide? Quake 2 only has OpenGL and Software modes. Do you mean a specific MiniGL?

i thought that "3dfx opengl" renderer in quake2 was actually refering to glide.

Last edited by noshutdown on 2014-02-20, 05:21. Edited 1 time in total.

Reply 12 of 59, by noshutdown

User metadata
Rank Oldbie
Rank
Oldbie
leileilol wrote:

We just want to make things clear that Quake2 has no Glide API support whatsoever. (and no SGL support either)

oh really, whats the idea of separating "default opengl" and "3dfx opengl" then, would the 3dfx cards run with "default opengl"?

Reply 13 of 59, by Putas

User metadata
Rank Oldbie
Rank
Oldbie
noshutdown wrote:
leileilol wrote:

We just want to make things clear that Quake2 has no Glide API support whatsoever. (and no SGL support either)

oh really, whats the idea of separating "default opengl" and "3dfx opengl" then, would the 3dfx cards run with "default opengl"?

Yes, if you have ICD installed. However minigls are less demanding.

Reply 14 of 59, by d1stortion

User metadata
Rank Oldbie
Rank
Oldbie
noshutdown wrote:
leileilol wrote:

We just want to make things clear that Quake2 has no Glide API support whatsoever. (and no SGL support either)

oh really, whats the idea of separating "default opengl" and "3dfx opengl" then, would the 3dfx cards run with "default opengl"?

They used to not support the full ICD in the early years, that is why MiniGL was used a lot in those times...

At least the latter one is basically a Glide wrapper btw, hence why some people on here class such games as "Glide games" indeed. We've had this discussion several times, it's not the topic here though 😀

noshutdown wrote:

quake3 is listed as with 3dnow support, however a k6-3+550 still got smoked by celeron300a oc 450, at 6.6fps vs 9.6fps. it managed to slightly edge out the pentium mmx though.

That is not surprising at all. 3DNow! really did only so much to close the gap to Intel, it couldn't fix the inferior FPU and memory performance.

Reply 15 of 59, by vetz

User metadata
Rank l33t
Rank
l33t

Cybertroopers: Virtual On also required MMX to run (only software version, PowerVR version runs without)

3D Accelerated Games List (Proprietary APIs - No 3DFX/Direct3D)
3D Acceleration Comparison Episodes

Reply 17 of 59, by kithylin

User metadata
Rank l33t
Rank
l33t

I think I remember "monster truck madness" having an mmx option in configuration, but it's been so long since I played it that it might of been an AGP option. Someone might want to confirm this, as I don't have a copy any more.

Reply 18 of 59, by Stiletto

User metadata
Rank l33t++
Rank
l33t++

You guys could always pick apart the Mobygames lists for requiring MMX, 3DNow and SSE for errors. I guess you'd do that by constructing a rig that can run MMX, 3DNow and non-MMX non-3DNow processors and see what falls apart during testing.
http://www.mobygames.com/attribute/sheet/attributeId,1478/
and...
Hmm, I thought they had attributes for 3DNow and SSE. Guess not.

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 19 of 59, by d1stortion

User metadata
Rank Oldbie
Rank
Oldbie

That list probably goes by the minimum requirements the publishers/devs have given for the games on the box, hence the term "Pentium MMX". It doesn't necessarily mean that the games will not start on a non-MMX CPU; really, I don't think it even aims to make a statement on whether those games are using MMX instructions, it's just a filter for official game requirements IMO.

To give you something of an analogy, NFS MW (2005) has a minimum requirement of a 1.4 GHz CPU, but it can actually start on a P233 MMX, believe it or not. http://www.youtube.com/watch?v=i9X6JcUn0TY