VOGONS


First post, by Chadti99

User metadata
Rank Oldbie
Rank
Oldbie

This one is infuriating, as soon as I upgrade to DX7, either 7.0 or 7.0a I can’t open dxdiag and receive the “This program has performed an illegal operation and will be shutdown”. I’ve seen it across two builds, any ideas?

Attachments

Reply 1 of 6, by Tronix

User metadata
Rank Member
Rank
Member

I encountered similar DXDIAG behavior when i run it on 486 computer. In my case, CS:EIP points to this code:

f6auvwurrfjd1qrzbj6hlae1cfw.png

From which it follows that everything stops at instruction RDTSC, which is not supported by the 486 processor. However, i managed to run DXDIAG on 80486 with a dirty hack - in the DXDIAG.EXE file, I replaced bytes 0fh 31h everywhere with bytes 90h 90h (replace RTDSC opcodes by NOP opcodes). So, after that DXDIAG started, but incorrectly determined the frequency of the processor on SysInfo tab. The rotating cube works fine.

https://github.com/Tronix286/

Reply 2 of 6, by Chadti99

User metadata
Rank Oldbie
Rank
Oldbie

Thanks for this detailed explanation Tronix! I was arriving to a similar conclusion finding references of 6 being the last version of DirectX to support a 486, an AMD 5x86 in my case. But I’ve been able to use DirectX 7 in games just not the diag tool. Any chance you could share your modified file?

Reply 3 of 6, by Tronix

User metadata
Rank Member
Rank
Member
Chadti99 wrote on 2022-02-13, 13:19:

Any chance you could share your modified file?

No, sorry, i'm not sure that I will not violate the Microsoft license agreement or forum rules. You can use any hex editor to replace all 0x0f 0x31 bytes to 0x90 0x90 bytes in DXDIAG.EXE file.

https://github.com/Tronix286/

Reply 4 of 6, by Chadti99

User metadata
Rank Oldbie
Rank
Oldbie
Tronix wrote on 2022-02-13, 13:47:
Chadti99 wrote on 2022-02-13, 13:19:

Any chance you could share your modified file?

No, sorry, i'm not sure that I will not violate the Microsoft license agreement or forum rules. You can use any hex editor to replace all 0x0f 0x31 bytes to 0x90 0x90 bytes in DXDIAG.EXE file.

No worries, I should be able to edit, thanks!

Reply 6 of 6, by Tronix

User metadata
Rank Member
Rank
Member

Not at all! BTW, the same method worked with some other 3D applications on 80486, for ex Final Reality demo/benchmark - app crashes on library RLMFC.DLL, so if you replace 0x0f 0x31 bytes to 0x90 0x90 in RLCMFC.DLL Final Reality start okay, excluding CPU frequency info.

https://github.com/Tronix286/