A file called dpvs.dll exists in the SWG installation folder. Normally .dll files contain third-party functions which are used by an .exe at runtime. They're known as dynamically linked libraries.
Various debug messages are created when SWG is started. They can be shown using DebugView. One of the messages references DPVS:
https://en.wikipedia.org/wiki/Hybrid_Graphics
https://articles.tomasparks.name/publications/Aila2004.pdf
https://www.gamespot.com/articles/sony-online-gets-dpvs-for-bigger-games/1100-2784263/
If the last line of the debug message refers to detection of CPU capabilities, it's curious why it says X86+MMX. That was old news even in 2003/2004. We should expect to see references to SSE and maybe AVX.
MMX, SSE, and AVX are CPU instructions that are used to calculate matrices and vectors, which are used extensively when rendering 3d graphics. DPVS was cutting-edge code in 2004 so we should expect it to detect SSE capability on a modern CPU. And we should expect the game to run better if it does.
Using x32dbg we can attach to SWGEmu.exe, find the memory location that dpvs.dll has been loaded into, search for the debug message strings, and find what instructions are being executed at that moment. In pseudocode we find a function like this:
if (vendor == "GenuineIntel")
if ((feature bits & 0x03808001) == 0x03808001) // FPU, CMOV, MMX, FXSR, SSE
if ((family_model & 0xFFF) >= 0x672) // family 6, model ≥ 0x72
-> SSE supported
return false
The vendor string comparison checks all three CPUID registers against the byte sequence for "GenuineIntel" (ebx = 0x756E6547, edx = 0x49656E69, ecx = 0x6C65746E) and branches to the failure path on any mismatch.
On an AMD Ryzen, the vendor is reported as "AuthenticAMD", so the first comparison fails and the function returns false.
That is why the debug message says "X86+MMX" on a Ryzen CPU. I don't have an Intel CPU to test with but I suspect the debug message in that case will say "X86+MMX+SSE" and a faster SSE-based codepath will be used during rendering. How much faster is debatable but something is better than nothing.
We can use a hex editor like HxD to patch the dpvs.dll file. Make a backup, then open the file in HxD, go to search->find->hex-values and search for this entire string:
81 FB 47 65 6E 75 75 31 81 FA 69 6E 65 49 75 29 81 F9 6E 74 65 6C 75 21
The bolded values will need to be edited, and replaced with 90 90. What that does is replace the three if branches with NOP instructions so they are not followed and the function will return true.
81 FB 47 65 6E 75 90 90 81 FA 69 6E 65 49 90 90 81 F9 6E 74 65 6C 90 90
Save the file.
If a mistake was made the game will fail to start and show a 0xc0000142 (STATUS_DLL_INIT_FAILED) error.
If a mistake was not made DebugView will show this message:
dPVS 4.8.24 built Aug 24 2003 15:50:05
Copyright (c) 1999-2003 Hybrid Graphics, Ltd. All Rights Reserved.
registered version for dpvs@surrender3d.com
X86+MMX+SSE