Reply 160 of 206, by Dege
Thanks DoomGazer, I have the abandonware version of Blood, and I use it IN exactly the same way you wrote it. 😀
The slowdown problem (slowmotion) comes out under XP (and 2k) due to the following:
There are two threads, one for the DOS program, and one for the DX-rendering code. While the rendering thread isn't suspended and is rendering the scene, dos thread must also be run and looped (but also throwing its time slices) to be able to handle pending interrupts (the most important one is the timer interrupt). It's important to get the operating system to switch to the dos thread in the next time slice scheduling when an interrupt occurs to handle it. I think it could be done by setting the appropriate priorities for those two threads, but it doesn't work after all, it's not clear for me why. In practice it doesn't handle all of the interrupts so many of them are lost. Since the timer interrupt is the heartbeat of almost all the games, the "time slows down" for the game but it cannot notice it to skip frames. The more the rendering thread has to draw the more interrupts are lost, the more the game slows down to slowmotion (and Blood draws very much triangles).
Huhh, maybe I shouldn't have written this here, but now everybody knows why the slowmotion occures under NT kernel windows. 😀