Descent and Descent II have a bobbing effect, where your ship moves up and down slightly at all times. For some folks it can contribute to motion sickness, or just be plain annoying, especially as the effect speeds up on faster computers.
A simple hack that replaces a single function call with “no-op” instructions can be applied to the game executable to eliminate the bob effect. I learned about this hack from the Ecstatic Lyrics page, and merely adapted it to different versions of the game. For each version I tested, the hex offsets that should be modified are shown in the tables below.
Descent
Version | Size (bytes) | Offset | Modification |
Shareware 1.4 | 1,053,605 | 0x95C70 | E8 A9 58 02 00 → 90 90 90 90 90 |
Registered 1.4a | 1,101,785 | 0x9D570 | E8 A1 D6 02 00 → 90 90 90 90 90 |
Registered 1.5 | 1,132,633 | 0x9FC40 | E8 E1 DC 02 00 → 90 90 90 90 90 |
Descent II
Version | Size (bytes) | Offset | Modification |
1.0 Demo | 1,297,237 | 0xB0133 | E8 56 66 03 90 → 90 90 90 90 90 |
1.1 | 1,484,297 | 0xC724E | E8 37 E5 03 00 → 90 90 90 90 90 |
1.2 | 1,507,821 | 0xC9BBE | E8 F7 04 04 00 → 90 90 90 90 90 |
1.2 Vertigo | 1,507,793 | 0xC9C0E | E8 47 06 04 00 → 90 90 90 90 90 |
1.2 Vérité | 1,452,153 | 0xA2EDA | E8 37 3B 04 00 → 90 90 90 90 90 |
1.2 3dfx 1.06b | 1,374,737 | 0x9B4EE | E8 F3 1C 04 00 → 90 90 90 90 90 |
General Technique
The “call” instruction (E8) supplies a 4-byte function address, which is different in every version of the program, therefore you cannot count on the sequence replaced being the same. Fortunately, the context surrounding the call is sufficiently large and unique, and can be located by a simple hex search, without disassembly or stepping through with a debugger.
In all of the above program versions, it is enough to locate the following sequence: 5E F7 EA 0F AC D0 10 89 C1 E8, which appears exactly once in the file. The E8 at the end of the sequence marks the call that needs to be skipped, so this byte and the four bytes following it should be replaced with no-op instructions (90) to remove ship bobbing.
I trust that the same will hold for most other versions of Descent and Descent II, but I do not have them to test. One exception is D2VOODOO.EXE, where the above sequence could not be located.