Here's a proof-of-concept movie at DOSBox recording.
It's merely a live recording, not a re-recorded movie, but it shows that it's possible.
http://bisqwit.iki.fi/kala/sc2-dosbox-demostration-bisqwit.avi.zip (1.2 MB)
Edit: This movie is 640x400 and 70 fps. Playback of it might be heavy and laggy on slow machines...
Edit 2: And thus I rescaled it to a lighter version... 320x200, 70 fps:
http://bisqwit.iki.fi/kala/sc2-dosbox-demostrations1-bisqwit.avi.zip (1.2 MB)
(Yes, what you see is a pirate Star Control 2.)
Here's how I did it. I created this patch for dosbox:
diff -NaHudr dosbox-0.62/src/gui/sdlmain.cpp dosbox-patched/src/gui/sdlmain.cpp
--- dosbox-0.62/src/gui/sdlmain.cpp 2004-09-29 22:14:10.000000000 +0300
+++ dosbox-patched/src/gui/sdlmain.cpp 2004-10-03 13:19:04.649021424 +0300
@@ -1,3 +1,5 @@
+#define NESVIDEOS_LOGGING 1
+
/*
* Copyright (C) 2002-2004 The DOSBox Team
*
@@ -589,6 +591,31 @@
return false;
}
+#if NESVIDEOS_LOGGING /*** VIDEO LOGGING ***/
+#include "avifun.hh"
+int LoggingEnabled=1;
+static class VideoLogging
+{
+ bool first;
+public:
+ VideoLogging(): first(true)
+ {
+ OpenAVI();
+ }
+ ~VideoLogging()
+ {
+ CloseAVI();
+ }
+ void operator() (const void*data, unsigned width,unsigned height)
+ {
+ if(!LoggingEnabled) return;
+
+ SendFrame( (const unsigned char*)data, width, height, first);
+ first=false;
+ }
+} VideoLogging;
+#endif
+
void GFX_EndUpdate(void) {
int ret;
if (!sdl.updating) return;
@@ -598,6 +625,9 @@
if (SDL_MUSTLOCK(sdl.surface)) {
SDL_UnlockSurface(sdl.surface);
}
+#ifdef NESVIDEOS_LOGGING
+ VideoLogging(sdl.surface->pixels, 640,400);
+#endif
SDL_Flip(sdl.surface);
break;
#if defined(HAVE_DDRAW_H) && defined(WIN32)
This patch is identical in concept to the patch to Gens - it references the same files, and the same xpatch-lib.a must be linked in.
Audio was logged using the built-in Ctrl-F6 hotkey.