First post, by Tarvis
Hello,
Many know of Descent's famous issues of the game speeding up on fast CPUs, or homing missiles being too good at steering at high FPS.
Attached are some patched EXEs that cap the game's FPS, so you can play the original executables on P2s/P3s etc rather than needing a source port.
This is accomplished by busy looping while the game is running above a target framerate.
This patch has been accomplished by rewriting part of the function calc_frame_time() as can be found in the Descent/Descent 2 source code release MAIN.C, then finding the function in dissasembly of the original EXEs, and applying the same logic changes by modifying instructions.
Descent has a 'minimum frametime' between frames, after which it will simulate the game with the minimum frametime even if the real time between frames was a lot faster. This is the "Game speeds up past 150FPS" problem. Breaking this limit is not a great idea; when the time step becomes too small many math calculations start rounding to 0 due to imprecision of fixed point numbers, and things in the game world just stop moving properly.
Additionally, some behaviors (such as the homing missile turn speed) don't adjust well for lower frametimes. This is a separate problem from the above. While the game makes some attempt to scale homer turning for current framerate, it just doesn't do it in an effective way, and due to the vector math involved there is not an apparent correction for it. Modern source ports solve this problem by simulating homers at a fixed frame rate separate from everything else, but this would take way too much code to cram into an EXE hack.
This patch avoids both problems by making the game busy-loop until the current frametime has surpassed a target frametime that is quite lower than 150Hz. Some parts of the game such as the Credits already take this approach.
The "correct" framerate is pretty ambiguous. Descent 1 at the time of release was lucky to reach 20FPS, when most people had 486es. By the time of Descent 2 on the other hand most people had Pentiums, and D2 runs on those around 40-50 FPS. During the days of Kali people would be playing either game on any number of CPUs, some faster than those.
So, the patch should allow for some choice.
Right now these are just hex edited EXEs, I can work on a more generic patcher that will let you choose a target FPS.
The D2 patches also include Cloaked Thargoid's No-CD modification.
Included are 30FPS and 40FPS versions for Descent 1, and 40FPS and 60FPS versions for Descent 2.
30FPS is what the current multiplayer community has decided on for its homing missile speed, I believe, while 40 offers a decent amount of extra responsiveness at the cost of homing missiles being a bit tougher.
EDIT: 60FPS versions added for Descent 2.
Included patches for:
Descent 1 V1.5
Descent 2 V1.2
Descent 2 V1.2 With Vertigo
Descent 2 Win95
If you have a preferred OEM/video card version you would like to be patched you will have to send it to me and I can adapt the patch for you.