Common searches

First post, by andwan0

User metadata
Rank Newbie

Hi guys

I have made a Blood recorded demo fixer to fix the bugged user demo recordings (that are recorded using the -map parameter, not spielberg cheat).


Please try it out, test it and give me some feedback. Oh, please don't try this on custom/multiplayer maps. This is intended for official Blood (except expansion) maps which have episode & mission numbers. I'll look into custom maps soon aswell as multiplayer maps.



1. Why would I want to record a demo, even fix my demos? I can use DOSBox recording facility and generate video files and easily upload to youtube...
A. Recording demos is fun and generate small recording files which you can share & others can download very fast. Getting to the point, I have been trying to get Blood speedruns (fastest level completion) entered into http://www.speeddemosarchive.com/ website to help promote Blood. The problem is, we are not allowed to use DOSBox since emulation is not allowed (due to possible hacking, emulation speed up, etc). The only possible way to get around this is to get user demo recordings working. Currently user demo recording is bugged in version 1.00 & 1.11. It seems to be storing e1m9 as the level numbers in user recorded demo files. Level e1m9 doesn't exist since the last mission in episode 1 is 8. My program fixes this by inserting the correct episode & mission numbers.

2. What are demo recording files? Why are they small & convenient to upload/download?

Demo recording files do not store monster movements or triggers. What do they store then? They only store user's keystrokes & timings. So a demo recording file is a long list of keyboard inputs or mouse movements & button presses at specific timing intervals. This is very similar to Doom, Duke Nukem 3D, Quake demo recording files too. When you playback a demo recording file, it just loads the level and plays the game as if you were playing it, but using pre-recorded keystrokes & mouse movements. The games logic & monster AI is deterministic and always stays the same.

3. What/who inspired to the creation of this program?

I got the idea from the Doom & Duke Nukem 3D speedruns that were submitted successfully on SpeedDemosArchive website. Doom & Duke Nukem 3D are older games than Blood, and hence require DOSBox or a source port (Boom, Duke_w32, etc) to run on today's Windows XP/Vista/7 PCs. It seemed it was allowed to record the demos in original MS-DOS Doom (or Duke Nukem 3D), possibly being played on original MS-DOS hardware aswell... and then played back on the source ports that can run on Windows XP/Vista/7 and use FRAPs (screen recorder) to record to youtube video. Just as long as the recorded demo files will play back on original MS-DOS Doom (or Duke Nukem 3D) fine then that is valid for submission.

Pordontae inspired me after I saw his amazing speedruns. Check them out when you have time:

http://www.youtube.com/watch?v=jqR2BZuNOhA&fe … ex=0&playnext=1

4. Blood's sourcecode has never been released and therefore no sourceport for Blood exist. Blood can run natively under Windows XP (maybe with VDMSound for the sound, optional though), however, it runs in a MS-DOS prompt under Windows XP. It is known you cannot video capture MS-DOS prompt windows. How do you propose to video record the playbacks then?
A. You can use OpenGL Glide Wrappers. Blood version 1.20 was a special patched up version which gave you an extra executable file which is 3DFX (3D accelerated) version. Ofcourse, 3DFX died back in 2000 but luckily people have written OpenGL Glide wrappers which just translates the 3DFX video output into OpenGL (something that Windows XP/Vista/7 can understand and display).

There's tones of Glide Wrappers but am using dgVoodoo. Just copy all the dgVoodoo into a Blood 1.20 install folder. Load up MS-DOS command prompt and run dgVesa.com then 3DFX.exe. Ofcourse, run FRAPS before hand if you want to record. FRAPS will pick up the OpenGL screen mode by showing you the FRAPS FPS in the corner of the screen.

5. Okay, I want to record speedruns now! Tell me how it will go?
A. I am hoping that we can record the demos under DOSBox so we can play comfortably with sound. We worry about the playback in native Windows XP/Visa/7 later. Even if SpeedDemosArchive doesn't accept VDMSound (coz that's emulated sound), then I've got a real SB16 that works in Windows XP.

To record a specific level, just type:

blood.exe -record bloodX0Y.dem -map eXmY

(where X is episode, Y is mission number).

Demo recording automatically stops when you quit out or complete the level. Even though you go onto the next level, it won't continue recording. So you must stop and use the above command again for the next level. SpeedDemosArchive prefer all levels starting with default health (100%) & default weapons (pitch fork) anyway.

To playback, use my demo fixer program, then just run blood normally. It will play any files that is named in the following convention "bloodXXX.dem" (starts with 'blood' word, ends with *.dem file extension, and any number for the XXX). Obviously it plays in numerical ascending order, and will play continuously in a loop (playing all bloodXXX.dem files).

To play a specific demo file, type:

blood.exe -playback somefile.dem

Also note the filename length restriction due to the MS-DOS days. The maximum length of the filename (before the *.dem extension) is 8 characters long. That means blood999.dem is probably your highest number allowed. A recommended numbering system for saving your level recordings would be to use bloodEMM.dem where E is the episode number, and MM is the mission number (which never goes over 9 anyways).

Recommended Blood version to use is at least 1.11 or 1.21 (One Whole Unit).

There's actually another way to record levels. Use spielberg cheat and you don't need to use my fixer program. I didn't like this at first because it showed "YOU CHEATED" at the end. But on playback it doesn't show this message.

Last edited by andwan0 on 2009-10-29, 18:38. Edited 1 time in total.

Reply 1 of 4, by leileilol

User metadata
Rank l33t++

I tried a demo of mine recorded in 1.21 in multiplayer, it broke and crashed with actor.cpp. Guess Blood never had good multiplayer demo recordings, probably the reason why the game never initially took off.

long live PCem

Reply 2 of 4, by andwan0

User metadata
Rank Newbie

Can you send me your deathmatch demo for testing? This will also help me recognise 1.21 file types, aswell as how deathmatch level names are stored.

Remember, at current state my demo recording fixer only fixes original Blood official singleplayer levels (minus the expansions & multiplayer levels).

Reply 3 of 4, by Michael1820

User metadata
Rank Newbie
andwan0 wrote on 2009-10-27, 18:38:


Hey Andwano, I've been looking everywhere for your tool and all of the links I've found are dead. Do you have a copy?

(I know long shot replying to a 12 year old post but had to try 😀

Reply 4 of 4, by andwan0

User metadata
Rank Newbie

wow... thanks for replying..
2009!!! 2009!!!!

a lot has changed since then:

and then NightDive's Blood.

I'll try to dig up my old tool but honestly it's not that useful since it doesn't fix multiplayer demos... only singleplayer demos.