?? d_main.c
字號:
if (p<myargc-1)
scale = atoi (myargv[p+1]);
if (scale < 10)
scale = 10;
if (scale > 400)
scale = 400;
//printf ("turbo scale: %i%%\n",scale);
forwardmove[0] = forwardmove[0]*scale/100;
forwardmove[1] = forwardmove[1]*scale/100;
sidemove[0] = sidemove[0]*scale/100;
sidemove[1] = sidemove[1]*scale/100;
}
// add any files specified on the command line with -file wadfile
// to the wad list
//
// convenience hack to allow -wart e m to add a wad file
// prepend a tilde to the filename so wadfile will be reloadable
p = M_CheckParm ("-wart");
if (p)
{
myargv[p][4] = 'p'; // big hack, change to -warp
// Map name handling.
switch (gamemode )
{
case shareware:
case retail:
case registered:
sprintf (file,"~"DEVMAPS"E%cM%c.wad",
myargv[p+1][0], myargv[p+2][0]);
// printf("Warping to Episode %s, Map %s.\n",
// myargv[p+1],myargv[p+2]);
sprintf(MsgText, "Warping to Episode %s, Map %s.\n",
myargv[p+1],myargv[p+2]);
WriteDebug(MsgText);
break;
case commercial:
default:
p = atoi (myargv[p+1]);
if (p<10)
sprintf (file,"~"DEVMAPS"cdata/map0%i.wad", p);
else
sprintf (file,"~"DEVMAPS"cdata/map%i.wad", p);
break;
}
D_AddFile (file);
}
p = M_CheckParm ("-file");
if (p)
{
// the parms after p are wadfile/lump names,
// until end of parms or another - preceded parm
modifiedgame = true; // homebrew levels
while (++p != myargc && myargv[p][0] != '-')
D_AddFile (myargv[p]);
}
p = M_CheckParm ("-playdemo");
if (!p)
{
p = M_CheckParm ("-playdemo2");
demotype = DEMO_II;
}
else
{
demotype = DEMO_I;
}
if (!p)
{
p = M_CheckParm ("-timedemo");
demotype = DEMO_I;
}
if (!p)
{
p = M_CheckParm ("-timedemo2");
demotype = DEMO_II;
}
if (p && p < myargc-1)
{
if (demotype == DEMO_I)
{
sprintf (file,"%s.lmp", myargv[p+1]);
D_AddFile (file);
//printf("Playing demo %s.lmp.\n",myargv[p+1]);
sprintf(MsgText, "Playing demo %s.lmp.\n",myargv[p+1]);
WriteDebug(MsgText);
}
else
{
sprintf(MsgText, "Playing demo II %s.dem.\n",myargv[p+1]);
WriteDebug(MsgText);
}
}
// get skill / episode / map from parms
startskill = sk_medium;
startepisode = 1;
startmap = 1;
autostart = false;
p = M_CheckParm ("-skill");
if (p && p < myargc-1)
{
startskill = myargv[p+1][0]-'1';
autostart = true;
}
p = M_CheckParm ("-episode");
if (p && p < myargc-1)
{
startepisode = myargv[p+1][0]-'0';
startmap = 1;
autostart = true;
}
p = M_CheckParm ("-timer");
if (p && p < myargc-1 && deathmatch)
{
int time;
time = atoi(myargv[p+1]);
// Change over to buffered output...
//printf("Levels will end after %d minute",time);
sprintf(MsgText, "Levels will end after %d minute",time);
if (time>1)
strcat(MsgText, "s");
//printf("s");
strcat(MsgText, ".\n");
//printf(".\n");
WriteDebug(MsgText);
}
p = M_CheckParm ("-avg");
if (p && p < myargc-1 && deathmatch)
WriteDebug("Austin Virtual Gaming: Levels will end after 20 minutes\n");
p = M_CheckParm ("-warp");
if (p && p < myargc-1)
{
if (gamemode == commercial)
startmap = atoi (myargv[p+1]);
else
{
startepisode = myargv[p+1][0]-'0';
startmap = myargv[p+2][0]-'0';
}
autostart = true;
}
// init subsystems
//printf ("V_Init: allocate screens.\n");
WriteDebug("V_Init: allocate screens.\n");
V_Init ();
//printf ("M_LoadDefaults: Load system defaults.\n");
WriteDebug("M_LoadDefaults: Load system defaults.\n");
M_LoadDefaults (); // load before initing other systems
//printf ("Z_Init: Init zone memory allocation daemon. \n");
WriteDebug("Z_Init: Init zone memory allocation daemon. \n");
Z_Init ();
//printf ("W_Init: Init WADfiles.\n");
WriteDebug("W_Init: Init WADfiles.\n");
W_InitMultipleFiles (wadfiles);
if ((gamemode == retail) || (gamemode == registered))
{
char name[10][8] = { "e4m1","e4m2","e4m3","e4m4","e4m5","e4m6","e4m7","e4m8","e4m9", "m_epi4" };
int i;
WriteDebug("Checking for Ultimate Doom...\n");
gamemode = retail;
for (i = 0;i < 10; i++)
{
if (W_CheckNumForName(name[i]) < 0)
{
gamemode = registered;
break;
}
}
if (gamemode == registered)
WriteDebug("Normal Doom WAD file...\n");
else
WriteDebug("Ultimate Doom WAD - fourth episode enabled...\n");
}
switch ( gamemode )
{
case retail:
sprintf (title,
" "
"The Ultimate DOOM Startup v%i.%i"
" ",
VERSION/100,VERSION%100);
break;
case shareware:
sprintf (title,
" "
"DOOM Shareware Startup v%i.%i"
" ",
VERSION/100,VERSION%100);
break;
case registered:
sprintf (title,
" "
"DOOM Registered Startup v%i.%i"
" ",
VERSION/100,VERSION%100);
break;
case commercial:
if (plutonia == TRUE)
sprintf (title, " DOOM 2: Plutonia Experiment v%i.%i ", VERSION/100,VERSION%100);
else
if (tnt == TRUE)
sprintf (title, " DOOM 2: TNT - Evilution v%i.%i ", VERSION/100,VERSION%100);
else
sprintf (title, " DOOM 2: Hell on Earth v%i.%i ", VERSION/100,VERSION%100);
break;
default:
sprintf (title,
" "
"Public DOOM - v%i.%i"
" ",
VERSION/100,VERSION%100);
break;
}
//printf ("%s\n",title);
WriteDebug(title);
WriteDebug("\n");
// Check for -file in shareware
if (modifiedgame)
{
// These are the lumps that will be checked in IWAD,
// if any one is not present, execution will be aborted.
char name[23][8]=
{
"e2m1","e2m2","e2m3","e2m4","e2m5","e2m6","e2m7","e2m8","e2m9",
"e3m1","e3m3","e3m3","e3m4","e3m5","e3m6","e3m7","e3m8","e3m9",
"dphoof","bfgga0","heada1","cybra1","spida1d1"
};
int i;
if ( gamemode == shareware)
I_Error("\nYou cannot -file with the shareware "
"version. Register!");
// Check for fake IWAD with right name,
// but w/o all the lumps of the registered version.
if (gamemode == registered)
for (i = 0;i < 23; i++)
if (W_CheckNumForName(name[i])<0)
I_Error("\nThis is not the registered version.");
}
// If additonal PWAD files are used, print modified banner
if (modifiedgame)
{
//printf (
WriteDebug("===========================================================================\n");
WriteDebug("ATTENTION: This version of DOOM has been modified. If you would like to\n");
WriteDebug("get a copy of the original game, call 1-800-IDGAMES or see the readme file.\n");
WriteDebug(" You will not receive technical support for modified games.\n");
//WriteDebug(" press enter to continue\n");
WriteDebug("===========================================================================\n");
// );
//getchar ();
}
// Check and print which version is executed.
switch ( gamemode )
{
case shareware:
case indetermined:
//printf (
WriteDebug("===========================================================================\n");
WriteDebug(" Shareware!\n");
WriteDebug("===========================================================================\n");
//);
break;
case registered:
case retail:
case commercial:
//printf (
WriteDebug("===========================================================================\n");
WriteDebug(" Commercial product - do not distribute!\n");
WriteDebug(" Please report software piracy to the SPA: 1-800-388-PIR8\n");
WriteDebug("===========================================================================\n");
//);
break;
default:
// Ouch.
break;
}
//printf ("M_Init: Init miscellaneous info.\n");
WriteDebug("M_Init: Init miscellaneous info.\n");
M_Init ();
//printf ("R_Init: Init DOOM refresh daemon - ");
WriteDebug("R_Init: Init DOOM refresh daemon - ");
R_Init ();
//printf ("\nP_Init: Init Playloop state.\n");
WriteDebug("\nP_Init: Init Playloop state.\n");
P_Init ();
//printf ("I_Init: Setting up machine state.\n");
WriteDebug("I_Init: Setting up machine state.\n");
I_Init ();
//printf ("D_CheckNetGame: Checking network game status.\n");
WriteDebug("D_CheckNetGame: Checking network game status.\n");
D_CheckNetGame ();
//printf ("S_Init: Setting up sound.\n");
WriteDebug("S_Init: Setting up sound.\n");
//S_Init (snd_SfxVolume*8, snd_MusicVolume*8 );
S_Init (snd_SfxVolume, snd_MusicVolume );
//printf ("HU_Init: Setting up heads up display.\n");
WriteDebug("HU_Init: Setting up heads up display.\n");
HU_Init ();
//printf ("ST_Init: Init status bar.\n");
WriteDebug("ST_Init: Init status bar.\n");
ST_Init ();
//printf ("ST_Init: Init status bar.\n");
WriteDebug("CO_Init: Init console.\n");
CO_Init ();
// check for a driver that wants intermission stats
p = M_CheckParm ("-statcopy");
if (p && p<myargc-1)
{
// for statistics driver
extern void* statcopy;
statcopy = (void*)atoi(myargv[p+1]);
//printf ("External statistics registered.\n");
WriteDebug("External statistics registered.\n");
}
// start the apropriate game based on parms
p = M_CheckParm ("-record");
if (p && p < myargc-1)
{
G_RecordDemo (myargv[p+1]);
autostart = true;
}
p = M_CheckParm ("-playdemo");
if (p && p < myargc-1)
{
singledemo = true; // quit after one demo
G_DeferedPlayDemo (myargv[p+1]);
return;
// D_DoomLoop (); // never returns
}
p = M_CheckParm ("-playdemo2");
if (p && p < myargc-1)
{
singledemo = true; // quit after one demo
if (G_DeferedPlayDemo_II(myargv[p+1]) == true)
return;
else
{
sprintf(MsgText, "DEMO II [%s.dem] - BAD FILE.\n", myargv[p+1]);
WriteDebug(MsgText);
}
// D_DoomLoop (); // never returns
}
p = M_CheckParm ("-timedemo");
if (p && p < myargc-1)
{
WriteDebug("-timedemo\n");
G_TimeDemo (myargv[p+1]);
return;
// D_DoomLoop (); // never returns
}
p = M_CheckParm ("-timedemo2");
if (p && p < myargc-1)
{
WriteDebug("-timedemo2\n");
if (G_TimeDemo_II(myargv[p+1]) == true)
return;
else
{
sprintf(MsgText, "DEMO II [%s.dem] - BAD FILE.\n", myargv[p+1]);
WriteDebug(MsgText);
}
// D_DoomLoop (); // never returns
}
p = M_CheckParm ("-loadgame");
if (p && p < myargc-1)
{
if (M_CheckParm("-cdrom"))
sprintf(file, "c:\\doomdata\\"SAVEGAMENAME"%c.dsg",myargv[p+1][0]);
else
sprintf(file, SAVEGAMENAME"%c.dsg",myargv[p+1][0]);
G_LoadGame (file);
}
if ( gameaction != ga_loadgame )
{
if (autostart || netgame)
G_InitNew (startskill, startepisode, startmap);
else
D_StartTitle (); // start up intro loop
}
// D_DoomLoop (); // never returns
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -