First post, by clueless1
- Rank
- l33t
Guys, I've come up with a way to measure performance in U7. This game is famously missing any sort of frame limiting. Various discussions here and on nerdlypleasures.blogspot.com have talked about this. The consensus is that the perfect speed for this game is a 486/33, with the game quickly becoming unplayably fast as you approach 486/66 speeds and higher. So this is a way for you to dial in the "perfect" speed if you're lucky enough to have an MS-DOS system with the ability to adjust speeds without disabling L1 cache (or if you're playing in DOSBox and adjusting cycles). You see, another thing U7 is famous for is being immune to disabling L1 cache. Somehow it's able to re-enable L1 as you start the game. I've found that U7 is NOT immune to L2, turbo, and manipulating Test Registers via Setmul (if you have a Pentium that supports these test registers, which I do 😎 ).
The premise around this idea is that there are at least a couple of constants in this game that can be measured with a stopwatch. These include the pacing guards in the towers of the opening scene, the waving flags at the guard towers, and the clock ticking sounds, which all speed up and slow down depending on system speed. I found that the pacing guard is the easiest to measure with accuracy. I will demonstrate with a YT video in a bit.
So I tested this on my DX2/66 with and without turbo, as well as downclocking the cpu to DX2/40 and DX2/50 speeds. The units I use are "Seconds per 10 round trips" for the guard pacing, which I convert to "Round Trips per Second". I did this test at numerous speeds with my POD250MMX, using the Test Registers, as well as the aforementioned real 486 speeds. In the chart below, the Test Register switches I use are in the "Setmul/Cache" column. While I don't have a real 486/33, I did come close with my DX2/40 by using a 20Mhz bus speed on my 486 motherboard. I'm hoping others here can duplicate my tests on their systems, and someone with a DX/33 might be able to confirm my estimate of the "perfect speed".
One other thing I did, which you can help me fine-tune, is estimated a real 486/33 based on the results I got at 66Mhz and 40Mhz. I made the assumption that at the "perfect" speed of 486/33, the framerate is a "perfect" 24 FPS. With these assumptions, I came up with a factor of 115, which when multiplied by Round Trips per Second, gives an accurate-looking framerate. Here's some results:
Here's how I measure. Start a new game, click through the dialogs, then use the keyboard and right-arrow over towards the guard tower. As soon as you take the first step under the tower (the waving flags will disappear), take one step back to the left. Save the game here to make it easier to get back to this point. This is the position I always measure from to try and keep as much consistency as possible. Using a stopwatch, keep an eye on the pacing guard. When he's at the bottom and turns around, start timing as soon as he reaches the top. From there, just count 10 round trips of his pacing, then stop timing when he reaches the top the 10th time. Divide this result by 10 to get "Round Trips per Second". Then multiply by 115 to get an estimated FPS.
There are some variables that can't be controlled, such as the guy in blue and the dog wandering around, but after taking a bunch of results I can conclude that the results are VERY consistent.
Here's a video of me demonstrating in DOSBox:
Sorry for the quality. This is my first ever attempt at making and posting something like this. I know the video is blurry, but my source is very crisp. I can only assume that YT compressed the crap out of it. I used the Portable Apps version of an open source screen recorder called CamStudio (apparently the portable version is the only one not injected with adware, plus it works in WinXP, which I'm doing this on).
This is done in DOSBox for two reasons:
1) easier to record than on a real DOS machine
2) I can adjust cycles to demonstrate "dialing in" 486/33 speeds.
By default, my GOG version of U7 was set to 14000 cycles. As I measure, it plays at about 37 FPS. When I walk around, it does seem a bit too fast, but not unplayable, so 37 sounds close. If I slow down to 9000 cycles, I get my target 24 FPS. I demonstrate all this in the video above.
What do you guys think? Would anyone with a 486/33 care to try this and see if it takes about 47 seconds to complete 10 round trips? Assuming this is pretty consistent, does labeling this at 24 FPS sound accurate?
The more I learn, the more I realize how much I don't know.
OPL3 FM vs. Roland MT-32 vs. General MIDI DOS Game Comparison
Let's benchmark our systems with cache disabled
DOS PCI Graphics Card Benchmarks