First post, by p404
I've found a way to get WC1 to run at the right speed regardless of how fast the emulated CPU is running at or how many enemies are in the area.
The back story: I had some retro hardware, including a machine that ran WC too fast. The video card died, so I put in a very old ISA one… and WC ran at the right speed. It turns out CPU speed alone isn't the only factor in the game running right.
Unfortunately, DOSBox doesn't let you adjust video card timing… but DOSBox-X does. The setting vmemdelay changes the VGA memory I/O delay in nanoseconds. Set it to:
vmemdelay = 6000
With this enabled, combat in the game runs at the right speed regardless of what the emulated CPU speed is - even with cycles = max set.
Unfortunately, there are a few drawbacks. All the cutscenes run very slowly. This is especially annoying during the unskippable ones, like going between waypoints. And viewing your ship externally with F5 (say while you're going through an asteroid field) is also slow.
It's not a perfect solution, but it definitely fixes the combat speed issue. No more cycling the CPU cycles up and down. It works on WC1 and SM1.
This has been a bug bear of mine for many, many years. I've never found an answer to it until now. And maybe someone more technically minded can figure out how to get the remaining slowness fixed as well.
Hopefully others find this useful.