First post, by Bisqwit
Hi, for the past few weeks I have been developing tool-assisted speedrun creating support for DOSBox.
Background information: Tool-assisted speedruns (TAS) are movies of games completed incredibly fast, and the end product is a movie that only contains a stream of input and is supposed to be the only thing (along with the game and the emulator) that is needed to playback the the movie. The game will run at normal speed, and experience very precise input, crafted by utilizing savestates and emulation speed variations to compensate for shortcomings in human reflexes and in the ability to predict the future.
My site, http://tasvideos.org/ , collects hundreds of this kind of movies.
The aspects it requires from an emulator are listed here, and features desired by the players are listed here.
So, I have started developing support for that in DOSBox.
Since the news of that haven't yet seemed to reach these forums, I decided to post myself.
Here's a link to the discussion of it on tasvideos:
http://tasvideos.org/forum/t/5285
(includes some instructions regarding its use).
Here's a link to the latest source code patch (it patches dosbox-0.70 into dosbox-rerecording-alpha5):
http://bisqwit.iki.fi/src/patch-dosbox-0.70-r … rding-alpha5.gz
I have already created one tool-assisted speedrun movie as proof-of-concept using this patch.
Here is link to my Star Control II speedrun (completion time is 35:03): http://tasvideos.org/1493S.html
It includes an AVI as a BitTorrent download (link is on that page).
The code is yet incomplete. As others have explained on this forum (dosbox) countless times, adding savestate support to DOSBox is anything but easy. There is a lot of data saved in a myriad of different structures, containing pointers to functions among other things.
So far, I have went where the fence is the lowest, and I did the absolute minimum to make Star Control II TAS'able. However, I have recently added support for things like protected mode, and it is my next goal to make Descent also TASable. So far it isn't; frequently, it just crashes right after loading a savestate.
Last thing: This is NOT an april fools post.
So why I post this? It's because I hope that the code I wrote, could work as a basis for adding a real, refined savestate support in Dosbox. At the very least, it would be nice to avoid branching dosbox, as has already happened with snes9x and visualboyadvance.
I can answer questions regarding the patch, should anyone wonder what the various things in it do and exist for.