Enable demos (but they don't match the version)

This commit is contained in:
Lephenixnoir 2021-09-13 20:17:57 +02:00
parent 4214b687b5
commit 808e450ed3
Signed by: Lephenixnoir
GPG Key ID: 1BBA026E13FC0495
5 changed files with 59 additions and 14 deletions

View File

@ -343,9 +343,9 @@ void D_DoAdvanceDemo (void)
gameaction = ga_nothing;
if ( gamemode == retail )
demosequence = (demosequence+1)%3;
demosequence = (demosequence+1)%4;
else
demosequence = (demosequence+1)%2;
demosequence = (demosequence+1)%3;
switch (demosequence)
{
@ -358,11 +358,14 @@ void D_DoAdvanceDemo (void)
pagename = "TITLEPIC";
break;
case 1:
G_DeferedPlayDemo ("demo1");
break;
case 2:
pagetic = 200;
gamestate = GS_DEMOSCREEN;
pagename = "CREDIT";
break;
case 2:
case 3:
gamestate = GS_DEMOSCREEN;
if ( gamemode == commercial)
{

View File

@ -31,7 +31,7 @@
// Global parameters/defines.
//
// DOOM version
#define VERSION 110;
#define VERSION 110
// Game mode handling - identify IWAD version

View File

@ -81,7 +81,7 @@ extern int gamemap;
extern boolean respawnmonsters;
// Netgame? Only true if >1 player.
extern const boolean netgame;
extern boolean netgame;
// Flag: true only if started as net deathmatch.
// An enum might handle altdeath/cooperative better.
@ -147,7 +147,7 @@ extern int scaledviewwidth;
extern int viewangleoffset;
// Player taking events, and displaying.
extern const int consoleplayer;
extern int consoleplayer;
extern int displayplayer;
@ -234,7 +234,7 @@ extern const int maxammo[NUMAMMO];
//extern FILE* debugfile;
// if true, load all graphics at level load
extern const boolean precache;
extern boolean precache;
// wipegamestate can be set to -1

View File

@ -82,6 +82,7 @@ void G_DoReborn (void);
void G_DoLoadLevel (void);
void G_DoNewGame (void);
void G_DoLoadGame (void);
void G_DoPlayDemo (void);
void G_DoCompleted (void);
void G_DoVictory (void);
void G_DoWorldDone (void);
@ -108,24 +109,25 @@ int starttime; // for comparative timing purposes
boolean viewactive;
boolean deathmatch; // only if started as net death
const boolean netgame = 0; // only true if packets are broadcast
boolean netgame = 0; // only true if packets are broadcast
boolean playeringame[MAXPLAYERS];
player_t players[MAXPLAYERS];
const int consoleplayer = 0; // player taking events and displaying
int consoleplayer = 0; // player taking events and displaying
int displayplayer; // view being displayed
int gametic;
int levelstarttic; // gametic at level start
int totalkills, totalitems, totalsecret; // for intermission
//char demoname[32];
const boolean netdemo = 0;
boolean demoplayback;
boolean netdemo = 0;
byte* demobuffer;
byte* demo_p;
byte* demoend;
boolean singledemo; // quit after playing a demo from cmdline
const boolean precache = false; // if true, load all graphics at start
boolean precache = false; // if true, load all graphics at start
wbstartstruct_t wminfo; // parms for world map / intermission
@ -459,7 +461,7 @@ void G_Ticker (void)
G_DoSaveGame ();
break;
case ga_playdemo:
/* CGDoom: Main menu demo is disabled (code removed) */
G_DoPlayDemo ();
break;
case ga_completed:
G_DoCompleted ();
@ -1127,6 +1129,46 @@ void G_DeferedPlayDemo (char* name)
gameaction = ga_playdemo;
}
void G_DoPlayDemo (void)
{
skill_t skill;
int i, episode, map;
gameaction = ga_nothing;
demobuffer = demo_p = (byte *)W_CacheLumpNameConst (defdemoname, PU_STATIC);
if ( *demo_p++ != VERSION)
{
// fprintf( stderr, "Demo is from a different game version!\n");
gameaction = ga_nothing;
return;
}
skill = *demo_p++;
episode = *demo_p++;
map = *demo_p++;
deathmatch = *demo_p++;
respawnparm = *demo_p++;
fastparm = *demo_p++;
nomonsters = *demo_p++;
consoleplayer = *demo_p++;
for (i=0 ; i<MAXPLAYERS ; i++)
playeringame[i] = *demo_p++;
if (playeringame[1])
{
netgame = true;
netdemo = true;
}
// don't spend a lot of time in loadlevel
precache = false;
G_InitNew (skill, episode, map);
precache = true;
usergame = false;
demoplayback = true;
}
//
// G_TimeDemo
//

View File

@ -818,8 +818,8 @@ void ST_doPaletteStuff(void)
// slowly fade the berzerk out
bzc = 12 - (plyr->powers[pw_strength]>>6);
if (bzc > cnt)
cnt = bzc;
if (bzc > cnt)
cnt = bzc;
}
if (cnt)