Some tidbits I've got so far - all based on UDOOM 1.0.2, but should work on any version I'd imagine. Notably, added some detail to the timedemo exit screen with all the variables that dramatically change performance.
There is a built in FPS counter - seems to be accurate too. Attached is a compiled version with the FPS counter enabled.
Did some real basic tests: level 1, no music, no movement, just seeing how fast it will render the initial view. This is on a SE/30 with an upgraded Diimo clone accelerator and Micron Xceed on external monitor.
Biggest issue with running a timedemo right now is that singletics does not work as expected - it renders a black screen and does nothing - so timedemo doesn't work. Lion moved BuildNewTic() into NetUpdate(), and while it has a case to exit if singletics is set, it does not work.
With some tinkering around, it seems like HSendPacket is required in NetUpdate (hence why black screens on singletics), but I am not sure why that is without looking deeper (and I'm not familiar with Doom).
Pretty sure by doing moving buildnewtic into netupdate rather than calling buildnewtic in TryRunTics, this changes singletic behavior, as NetUpdate() is called multiple times per tic potentially. May need to try to create a new BuildNewTic() function and restore the original Doom function flow.
Code:
Enable FPS counter
I_IBM.c
#define __LION_SHOWFRAMERATE 0 change to 1
Remove splash screen
I_MAIN.C
Comment out else LionSplash()
Timedemo w/ enhanced info (FPS)
G_GAME.c
Change G_CheckDemoStatus as below
extern int detailLevel, viewwidth,gSndSfxVolume;
extern Boolean gMusicOff, gLargeGraphics;
char detailLvl_human[3] = {'L','M','H'};
boolean G_CheckDemoStatus (void)
{
int endtime;
float fps;
if (timingdemo)
{
endtime = I_GetTime ();
fps = ((float)gametic)/(endtime-starttime)*35;
I_Error ("timed %i gametics in %i realtics\n%f FPS\nview width: %d\ndetail: %c\nmusic: %c\nsound: %c",
gametic, endtime-starttime,fps,viewwidth,
detailLvl_human[detailLevel],gMusicOff?'N':'Y',gSndSfxVolume?'Y':'N');
}
Uncomment G_Timedemo in G_GAME.C
In D_MAIN.C, function D_DoomMain
Around line 1330 or so (doesn't really matter)
add:
G_Timedemo("demo1");
D_DoomLoop()