First post, by ptrie
There have been discussions on this board in the past about the performance of this game [1]. I recently started playing it for the first time, but have been frustrated by the stutter that occurs every few steps when moving around, even with the "optimal" configuration of a 486 33 plus RAM drive. Thanks to the open source UltimaHacks [2], and the toggleable frame limiter in Serpent Isle, I was able to patch The Black Gate with a similar solution.
Serpent Isle has a loop that waits until 6 firings of a 60 Hz timer have passed before updating the game world, giving a maximum of 10 per second. Thankfully The Black Gate also uses a 60 Hz counter, so it wasn't too difficult to add a similar waiting loop. I'm not confident there are no bugs, but so far I'm happy with it.
I've uploaded a video of walking around the starting area in the game to show the new smooth movement that's possible [3]. It was captured with DOSBox with core=dynamic/cycles=max, but I also got good results with a Pentium in PCem. I turn the frame limiter off at the end of the video so you can see how fast the game would be running without the patch. You can compare the game speed with user Cloudschatze's video taken on a 486 33 with a RAM drive [4].
I've attached a patch file which can be applied with the UltimaHacks Applier website [5] that contains just the frame limiter, always enabled. I have a version that is toggleable and contains all the other UltimaHacks patches on my GitHub fork of the project [6].
[1] Measuring Performance in Ultima VII : The Black Gate The ultimate Ultima 7 machine
[2] https://github.com/JohnGlassmyer/UltimaHacks/
[3] https://youtu.be/rRdBOJPj--8
[4] https://youtu.be/K_YRY-nSI7Q
[5] https://johnglassmyer.github.io/UltimaHacks/
[6] https://github.com/ptrie/UltimaHacks/raw/mast … hacks/u7bg.hack
EDIT: Uploaded version 2 of the patch. Hex edit byte 19Ah to change the delay value (e.g. 06 -> 0A).