MoSlo is a utility that allows you to slow down the execution speed of a program. You can slow down to 1% of normal speed in 1% increments. For example, if you wanted to run Insanity at 20% of normal speed, launch it with the following command line: moslo /20 insanity.exe
.Why Would I Need MoSlo?
Some of the games in this collection are real-time (as opposed to turn-based). This means that the playing pieces controlled by the computer (called sprites) continue to move whether or not there is any input from the human player.
If the computer moved its sprites at the maximum possible speed, it would be virtually impossible for any human player to win the game. That is because the computer can recalculate a sprite's position many thousands of times per second. The sprites would race across the screen and collide with the player in a fraction of a second, before there was a chance to even press a key.
To solve this problem, game developers needed a way to slow down the normal execution speed of their games. Most modern games do this by keeping track of the system clock, which ticks 18 times per second. So, for example, if you want the sprites to move once per second, you count off 18 ticks of the clock before allowing the computer to move its sprites. This method works no matter how fast the computer runs, because the system clock is always constant.
However, some older games used a loop-delay function to slow things down. This was implemented using a piece of code that looks something like this:
n = 0;
while (n < 10,000) do n = n+1
until (player is caught by sprites)
The underlying assumption here is that it will take the computer one second to count to 10,000. As long as all computers were running at the same speed, this method worked just fine. However, it wasn't long before chip manufacturers started producing computers that ran hundreds, even thousands of times faster than before. On these super-fast computers, a counting operation that used to take a full second now only takes a tiny fraction of a second. As a result, games that rely on the old loop-delay function speed up to the point where they are unplayable.
This is where MoSlo comes in. MoSlo slows down the computer so that it can't race through the loop as quickly. The effect is that the game slows down to the speed originally intended by the developer.
So why were those old game writers so short-sighted? Didn't they know that computers would eventually speed up and render their loop-delay functions useless? Let's cut these guys a little slack. They didn't do any worse than the mainframe programmers who forgot about the year 2000, and besides, most of them were just doing it as a hobby, anyway. The fact that we're willing to slow down our computers to play their games proves that they did something right.UPDATE
: We have discovered that MoSlo can also be used to solve the run time error 200 problem that affects certain games written in Turbo Pascal. For games in this category (such as Monopoly), try running them with MoSlo set to 80% of normal speed.