Stiebler ‘Crash-Dive Blues’ Fix.
I have fixed the crash-dive blues.
Code principle is completely trivial:
IF (crash-dive-flag = 0) THEN quick-dive tank = 0.5000.
Of course, it took H.sie and me some time to discover all the key features. I myself wrote over one page of assembly code just to locate the quick-diving tank. Then I found it fixed at [esi+438h], so I could reduce all the code to a few lines!
The fix appears to solve all problems, even though it sets q-d-tank to 0.500 on surface, when value should be 0.000 (sometimes).
This code is also called uselessly every time there is a call to the hydroplanes. However, the code is so compact, that any code to avoid this useless recall would probably be a lot slower!
I've given everything a massive test under all dive conditions that I can think of: crash-dives, interrupted crash-dives by clicking on depth-gauge above and below crash-depth, conventional dives, orders to periscope depth, interrupted crash-dive with order to periscope depth, blowing ballast, resumed crash dives after interruption. *Everything" works well, with full stability at slow underwater speed.
I shall release the code for some bold testers after H.sie has examined it.
@H.sie:
You have a PM.
You need SH3SIm.act only, no need to alter sh3.exe.
Stiebler.
|