So I was messing with quake1 & DJGPP/DOSBox. So yes that means this table is largely nonsense. My larger goal was to see if a strictly softfloat could run Quake1. The answer, is no.
However I got some weird answers from messing around with the flags & fps from a timedemo of demo1
FPS 67.7 113.4 130.1 131.9 101.3 73.0 71.7 31.1 44.6 32.7
CFLAGS -O0 -m386 -m80387 -O2 -m486 -m80387 -O2 -m486 -m80387 -mhard-float -mno-soft-float -mieee-fp -mfp-ret-in-387 -O2 -m386 -m80387 -O2 -m386 -m80387 -funroll-loops -fomit-frame-pointer -fexpensive-optimizations -O2 -m486 -O2 -O2 -msoft-float -m386 -funroll-loops -fomit-frame-pointer -fexpensive-optimizations -O2 -msoft-float -m386 -O2 -msoft-float -m486
This needs to be a table! it’s unreadable!
So surprisingly -O2 -m386 -m80387 produced the fastest code using GCC 2.7.2.3. On DOSBox so yeah that means literally nothing. Rebuilding DOSBox with no floating support code gave a weird error about the pov being out of range.
Obviously the next thing to do is run this stuff natively.. .which means GCC 2.7.2.3 for NT. Oh this is going to be fun, but utterly pointless. Or maybe not.
I re-ran the tests using VMware. There is no audio drivers involved just plain MS-DOS. The red is DOS-Box while green is VMware for the graph with FPS being the measurement. Interesting how the numbers aren’t as varied like DOSBox, however the -m386 -m80387 proved the be the worst for VMware, while the 386 soft float was so incredibly slow on DOSBox but performs great on VMware. yay?
What is the difference between the first line and the last line? Is there really a 30% performance difference with the same options?
I didnt even see that….. and it’s been a few days so I’ll have to re-run them all. I was thinking though instead of trying to get 2.7.2.3 for Win32 running I can just use VMware or Hyper-V to do the benching as that should be native’ish’ enough to get halfway realistic results short of some MS-DOS bootable USB and going native…
I’ve heard that modern CPUs pessimize 387 code so they can devote more to SSE etc, so it’s possible that is the cause.