Mission Critical was a 1995 DOS puzzle game, with gameplay similar to Myst, but with a sci-fi setting. It has a special place in my heart, since I played it sitting on my father's lap.
Two years ago I wrote a tool to TAS it and then I kinda forgot about it.
My TAS isn't a traditional frame based TAS, since I didn't know that frame tools existed for DOS. It waits a fixed number of milliseconds between different types of actions (usually between 20 and 100) and has the ability to pause waiting for the screen to match a picture taking during recording. These images can also have sections that are ignored (there's some animations that won't match between runs). It also has control over the mouse. Recording for it isn't the most elegant, since you have to move the mouse using the keyboard, but can take the images it needs to match against later. It's set to run against the GOG game version, since it doesn't have disc swapping. It also requires a special set of mappings from keyboard to DOSbox, but that can be done away with if needed. The mappings are because I needed controls for the TAS, and they conflicted with the controls for the game.
https://github.com/Raptoer/HypeTas is the repository, and includes the input files (.dat files) and the image files it uses.
https://www.youtube.com/watch?v=8Muz4attuQE is an example video running with the tool showing what it's doing in the background.
https://www.youtube.com/watch?v=aqZBM5Dxd3w is currently my best run, at 5:48.50.
https://www.youtube.com/watch?v=BbSNQHGxSbM is a bit of a commentary on it as it runs. This one will especially spoil the game, and it's a darn good game.
Sadly it doesn't use any TAS only tricks, nor any glitches. It just plays it very quick.
For improvement I see a few possible areas
1) Technical improvements to the tool, making the screen checking faster. Currently it takes 17ms to take the image from the game and compare it to the reference image. It checks ~1300 images, so each ms removed could be ~20 seconds off the time.
2) Make the timings tighter. There's fixed timings in a number of places. This increases the chances of the game not registering an input. These add up to about 45 seconds total.
3) Routing improvements. I can't think of any way to do any part faster, or else I would have done it. I've tried sequence breaking in a few places, only for the game to be too smart for that.
4) Random chance. For the combat section there's a bit of RNG that I don't really control.
5) Figuring out how to remove the 2 inexplicable pauses (see commentary)
6) Removing image checks. I think there's places that I use image checks that are unnecessary. Removing these could cause a minor speed up.
Let me know what you guys think!
Thanks,
Pooter