VOGONS


First post, by feipoa

User metadata
Rank l33t++
Rank
l33t++

Does Quake 3 use MMX for CPUs that it detects are MMX-capable? If so, is there anyway I can tell Quake 3 not to use MMX? I'm doing some troubleshooting that I predict may be linked to MMX in some form or another. Thanks.

Plan your life wisely, you'll be dead before you know it.

Reply 1 of 10, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
feipoa wrote on 2020-07-03, 05:47:

Does Quake 3 use MMX for CPUs that it detects are MMX-capable? If so, is there anyway I can tell Quake 3 not to use MMX? I'm doing some troubleshooting that I predict may be linked to MMX in some form or another. Thanks.

I'm not sure about all Quake3 versions but the original 'Quake 3 Arena Demo' (exe size: 864 313 bytes) does not contain any MMX optimized code (only large chunks of x87/FPU heavy code).
It's rather easy to check this with BIEW or any other binary viewer that has disassembly option.
MMX instruction blocks have to end with EMMS instruction because the MMX registers are mapped onto the x87 stack. The hex code of EMMS is 0x0F77 so it can be searched.

MMX is usually not too useful for 3D games anyway since it can only speed up integer calculations while calculation intensive parts in 3D games mostly use floats.
I have checked and the original 'Quake 3 Arena Demo' exe does not use 3DNow!/SSE optimizations either.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 2 of 10, by feipoa

User metadata
Rank l33t++
Rank
l33t++

I am using Quake 3 Arena v1.32, which isn't the demo version. Anyway to disable MMX support entirely in this version of Quake 3?

Plan your life wisely, you'll be dead before you know it.

Reply 3 of 10, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
feipoa wrote on 2020-07-03, 06:53:

I am using Quake 3 Arena v1.32, which isn't the demo version. Anyway to disable MMX support entirely in this version of Quake 3?

I have just checked v1.32 (exe size: 905 216 bytes) and it does not conatain any MMX code either... So you simply do not have to disable MMX support since no such optimizations contained in executable.

But if you do not believe me check it for yourself with BIEW:
https://ecsoft2.org/biew

If exe contains MMX optimizations EMMS instruction always can be found (it looks like this):

mmx.png
Filename
mmx.png
File size
62.54 KiB
Views
782 views
File license
CC-BY-4.0

But in Quake3.exe you can only find standard 386+ and x87/FPU code. With PageDown you can quickly scan the code for 'white' parts (white means P5MMX instructions) but you will find none :

quake3.png
Filename
quake3.png
File size
65.46 KiB
Views
782 views
File license
CC-BY-4.0
Last edited by Falcosoft on 2020-07-03, 09:33. Edited 1 time in total.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 4 of 10, by leileilol

User metadata
Rank l33t++
Rank
l33t++

Allegedly there's MMX in 1.27g (an alternative 'nommx' binary exists) so maybe they've had issues. The released source references MMX only on two memory copy functions, MMX possibly only used for the linux builds.

apsosig.png
long live PCem

Reply 5 of 10, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
leileilol wrote on 2020-07-03, 09:32:

Allegedly there's MMX in 1.27g (an alternative 'nommx' binary exists) so maybe they've had issues. The released source references MMX only on two memory copy functions, MMX possibly only used for the linux builds.

I can confirm this. v1.27g really contains MMX instructions, but only move instructions:

quake3_mmx.png
Filename
quake3_mmx.png
File size
65.92 KiB
Views
767 views
File license
CC-BY-4.0

@feipoa:
So your test is easy: If problem is MMX related then it should be experienced with v1.27g and not with v1.32.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 6 of 10, by feipoa

User metadata
Rank l33t++
Rank
l33t++

This is curious because I only have the problem when I use the MMX version of the Pentium 200 in W2K w/Quake3. I'm at a loss.

Plan your life wisely, you'll be dead before you know it.

Reply 7 of 10, by CMB75

User metadata
Rank Member
Rank
Member

Of course there are lots of significant changes from P54C to P55C. The changes weren't limited to adding MMX capabilities.

https://www.oreilly.com/library/view/pc-hardw … 36/ch04s02.html

Maybe adding more detailed information about your problems might help others to help?

Reply 8 of 10, by feipoa

User metadata
Rank l33t++
Rank
l33t++
CMB75 wrote on 2020-07-03, 11:59:

Maybe adding more detailed information about your problems might help others to help?

That would require a different subject thread.

When Quake 3 starts, something Quake's blue screen dialogue box says that it has detected an MMX CPU, so I figured some feature in Quake likely uses MMX to some extent. And if so, I was hoping maybe there is a way to tell Quake 3 not to use MMX.

Plan your life wisely, you'll be dead before you know it.

Reply 9 of 10, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
feipoa wrote on 2020-07-04, 08:57:
CMB75 wrote on 2020-07-03, 11:59:

Maybe adding more detailed information about your problems might help others to help?

That would require a different subject thread.

When Quake 3 starts, something Quake's blue screen dialogue box says that it has detected an MMX CPU, so I figured some feature in Quake likely uses MMX to some extent. And if so, I was hoping maybe there is a way to tell Quake 3 not to use MMX.

I seriously think that you figured it wrong. Just because Quake3 detects MMX CPU at the start it does not mean some 'feature' can use non-existent MMX code. As you can see different versions used different compiler options that results in that some versions do contain MMX code and some versions do NOT. It can be examined, there is no need for guesses... Id Software simply did not change the startup code for versions that were compiled without MMX: these versions also detect MMX (and show the result on blue screen dialogue box) but do not use it.
Of course, e.g. your video card's Opengl driver can use MMX optimizations, but in v1.32 Quake3 itself there is no other 'feature' that can use MMX mysteriously even when it is missing from the executable.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper