void TEST_Init (void) { Com_SetExceptionCallback(Test_InitError); com_aliasSysPool = Mem_CreatePool("Common: Alias system"); com_cmdSysPool = Mem_CreatePool("Common: Command system"); com_cmodelSysPool = Mem_CreatePool("Common: Collision model"); com_cvarSysPool = Mem_CreatePool("Common: Cvar system"); com_fileSysPool = Mem_CreatePool("Common: File system"); com_genericPool = Mem_CreatePool("Generic"); Mem_Init(); Cbuf_Init(); Cmd_Init(); Cvar_Init(); FS_InitFilesystem(qtrue); FS_AddGameDirectory("./unittest", qfalse); Swap_Init(); SV_Init(); NET_Init(); FS_ExecAutoexec(); OBJZERO(csi); Com_SetExceptionCallback(Test_RunError); http_timeout = Cvar_Get("noname", "", 0, NULL); http_proxy = Cvar_Get("noname", "", 0, NULL); }
void TEST_Init (void) { try { com_aliasSysPool = Mem_CreatePool("Common: Alias system"); com_cmdSysPool = Mem_CreatePool("Common: Command system"); com_cmodelSysPool = Mem_CreatePool("Common: Collision model"); com_cvarSysPool = Mem_CreatePool("Common: Cvar system"); com_fileSysPool = Mem_CreatePool("Common: File system"); com_genericPool = Mem_CreatePool("Generic"); Mem_Init(); Cbuf_Init(); Cmd_Init(); Cvar_Init(); FS_InitFilesystem(true); FS_AddGameDirectory("./unittest", false); FS_AddHomeAsGameDirectory("unittest", true); Swap_Init(); SV_Init(); NET_Init(); FS_ExecAutoexec(); OBJZERO(csi); } catch (comDrop_t const&) { Sys_Error("Error during initialization"); } http_timeout = Cvar_Get("noname"); http_proxy = Cvar_Get("noname"); hwclass = Cvar_Get("hwclass", "5"); }
/* ==================== Host_Init ==================== */ void Host_Init (quakeparms_t *parms) { if (standard_quake) minimum_memory = MINIMUM_MEMORY; else minimum_memory = MINIMUM_MEMORY_LEVELPAK; if (COM_CheckParm ("-minmemory")) parms->memsize = minimum_memory; host_parms = *parms; if (parms->memsize < minimum_memory) Sys_Error ("Only %4.1f megs of memory available, can't execute game", parms->memsize / (float)0x100000); com_argc = parms->argc; com_argv = parms->argv; // JPG 3.00 - moved this here #ifdef _WIN32 srand(time(NULL) ^ _getpid()); #else srand(time(NULL) ^ getpid()); #endif Memory_Init (parms->membase, parms->memsize); Cbuf_Init (); Cmd_Init (); Cvar_Init (); COM_Init (parms->basedir); Host_InitLocal (); W_LoadWadFile ("gfx.wad"); Con_Init (); PR_Init (); Mod_Init (); Security_Init (); // JPG 3.20 - cheat free NET_Init (); SV_Init (); IPLog_Init (); // JPG 1.05 - ip address logging BANLog_Init (); Con_Printf ("Exe: "__TIME__" "__DATE__"\n"); Con_Printf ("%4.1f megabyte heap\n",parms->memsize/ (1024*1024.0)); R_InitTextures (); // needed even for dedicated servers Cbuf_InsertText ("exec autoexec.cfg;exec server.cfg;stuffcmds;startdemos\n"); Hunk_AllocName (0, "-HOST_HUNKLEVEL-"); host_hunklevel = Hunk_LowMark (); host_initialized = true; Sys_Printf ("========Quake Initialized========\n"); }
/* * Test_Init * * Bootstraps core subsystems for testing. */ void Test_Init(int argc, char **argv) { memset(&quake2world, 0, sizeof(quake2world)); signal(SIGHUP, Sys_Signal); signal(SIGINT, Sys_Signal); signal(SIGQUIT, Sys_Signal); signal(SIGILL, Sys_Signal); signal(SIGABRT, Sys_Signal); signal(SIGFPE, Sys_Signal); signal(SIGSEGV, Sys_Signal); signal(SIGTERM, Sys_Signal); Z_Init(); Swap_Init(); Cvar_Init(); }
/* * Qcommon_Init */ void Qcommon_Init( int argc, char **argv ) { if( setjmp( abortframe ) ) Sys_Error( "Error during initialization: %s", com_errormsg ); QThreads_Init(); com_print_mutex = QMutex_Create(); // initialize memory manager Memory_Init(); // prepare enough of the subsystems to handle // cvar and command buffer management COM_InitArgv( argc, argv ); Cbuf_Init(); // initialize cmd/cvar/dynvar tries Cmd_PreInit(); Cvar_PreInit(); Dynvar_PreInit(); // create basic commands and cvars Cmd_Init(); Cvar_Init(); Dynvar_Init(); dynvars_initialized = qtrue; wswcurl_init(); Key_Init(); // we need to add the early commands twice, because // a basepath or cdpath needs to be set before execing // config files, but we want other parms to override // the settings of the config files Cbuf_AddEarlyCommands( qfalse ); Cbuf_Execute(); // wsw : aiwa : create dynvars (needs to be completed before .cfg scripts are executed) Dynvar_Create( "sys_uptime", qtrue, Com_Sys_Uptime_f, DYNVAR_READONLY ); Dynvar_Create( "frametick", qfalse, DYNVAR_WRITEONLY, DYNVAR_READONLY ); Dynvar_Create( "quit", qfalse, DYNVAR_WRITEONLY, DYNVAR_READONLY ); Dynvar_Create( "irc_connected", qfalse, Irc_GetConnected_f, Irc_SetConnected_f ); Sys_InitDynvars(); CL_InitDynvars(); #ifdef TV_SERVER_ONLY tv_server = Cvar_Get( "tv_server", "1", CVAR_NOSET ); Cvar_ForceSet( "tv_server", "1" ); #else tv_server = Cvar_Get( "tv_server", "0", CVAR_NOSET ); #endif #ifdef DEDICATED_ONLY dedicated = Cvar_Get( "dedicated", "1", CVAR_NOSET ); Cvar_ForceSet( "dedicated", "1" ); #else dedicated = Cvar_Get( "dedicated", "0", CVAR_NOSET ); #endif #ifdef MATCHMAKER mm_server = Cvar_Get( "mm_server", "1", CVAR_READONLY ); Cvar_ForceSet( "mm_server", "1" ); #else mm_server = Cvar_Get( "mm_server", "0", CVAR_READONLY ); #endif FS_Init(); Cbuf_AddText( "exec default.cfg\n" ); if( !dedicated->integer ) { Cbuf_AddText( "exec config.cfg\n" ); Cbuf_AddText( "exec autoexec.cfg\n" ); } else if( mm_server->integer ) { Cbuf_AddText( "exec mmaker_autoexec.cfg\n" ); } else if( tv_server->integer ) { Cbuf_AddText( "exec tvserver_autoexec.cfg\n" ); } else { Cbuf_AddText( "exec dedicated_autoexec.cfg\n" ); } Cbuf_AddEarlyCommands( qtrue ); Cbuf_Execute(); // // init commands and vars // Memory_InitCommands(); Qcommon_InitCommands(); host_speeds = Cvar_Get( "host_speeds", "0", 0 ); log_stats = Cvar_Get( "log_stats", "0", 0 ); developer = Cvar_Get( "developer", "0", 0 ); timescale = Cvar_Get( "timescale", "1.0", CVAR_CHEAT ); fixedtime = Cvar_Get( "fixedtime", "0", CVAR_CHEAT ); if( tv_server->integer ) logconsole = Cvar_Get( "logconsole", "tvconsole.log", CVAR_ARCHIVE ); else if( dedicated->integer ) logconsole = Cvar_Get( "logconsole", "wswconsole.log", CVAR_ARCHIVE ); else logconsole = Cvar_Get( "logconsole", "", CVAR_ARCHIVE ); logconsole_append = Cvar_Get( "logconsole_append", "1", CVAR_ARCHIVE ); logconsole_flush = Cvar_Get( "logconsole_flush", "0", CVAR_ARCHIVE ); logconsole_timestamp = Cvar_Get( "logconsole_timestamp", "0", CVAR_ARCHIVE ); com_showtrace = Cvar_Get( "com_showtrace", "0", 0 ); com_introPlayed3 = Cvar_Get( "com_introPlayed3", "0", CVAR_ARCHIVE ); Cvar_Get( "irc_server", "irc.quakenet.org", CVAR_ARCHIVE ); Cvar_Get( "irc_port", "6667", CVAR_ARCHIVE ); Cvar_Get( "irc_nick", APPLICATION "Player", CVAR_ARCHIVE ); Cvar_Get( "irc_user", APPLICATION "User", CVAR_ARCHIVE ); Cvar_Get( "irc_password", "", CVAR_ARCHIVE ); Cvar_Get( "gamename", APPLICATION, CVAR_READONLY ); versioncvar = Cvar_Get( "version", APP_VERSION_STR " " CPUSTRING " " __DATE__ " " BUILDSTRING, CVAR_SERVERINFO|CVAR_READONLY ); revisioncvar = Cvar_Get( "revision", SVN_RevString(), CVAR_READONLY ); Sys_Init(); NET_Init(); Netchan_Init(); CM_Init(); Steam_LoadLibrary(); Com_ScriptModule_Init(); MM_Init(); SV_Init(); CL_Init(); SCR_EndLoadingPlaque(); if( !dedicated->integer ) { Cbuf_AddText( "exec stuffcmds.cfg\n" ); } else if( mm_server->integer ) { Cbuf_AddText( "exec mmaker_stuffcmds.cfg\n" ); } else if( tv_server->integer ) { Cbuf_AddText( "exec tvserver_stuffcmds.cfg\n" ); } else { Cbuf_AddText( "exec dedicated_stuffcmds.cfg\n" ); } // add + commands from command line if( !Cbuf_AddLateCommands() ) { // if the user didn't give any commands, run default action if( !dedicated->integer ) { // only play the introduction sequence once if( !com_introPlayed3->integer ) { Cvar_ForceSet( com_introPlayed3->name, "1" ); #if !defined(__MACOSX__) && !defined(__ANDROID__) Cbuf_AddText( "cinematic intro.roq\n" ); #endif } } } else { // the user asked for something explicit // so drop the loading plaque SCR_EndLoadingPlaque(); } Com_Printf( "\n====== %s Initialized ======\n", APPLICATION ); Cbuf_Execute(); }
/* ==================== Host_Init ==================== */ void Host_Init (void) { if (standard_quake) minimum_memory = MINIMUM_MEMORY; else minimum_memory = MINIMUM_MEMORY_LEVELPAK; if (COM_CheckParm ("-minmemory")) host_parms->memsize = minimum_memory; if (host_parms->memsize < minimum_memory) Sys_Error ("Only %4.1f megs of memory available, can't execute game", host_parms->memsize / (float)0x100000); com_argc = host_parms->argc; com_argv = host_parms->argv; Memory_Init (host_parms->membase, host_parms->memsize); Cbuf_Init (); Cmd_Init (); LOG_Init (host_parms); Cvar_Init (); //johnfitz COM_Init (); COM_InitFilesystem (); Host_InitLocal (); W_LoadWadFile (); //johnfitz -- filename is now hard-coded for honesty if (cls.state != ca_dedicated) { Key_Init (); Con_Init (); } PR_Init (); Mod_Init (); NET_Init (); SV_Init (); Con_Printf ("Exe: "__TIME__" "__DATE__"\n"); Con_Printf ("%4.1f megabyte heap\n", host_parms->memsize/ (1024*1024.0)); if (cls.state != ca_dedicated) { host_colormap = (byte *)COM_LoadHunkFile ("gfx/colormap.lmp", NULL); if (!host_colormap) Sys_Error ("Couldn't load gfx/colormap.lmp"); V_Init (); Chase_Init (); M_Init (); ExtraMaps_Init (); //johnfitz Modlist_Init (); //johnfitz DemoList_Init (); //ericw VID_Init (); IN_Init (); TexMgr_Init (); //johnfitz Draw_Init (); SCR_Init (); R_Init (); S_Init (); CDAudio_Init (); BGM_Init(); Sbar_Init (); CL_Init (); } Hunk_AllocName (0, "-HOST_HUNKLEVEL-"); host_hunklevel = Hunk_LowMark (); host_initialized = true; Con_Printf ("\n========= Quake Initialized =========\n\n"); if (cls.state != ca_dedicated) { Cbuf_InsertText ("exec quake.rc\n"); // johnfitz -- in case the vid mode was locked during vid_init, we can unlock it now. // note: two leading newlines because the command buffer swallows one of them. Cbuf_AddText ("\n\nvid_unlock\n"); } if (cls.state == ca_dedicated) { Cbuf_AddText ("exec autoexec.cfg\n"); Cbuf_AddText ("stuffcmds"); Cbuf_Execute (); if (!sv.active) Cbuf_AddText ("map start\n"); } }
void Host_Init (int argc, char **argv, int default_memsize) { vfsfile_t *vf; cvar_t *v; char cfg[MAX_PATH] = {0}; int i; char *cfg_name; COM_InitArgv (argc, argv); COM_StoreOriginalCmdline(argc, argv); #ifdef WITH_DP_MEM Memory2_Init (); #endif Host_InitMemory (default_memsize); #ifdef WITH_TCL // interpreter should be initialized // before any cvar definitions TCL_InterpInit (); #endif Cbuf_Init (); Cmd_Init (); Cvar_Init (); COM_Init (); Key_Init (); #ifdef WITH_DP_MEM Memory2_Init_Commands (); #endif Cache_Init_Commands (); FS_InitFilesystem (); NET_Init (); Commands_For_Configs_Init (); ConfigManager_Init(); ResetBinds(); i = COM_CheckParm("+cfg_load"); if (i && (i + 1 < COM_Argc())) { cfg_name = COM_Argv(i + 1); } else { cfg_name = MAIN_CONFIG_FILENAME; } snprintf(cfg, sizeof(cfg), "%s", cfg_name); COM_ForceExtensionEx (cfg, ".cfg", sizeof (cfg)); Cbuf_AddText(va("cfg_load %s\n", cfg)); Cbuf_Execute(); Cbuf_AddEarlyCommands (); Cbuf_Execute (); Con_Init (); NET_InitClient (); Netchan_Init (); #if (!defined WITH_PNG_STATIC || !defined WITH_JPEG_STATIC || defined WITH_MP3_PLAYER) QLib_Init(); #endif Sys_Init (); CM_Init (); PM_Init (); Mod_Init (); SV_Init (); CL_Init (); Cvar_CleanUpTempVars (); SYSINFO_Init(); #ifdef WITH_TCL if (!TCL_InterpLoaded()) Com_Printf_State (PRINT_FAIL, "Could not load "TCL_LIB_NAME", embedded Tcl disabled\n"); #endif Hunk_AllocName (0, "-HOST_HUNKLEVEL-"); host_hunklevel = Hunk_LowMark (); host_initialized = true; // walk through all vars and forse OnChange event if cvar was modified, // also apply that to variables which mirrored in userinfo because of cl_parsefunchars was't applyed as this moment, // same for serverinfo and may be this fix something also. for ( v = NULL; (v = Cvar_Next ( v )); ) { char val[2048]; // if ( !v->modified ) // continue; // not modified even that strange at this moment if ( Cvar_GetFlags( v ) & (CVAR_ROM | CVAR_INIT) ) continue; snprintf(val, sizeof(val), "%s", v->string); Cvar_Set(v, val); } Hud_262LoadOnFirstStart(); Com_Printf_State (PRINT_INFO, "Exe: "__TIME__" "__DATE__"\n"); Com_Printf_State (PRINT_INFO, "Hunk allocation: %4.1f MB.\n", (float) host_memsize / (1024 * 1024)); Com_Printf ("\nezQuake %s\n\n", VersionString()); Com_Printf(Host_PrintBars("ezQuake\x9c" "SourceForge\x9c" "net", 38)); Com_Printf(Host_PrintBars("ezQuake Initialized", 38)); Com_Printf("\n"); Com_Printf ("\nType /help to access the manual.\nUse /describe to learn about commands.\n", VersionString()); if ((vf = FS_OpenVFS("autoexec.cfg", "rb", FS_ANY))) { Cbuf_AddText ("exec autoexec.cfg\n"); VFS_CLOSE(vf); } Cmd_StuffCmds_f (); // process command line arguments Cbuf_AddText ("cl_warncmd 1\n"); #ifdef WIN32 // // Verify that ezQuake is associated with the QW:// protocl handler. // { extern qbool CL_CheckIfQWProtocolHandler(); extern cvar_t cl_verify_qwprotocol; if (cl_verify_qwprotocol.integer >= 2) { // Always register the qw:// protocol. Cbuf_AddText("register_qwurl_protocol\n"); } else if (cl_verify_qwprotocol.integer == 1 && !CL_CheckIfQWProtocolHandler()) { // Check if the running exe is the one associated with the qw:// protocol. Com_PrintVerticalBar(0.8 * vid.conwidth / 8); Com_Printf("\n"); Com_Printf("This ezQuake is not associated with the "); Com_Printf("\x02QW:// protocol.\n"); Com_Printf("Register it using "); Com_Printf("\x02/register_qwurl_protocol\n"); Com_Printf("(set "); Com_Printf("\x02 cl_verify_qwprotocol "); Com_Printf("to 0 to hide this warning)\n"); Com_PrintVerticalBar(0.8 * vid.conwidth / 8); Com_Printf("\n"); } } #endif // WIN32 // Check if a qtv/demo file is specified as the first argument, in that case play that // otherwise, do some more checks of what to show at startup. { char cmd[1024] = {0}; if (COM_CheckArgsForPlayableFiles(cmd, sizeof(cmd))) { Cbuf_AddText(cmd); } else { Startup_Place(); } } #ifdef _WIN32 SetForegroundWindow(mainwindow); SetActiveWindow(mainwindow); #endif host_everything_loaded = true; }
/** * @brief Init function * @sa Com_ParseScripts * @sa Qcommon_Shutdown * @sa Sys_Init * @sa CL_Init */ void Qcommon_Init (int argc, char** argv) { logfile_active = nullptr; developer = nullptr; Sys_InitSignals(); /* random seed */ Com_SetRandomSeed(time(nullptr)); com_aliasSysPool = Mem_CreatePool("Common: Alias system for commands and enums"); com_cmdSysPool = Mem_CreatePool("Common: Command system"); com_cmodelSysPool = Mem_CreatePool("Common: Collision model"); com_cvarSysPool = Mem_CreatePool("Common: Cvar system"); com_fileSysPool = Mem_CreatePool("Common: File system"); com_genericPool = Mem_CreatePool("Generic"); com_networkPool = Mem_CreatePool("Network"); try { OBJZERO(csi); /* prepare enough of the subsystems to handle * cvar and command buffer management */ Com_InitArgv(argc, argv); Swap_Init(); Cbuf_Init(); Cmd_Init(); Cvar_Init(); uploadcrashdump = Cvar_Get("uploadcrashdump", "1", 0, "upload crashdumps to the developers"); Key_Init(); /* we need to add the early commands twice, because * a basedir needs to be set before executing * config files, but we want other parms to override * the settings of the config files */ Cbuf_AddEarlyCommands(false); Cbuf_Execute(); FS_InitFilesystem(true); Cbuf_AddText("exec default.cfg\n"); #ifdef DEDICATED_ONLY Cbuf_AddText("exec dedconfig.cfg\n"); #else Cbuf_AddText("exec config.cfg\n"); #endif Cbuf_AddEarlyCommands(true); Cbuf_Execute(); Com_SetRenderModified(false); Com_SetUserinfoModified(false); /* init commands and vars */ Cmd_AddCommand("saveconfig", Com_WriteConfig_f, "Write the configuration to file"); Cmd_AddCommand("gametypelist", Com_GameTypeList_f, "List all available multiplayer game types"); #ifdef DEBUG Cmd_AddCommand("debug_help", Com_DebugHelp_f, "Show some debugging help"); Cmd_AddCommand("debug_error", Com_DebugError_f, "Just throw a fatal error to test error shutdown procedures"); #endif Cmd_AddCommand("setdeveloper", Com_DeveloperSet_f, "Set the developer cvar to only get the debug output you want"); developer = Cvar_Get("developer", "0", 0, "Activate developer output to logfile and gameconsole"); #ifdef DEBUG logfile_active = Cvar_Get("logfile", "2", 0, "0 = deactivate logfile, 1 = write normal logfile, 2 = flush on every new line, 3 = always append to existing file"); #else logfile_active = Cvar_Get("logfile", "1", 0, "0 = deactivate logfile, 1 = write normal logfile, 2 = flush on every new line, 3 = always append to existing file"); #endif sv_gametype = Cvar_Get("sv_gametype", "fight1on1", CVAR_ARCHIVE | CVAR_SERVERINFO, "Sets the multiplayer gametype - see gametypelist command for a list of all gametypes"); http_proxy = Cvar_Get("http_proxy", "", CVAR_ARCHIVE, "Use this proxy for http transfers"); http_timeout = Cvar_Get("http_timeout", "3", CVAR_ARCHIVE, "Http connection and read timeout"); port = Cvar_Get("port", DOUBLEQUOTE(PORT_SERVER), CVAR_NOSET); masterserver_url = Cvar_Get("masterserver_url", MASTER_SERVER, CVAR_ARCHIVE, "URL of UFO:AI masterserver"); #ifdef DEDICATED_ONLY sv_dedicated = Cvar_Get("sv_dedicated", "1", CVAR_SERVERINFO | CVAR_NOSET, "Is this a dedicated server?"); /* don't allow to override this from commandline of config */ Cvar_ForceSet("sv_dedicated", "1"); #else sv_dedicated = Cvar_Get("sv_dedicated", "0", CVAR_SERVERINFO | CVAR_NOSET, "Is this a dedicated server?"); /* set this to false for client - otherwise Qcommon_Frame would set the initial values to multiplayer */ sv_gametype->modified = false; s_language = Cvar_Get("s_language", "", CVAR_ARCHIVE, "Game language - full language string e.g. en_EN.UTF-8"); s_language->modified = false; cl_maxfps = Cvar_Get("cl_maxfps", "50", CVAR_ARCHIVE); Cvar_SetCheckFunction("cl_maxfps", Com_CvarCheckMaxFPS); #endif // 5 is an i7 with a medium gfx-card // 3 dual core with 2 GB // 2 EeePc with 1 GB // 1 smartphone const char* hwclassVal = "5"; #ifdef __ANDROID__ /** get the hardware class of the machine we are running on. */ hwclassVal = "1"; #endif hwclass = Cvar_Get("hwclass", hwclassVal, 0, "Defines the hardware class of this machine. 1 is the lowest, 5 is the highest."); const char* s = va("UFO: Alien Invasion %s %s %s %s", UFO_VERSION, CPUSTRING, __DATE__, BUILDSTRING); Cvar_Get("version", s, CVAR_NOSET, "Full version string"); Cvar_Get("ver", UFO_VERSION, CVAR_SERVERINFO | CVAR_NOSET, "Version number"); if (sv_dedicated->integer) Cmd_AddCommand("quit", Com_Quit, "Quits the game"); Mem_Init(); Sys_Init(); NET_Init(); #ifndef NO_HTTP curl_global_init(CURL_GLOBAL_NOTHING); Com_Printf("%s initialized.\n", curl_version()); #endif SV_Init(); /* e.g. init the client hunk that is used in script parsing */ CL_Init(); Com_ParseScripts(sv_dedicated->integer); #ifndef DEDICATED_ONLY Cbuf_AddText("exec keys.cfg\n"); #endif if (!sv_dedicated->integer) Cbuf_AddText("init\n"); else Cbuf_AddText("dedicated_start\n"); Cbuf_Execute(); FS_ExecAutoexec(); /* add + commands from command line * if the user didn't give any commands, run default action */ if (Cbuf_AddLateCommands()) { /* the user asked for something explicit * so drop the loading plaque */ SCR_EndLoadingPlaque(); } const cvar_t* com_pipefile = Cvar_Get("com_pipefile", "", CVAR_ARCHIVE, "Filename of the pipe that is used to send commands to the game"); if (com_pipefile->string[0] != '\0') { FS_CreateOpenPipeFile(com_pipefile->string, &pipefile); } CL_InitAfter(); /* Check memory integrity */ Mem_CheckGlobalIntegrity(); #ifndef DEDICATED_ONLY if (!sv_dedicated->integer) { Schedule_Timer(cl_maxfps, &CL_Frame, nullptr, nullptr); Schedule_Timer(Cvar_Get("cl_slowfreq", "10", 0, nullptr), &CL_SlowFrame, nullptr, nullptr); /* now hide the console */ Sys_ShowConsole(false); } #endif Schedule_Timer(Cvar_Get("sv_freq", "10", CVAR_NOSET, nullptr), &SV_Frame, nullptr, nullptr); /** @todo This line wants to be removed */ Schedule_Timer(Cvar_Get("cbuf_freq", "10", 0, nullptr), &Cbuf_Execute_timer, nullptr, nullptr); Com_Printf("====== UFO Initialized ======\n"); Com_Printf("=============================\n"); } catch (comDrop_t const&) { Sys_Error("Error during initialization"); } }
/* ================= Qcommon_Init ================= */ void Qcommon_Init(int argc, char **argv) { if (setjmp(abortframe)) Sys_Error("Error during initialization: %s", com_errorMsg); com_argc = argc; com_argv = argv; Com_SetLastError(NULL); X86_SetFPCW(); // prepare enough of the subsystems to handle // cvar and command buffer management Z_Init(); MSG_Init(); Cbuf_Init(); Cmd_Init(); Cvar_Init(); Key_Init(); Prompt_Init(); Con_Init(); // // init commands and vars // z_perturb = Cvar_Get("z_perturb", "0", 0); #if USE_CLIENT host_speeds = Cvar_Get("host_speeds", "0", 0); #endif #ifdef _DEBUG developer = Cvar_Get("developer", "0", 0); #endif timescale = Cvar_Get("timescale", "1", CVAR_CHEAT); fixedtime = Cvar_Get("fixedtime", "0", CVAR_CHEAT); logfile_enable = Cvar_Get("logfile", "0", 0); logfile_flush = Cvar_Get("logfile_flush", "0", 0); logfile_name = Cvar_Get("logfile_name", "console", 0); logfile_prefix = Cvar_Get("logfile_prefix", "[%Y-%m-%d %H:%M] ", 0); #if USE_CLIENT dedicated = Cvar_Get("dedicated", "0", CVAR_NOSET); cl_running = Cvar_Get("cl_running", "0", CVAR_ROM); cl_paused = Cvar_Get("cl_paused", "0", CVAR_ROM); #else dedicated = Cvar_Get("dedicated", "1", CVAR_ROM); #endif sv_running = Cvar_Get("sv_running", "0", CVAR_ROM); sv_paused = Cvar_Get("sv_paused", "0", CVAR_ROM); com_timedemo = Cvar_Get("timedemo", "0", CVAR_CHEAT); com_date_format = Cvar_Get("com_date_format", "%Y-%m-%d", 0); #ifdef _WIN32 com_time_format = Cvar_Get("com_time_format", "%H.%M", 0); #else com_time_format = Cvar_Get("com_time_format", "%H:%M", 0); #endif #ifdef _DEBUG com_debug_break = Cvar_Get("com_debug_break", "0", 0); #endif com_fatal_error = Cvar_Get("com_fatal_error", "0", 0); com_version = Cvar_Get("version", com_version_string, CVAR_SERVERINFO | CVAR_ROM); allow_download = Cvar_Get("allow_download", COM_DEDICATED ? "0" : "1", CVAR_ARCHIVE); allow_download_players = Cvar_Get("allow_download_players", "1", CVAR_ARCHIVE); allow_download_models = Cvar_Get("allow_download_models", "1", CVAR_ARCHIVE); allow_download_sounds = Cvar_Get("allow_download_sounds", "1", CVAR_ARCHIVE); allow_download_maps = Cvar_Get("allow_download_maps", "1", CVAR_ARCHIVE); allow_download_textures = Cvar_Get("allow_download_textures", "1", CVAR_ARCHIVE); allow_download_pics = Cvar_Get("allow_download_pics", "1", CVAR_ARCHIVE); allow_download_others = Cvar_Get("allow_download_others", "0", 0); rcon_password = Cvar_Get("rcon_password", "", CVAR_PRIVATE); Cmd_AddCommand("z_stats", Z_Stats_f); //Cmd_AddCommand("setenv", Com_Setenv_f); Cmd_AddMacro("com_date", Com_Date_m); Cmd_AddMacro("com_time", Com_Time_m); Cmd_AddMacro("com_uptime", Com_Uptime_m); Cmd_AddMacro("com_uptime_long", Com_UptimeLong_m); Cmd_AddMacro("random", Com_Random_m); Cmd_AddMacro("com_maplist", Com_MapList_m); // add any system-wide configuration files Sys_AddDefaultConfig(); // we need to add the early commands twice, because // a basedir or cddir needs to be set before execing // config files, but we want other parms to override // the settings of the config files Com_AddEarlyCommands(qfalse); Sys_Init(); Sys_RunConsole(); FS_Init(); Sys_RunConsole(); // no longer allow CVAR_NOSET modifications com_initialized = qtrue; // after FS is initialized, open logfile logfile_enable->changed = logfile_enable_changed; logfile_flush->changed = logfile_param_changed; logfile_name->changed = logfile_param_changed; logfile_enable_changed(logfile_enable); // execute configs: default.cfg may come from the packfile, but config.cfg // and autoexec.cfg must be real files within the game directory Com_AddConfigFile(COM_DEFAULT_CFG, 0); Com_AddConfigFile(COM_CONFIG_CFG, FS_TYPE_REAL | FS_PATH_GAME); Com_AddConfigFile(COM_AUTOEXEC_CFG, FS_TYPE_REAL | FS_PATH_GAME); Com_AddConfigFile(COM_POSTEXEC_CFG, FS_TYPE_REAL); Com_AddEarlyCommands(qtrue); Cmd_AddCommand("lasterror", Com_LastError_f); Cmd_AddCommand("quit", Com_Quit_f); #if !USE_CLIENT Cmd_AddCommand("recycle", Com_Recycle_f); #endif srand(Sys_Milliseconds()); Netchan_Init(); NET_Init(); BSP_Init(); CM_Init(); SV_Init(); CL_Init(); TST_Init(); Sys_RunConsole(); // add + commands from command line if (!Com_AddLateCommands()) { // if the user didn't give any commands, run default action char *cmd = COM_DEDICATED ? "dedicated_start" : "client_start"; if ((cmd = Cmd_AliasCommand(cmd)) != NULL) { Cbuf_AddText(&cmd_buffer, cmd); Cbuf_Execute(&cmd_buffer); } } else { // the user asked for something explicit // so drop the loading plaque SCR_EndLoadingPlaque(); } // even not given a starting map, dedicated server starts // listening for rcon commands (create socket after all configs // are executed to make sure port number is properly set) if (COM_DEDICATED) { NET_Config(NET_SERVER); } Com_AddConfigFile(COM_POSTINIT_CFG, FS_TYPE_REAL); Com_Printf("====== " PRODUCT " initialized ======\n\n"); Com_LPrintf(PRINT_NOTICE, APPLICATION " " VERSION ", " __DATE__ "\n"); Com_Printf("http://skuller.net/q2pro/\n\n"); time(&com_startTime); com_eventTime = Sys_Milliseconds(); }
/* ==================== Host_Init ==================== */ void Host_Init (int argc, char **argv, int default_memsize) { COM_InitArgv (argc, argv); #if !defined(CLIENTONLY) && !defined(SERVERONLY) if (COM_CheckParm("-dedicated")) dedicated = true; #endif Host_InitMemory (default_memsize); Cbuf_Init (); Cmd_Init (); Cvar_Init (); COM_Init (); Key_Init (); FS_InitFilesystem (); COM_CheckRegistered (); Con_Init (); if (!dedicated) { Cbuf_AddText ("exec default.cfg\n"); Cbuf_AddText ("exec config.cfg\n"); Cbuf_Execute (); } Cbuf_AddEarlyCommands (); Cbuf_Execute (); NET_Init (); Netchan_Init (); Sys_Init (); CM_Init (); PM_Init (); Host_InitLocal (); SV_Init (); CL_Init (); Cvar_CleanUpTempVars (); Hunk_AllocName (0, "-HOST_HUNKLEVEL-"); host_hunklevel = Hunk_LowMark (); host_initialized = true; Com_Printf ("Exe: "__TIME__" "__DATE__"\n"); Com_Printf ("%4.1f megs RAM used.\n", host_memsize / (1024*1024.0)); Com_Printf ("\n========= " PROGRAM " Initialized =========\n"); if (dedicated) { Cbuf_AddText ("exec server.cfg\n"); Cmd_StuffCmds_f (); // process command line arguments Cbuf_Execute (); // if a map wasn't specified on the command line, spawn start map if (!com_serveractive) Cmd_ExecuteString ("map start"); if (!com_serveractive) Host_Error ("Couldn't spawn a server"); } else { Cbuf_AddText ("exec autoexec.cfg\n"); Cmd_StuffCmds_f (); // process command line arguments Cbuf_AddText ("cl_warncmd 1\n"); } }
/* ================= Host_InitCommon ================= */ void Host_InitCommon( int argc, const char** argv, const char *progname, qboolean bChangeGame ) { char dev_level[4]; char *baseDir; // some commands may turn engine into infinite loop, // e.g. xash.exe +game xash -game xash // so we clear all cmd_args, but leave dbg states as well Sys_ParseCommandLine( argc, argv ); host.enabledll = !Sys_CheckParm( "-nodll" ); host.shutdown_issued = false; host.crashed = false; #ifdef DLL_LOADER if( host.enabledll ) Setup_LDT_Keeper( ); // Must call before any thread creating #endif #if defined(XASH_SDL) && !(defined(PANDORA) || defined(RPI)) if( SDL_Init( SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK | SDL_INIT_EVENTS )) { Sys_Error( "SDL_Init: %s", SDL_GetError() ); } #endif if( ( baseDir = getenv( "XASH3D_BASEDIR" ) ) ) { Q_strncpy( host.rootdir, baseDir, sizeof(host.rootdir) ); } else { #if defined(PANDORA) || defined(RPI) Q_strncpy( host.rootdir, ".", sizeof( host.rootdir ) ); #else #if defined(XASH_SDL) if( !( baseDir = SDL_GetBasePath() ) ) Sys_Error( "couldn't determine current directory: %s", SDL_GetError() ); Q_strncpy( host.rootdir, baseDir, sizeof( host.rootdir ) ); #else if( !getcwd( host.rootdir, sizeof(host.rootdir) ) ) host.rootdir[0] = 0; #endif #endif } if( host.rootdir[Q_strlen( host.rootdir ) - 1] == '/' ) host.rootdir[Q_strlen( host.rootdir ) - 1] = 0; if( !Sys_CheckParm( "-noch" ) ) { Sys_SetupCrashHandler(); } host.change_game = bChangeGame; host.state = HOST_INIT; // initialization started host.developer = host.old_developer = 0; host.textmode = false; host.mempool = Mem_AllocPool( "Zone Engine" ); if( Sys_CheckParm( "-console" )) host.developer = 1; if( Sys_CheckParm( "-dev" )) { if( Sys_GetParmFromCmdLine( "-dev", dev_level )) { if( Q_isdigit( dev_level )) host.developer = abs( Q_atoi( dev_level )); else host.developer++; // -dev == 1, -dev -console == 2 } else host.developer++; // -dev == 1, -dev -console == 2 } #ifdef XASH_DEDICATED host.type = HOST_DEDICATED; // predict state #else if( Sys_CheckParm("-dedicated") || progname[0] == '#' ) host.type = HOST_DEDICATED; else host.type = HOST_NORMAL; #endif host.con_showalways = true; host.mouse_visible = false; #ifdef XASH_SDL if( SDL_Init( SDL_INIT_TIMER | SDL_INIT_VIDEO | SDL_INIT_EVENTS )) { SDL_Init( SDL_INIT_TIMER ); host.type = HOST_DEDICATED; } #endif if ( SetCurrentDirectory( host.rootdir ) != 0) MsgDev( D_INFO, "%s is working directory now\n", host.rootdir ); else Sys_Error( "Changing working directory to %s failed.\n", host.rootdir ); // set default gamedir if( progname[0] == '#' ) progname++; Q_strncpy( SI.ModuleName, progname, sizeof( SI.ModuleName )); if( host.type == HOST_DEDICATED ) { Sys_MergeCommandLine( ); if( host.developer < 3 ) host.developer = 3; // otherwise we see empty console } else { // don't show console as default if( host.developer < D_WARN ) host.con_showalways = false; } host.old_developer = host.developer; if( !Sys_CheckParm( "-nowcon" ) ) Con_CreateConsole(); // first text message into console or log MsgDev( D_NOTE, "Sys_LoadLibrary: Loading Engine Library - ok\n" ); // startup cmds and cvars subsystem Cmd_Init(); Cvar_Init(); // share developer level across all dlls Q_snprintf( dev_level, sizeof( dev_level ), "%i", host.developer ); Cvar_Get( "developer", dev_level, CVAR_INIT, "current developer level" ); Cmd_AddCommand( "exec", Host_Exec_f, "execute a script file" ); Cmd_AddCommand( "memlist", Host_MemStats_f, "prints memory pool information" ); Cmd_AddCommand( "userconfigd", Host_Userconfigd_f, "execute all scripts from userconfig.d" ); cmd_scripting = Cvar_Get( "cmd_scripting", "0", CVAR_ARCHIVE, "enable simple condition checking and variable operations" ); FS_Init(); Image_Init(); Sound_Init(); FS_LoadGameInfo( NULL ); Q_strncpy( host.gamefolder, GI->gamefolder, sizeof( host.gamefolder )); #if !(defined(PANDORA) || defined(RPI)) if( GI->secure ) { // clear all developer levels when game is protected Cvar_FullSet( "developer", "0", CVAR_INIT ); host.developer = host.old_developer = 0; host.con_showalways = false; } #endif HPAK_Init(); IN_Init(); Key_Init(); }
/* ================= Host_InitCommon ================= */ void Host_InitCommon( const char* moduleName, const char* cmdLine, const char *progname, qboolean bChangeGame ) { char dev_level[4]; char szTemp[MAX_SYSPATH]; string szRootPath; #ifdef _WIN32 MEMORYSTATUS lpBuffer; lpBuffer.dwLength = sizeof( MEMORYSTATUS ); GlobalMemoryStatus( &lpBuffer ); #endif #ifndef __ANDROID__ if( !(SDL_GetBasePath()) ) Sys_Error( "couldn't determine current directory" ); Q_strncpy(host.rootdir, SDL_GetBasePath(), sizeof(host.rootdir)); if( host.rootdir[Q_strlen( host.rootdir ) - 1] == '/' ) host.rootdir[Q_strlen( host.rootdir ) - 1] = 0; #else Q_strncpy(host.rootdir, GAMEPATH, sizeof(host.rootdir)); #endif #ifdef _WIN32 host.oldFilter = SetUnhandledExceptionFilter( Sys_Crash ); host.hInst = GetModuleHandle( NULL ); #endif host.change_game = bChangeGame; host.state = HOST_INIT; // initialzation started host.developer = host.old_developer = 0; CRT_Init(); // init some CRT functions // some commands may turn engine into infinity loop, // e.g. xash.exe +game xash -game xash // so we clearing all cmd_args, but leave dbg states as well if( cmdLine ) Sys_ParseCommandLine( cmdLine ); #ifdef _WIN32 SetErrorMode( SEM_FAILCRITICALERRORS ); // no abort/retry/fail errors #endif host.mempool = Mem_AllocPool( "Zone Engine" ); if( Sys_CheckParm( "-console" )) host.developer = 1; if( Sys_CheckParm( "-dev" )) { if( Sys_GetParmFromCmdLine( "-dev", dev_level )) { if( Q_isdigit( dev_level )) host.developer = abs( Q_atoi( dev_level )); else host.developer++; // -dev == 1, -dev -console == 2 } else host.developer++; // -dev == 1, -dev -console == 2 } host.type = HOST_NORMAL; // predict state host.con_showalways = true; #ifdef PANDORA if( Sys_CheckParm( "-noshouldermb" )) noshouldermb = 1; #endif #ifdef __ANDROID__ if (chdir(host.rootdir) == 0) MsgDev(D_INFO,"%s is working directory now",host.rootdir); else MsgDev(D_ERROR,"%s is not exists",host.rootdir); #else // we can specified custom name, from Sys_NewInstance if( SDL_GetBasePath() && !host.change_game ) { Q_strncpy( szTemp, SDL_GetBasePath(), sizeof(szTemp) ); FS_FileBase( szTemp, SI.ModuleName ); } if(moduleName) Q_strncpy(SI.ModuleName, moduleName, sizeof(SI.ModuleName)); FS_ExtractFilePath( SI.ModuleName, szRootPath ); if( Q_stricmp( host.rootdir, szRootPath )) { Q_strncpy( host.rootdir, szRootPath, sizeof( host.rootdir )); #ifdef _WIN32 SetCurrentDirectory( host.rootdir ); #else chdir( host.rootdir ); #endif } #endif if( SI.ModuleName[0] == '#' ) host.type = HOST_DEDICATED; // determine host type if( progname[0] == '#' ) { Q_strncpy( SI.ModuleName, progname + 1, sizeof( SI.ModuleName )); host.type = HOST_DEDICATED; } else Q_strncpy( SI.ModuleName, progname, sizeof( SI.ModuleName )); if( host.type == HOST_DEDICATED ) { // check for duplicate dedicated server host.hMutex = SDL_CreateMutex( ); if( !host.hMutex ) { MSGBOX( "Dedicated server already running" ); Sys_Quit(); return; } Sys_MergeCommandLine( cmdLine ); SDL_DestroyMutex( host.hMutex ); host.hMutex = SDL_CreateSemaphore( 0 ); if( host.developer < 3 ) host.developer = 3; // otherwise we see empty console } else { // don't show console as default if( host.developer < D_WARN ) host.con_showalways = false; } host.old_developer = host.developer; Con_CreateConsole(); // first text message into console or log MsgDev( D_NOTE, "Sys_LoadLibrary: Loading xash.dll - ok\n" ); // startup cmds and cvars subsystem Cmd_Init(); Cvar_Init(); // share developer level across all dlls Q_snprintf( dev_level, sizeof( dev_level ), "%i", host.developer ); Cvar_Get( "developer", dev_level, CVAR_INIT, "current developer level" ); Cmd_AddCommand( "exec", Host_Exec_f, "execute a script file" ); Cmd_AddCommand( "memlist", Host_MemStats_f, "prints memory pool information" ); FS_Init(); Image_Init(); Sound_Init(); FS_LoadGameInfo( NULL ); Q_strncpy( host.gamefolder, GI->gamefolder, sizeof( host.gamefolder )); if( GI->secure ) { // clear all developer levels when game is protected Cvar_FullSet( "developer", "0", CVAR_INIT ); host.developer = host.old_developer = 0; host.con_showalways = false; } HPAK_Init(); IN_Init(); Key_Init(); }
/** * @brief */ static void Init(void) { SDL_Init(SDL_INIT_TIMER); Mem_Init(); Cmd_Init(); Cvar_Init(); verbose = Cvar_Add("verbose", "0", 0, "Print verbose debugging information"); dedicated = Cvar_Add("dedicated", "0", CVAR_NO_SET, "Run a dedicated server"); if (strstr(Sys_ExecutablePath(), "-dedicated")) { Cvar_ForceSet("dedicated", "1"); } if (dedicated->value) { Cvar_ForceSet("threads", "0"); } game = Cvar_Add("game", DEFAULT_GAME, CVAR_LATCH | CVAR_SERVER_INFO, "The game module name"); game->modified = g_strcmp0(game->string, DEFAULT_GAME); threads = Cvar_Add("threads", "0", CVAR_ARCHIVE, "Specifies the number of threads to create"); threads->modified = false; time_demo = Cvar_Add("time_demo", "0", CVAR_LO_ONLY, "Benchmark and stress test"); time_scale = Cvar_Add("time_scale", "1.0", CVAR_LO_ONLY, "Controls time lapse"); const char *s = va("Quetoo %s %s %s", VERSION, __DATE__, BUILD_HOST); Cvar_Add("version", s, CVAR_SERVER_INFO | CVAR_NO_SET, NULL); quetoo.Debug = Debug; quetoo.Error = Error; quetoo.Print = Print; quetoo.Verbose = Verbose; quetoo.Warn = Warn; Fs_Init(true); Thread_Init(threads->integer); Con_Init(); Cmd_Add("mem_stats", MemStats_f, CMD_SYSTEM, "Print memory stats"); Cmd_Add("debug", Debug_f, CMD_SYSTEM, "Control debugging output"); Cmd_Add("quit", Quit_f, CMD_SYSTEM, "Quit Quetoo"); Netchan_Init(); Sv_Init(); Cl_Init(); Com_Print("Quetoo %s %s %s initialized\n", VERSION, __DATE__, BUILD_HOST); // reset debug value since Cbuf may change it from Com's "all" init Com_SetDebug("0"); // execute any +commands specified on the command line Cbuf_InsertFromDefer(); Cbuf_Execute(); // dedicated server, nothing specified, use Edge if (dedicated->value && !Com_WasInit(QUETOO_SERVER)) { Cbuf_AddText("map edge\n"); Cbuf_Execute(); } }
/* ================= Qcommon_Init ================= */ void Qcommon_Init (int argc, char **argv) { static const char *apVersion = APPLICATION " v" VERSION " " CPUSTRING " " __DATE__ " " BUILDSTRING; if (setjmp (abortframe) ) Sys_Error ("Error during initialization"); z_chain.next = z_chain.prev = &z_chain; // prepare enough of the subsystems to handle // cvar and command buffer management COM_InitArgv (argc, argv); Swap_Init (); Cbuf_Init (); Cmd_Init (); Cvar_Init (); Key_Init (); // we need to add the early commands twice, because // a basedir or cddir needs to be set before execing // config files, but we want other parms to override // the settings of the config files Cbuf_AddEarlyCommands (false); Cbuf_Execute(); FS_InitFilesystem (); Cbuf_AddText ("exec default.cfg\n"); Cbuf_Execute(); Cbuf_AddText ("exec aprconfig.cfg\n"); Cbuf_Execute(); FS_ExecConfig("autoexec.cfg"); Cbuf_Execute(); Cbuf_AddEarlyCommands (true); Cbuf_Execute(); Cmd_AddCommand ("echo", Cmd_Echo_f); // init commands and vars Cmd_AddCommand ("z_stats", Z_Stats_f); Cmd_AddCommand( "z_check", Z_Check ); host_speeds = Cvar_Get ("host_speeds", "0", 0); developer = Cvar_Get ("developer", "0", 0); timescale = Cvar_Get ("timescale", "1", CVAR_CHEAT); fixedtime = Cvar_Get ("fixedtime", "0", CVAR_CHEAT); logfile_active = Cvar_Get ("logfile", "0", 0); showtrace = Cvar_Get ("showtrace", "0", 0); #ifdef DEDICATED_ONLY dedicated = Cvar_Get ("dedicated", "1", CVAR_ROM); #else dedicated = Cvar_Get ("dedicated", "0", CVAR_NOSET); #endif timescale->OnChange = OnChange_Timescale; OnChange_Timescale(timescale, timescale->resetString); Cvar_Get ("version", apVersion, CVAR_SERVERINFO|CVAR_ROM); Cmd_AddMacro( "date", Com_Date_m ); Cmd_AddMacro( "time", Com_Time_m ); if (dedicated->integer) Cmd_AddCommand ("quit", Com_Quit); #ifndef NDEBUG Cmd_AddCommand( "error", Com_Error_f ); Cmd_AddCommand( "errordrop", Com_ErrorDrop_f ); Cmd_AddCommand( "freeze", Com_Freeze_f ); Cmd_AddCommand( "crash", Com_Crash_f ); #endif Sys_Init (); srand(Sys_Milliseconds()); NET_Init (); Netchan_Init (); SV_Init (); CL_Init (); ComInitialized = true; Cbuf_InsertFromDefer(); //Execute commands which was initialized after loading autoexec (ignore, highlight etc) FS_ExecConfig ("postinit.cfg"); Cbuf_Execute(); // add + commands from command line if (!Cbuf_AddLateCommands ()) { // if the user didn't give any commands, run default action if (!dedicated->integer) Cbuf_AddText ("toggleconsole\n"); else Cbuf_AddText ("dedicated_start\n"); Cbuf_Execute(); } else { // the user asked for something explicit // so drop the loading plaque SCR_EndLoadingPlaque(); } Com_Printf ("====== " APPLICATION " Initialized ======\n\n"); }
/* ================= Com_Init ================= */ void Com_Init( char *commandLine ) { char *s; Com_Printf( "%s %s %s\n", Q3_VERSION, CPUSTRING, __DATE__ ); try { // prepare enough of the subsystems to handle // cvar and command buffer management Com_ParseCommandLine( commandLine ); Swap_Init (); Cbuf_Init (); Com_InitZoneMemory(); Cmd_Init (); Cvar_Init (); // get the commandline cvars set Com_StartupVariable( NULL ); // done early so bind command exists CL_InitKeyCommands(); FS_InitFilesystem (); //uses z_malloc Com_InitJournaling(); Cbuf_AddText ("exec default.cfg\n"); // skip the jk2config.cfg if "safe" is on the command line if ( !Com_SafeMode() ) { Cbuf_AddText ("exec jk2config.cfg\n"); } Cbuf_AddText ("exec autoexec.cfg\n"); Cbuf_Execute (); // override anything from the config files with command line args Com_StartupVariable( NULL ); // allocate the stack based hunk allocator Com_InitHunkMemory(); // if any archived cvars are modified after this, we will trigger a writing // of the config file cvar_modifiedFlags &= ~CVAR_ARCHIVE; // // init commands and vars // Cmd_AddCommand ("quit", Com_Quit_f); Cmd_AddCommand ("writeconfig", Com_WriteConfig_f ); com_maxfps = Cvar_Get ("com_maxfps", "85", CVAR_ARCHIVE); com_developer = Cvar_Get ("developer", "0", CVAR_TEMP ); com_logfile = Cvar_Get ("logfile", "0", CVAR_TEMP ); com_speedslog = Cvar_Get ("speedslog", "0", CVAR_TEMP ); com_timescale = Cvar_Get ("timescale", "1", CVAR_CHEAT ); com_fixedtime = Cvar_Get ("fixedtime", "0", CVAR_CHEAT); com_showtrace = Cvar_Get ("com_showtrace", "0", CVAR_CHEAT); com_viewlog = Cvar_Get( "viewlog", "0", CVAR_TEMP ); com_speeds = Cvar_Get ("com_speeds", "0", 0); cl_paused = Cvar_Get ("cl_paused", "0", CVAR_ROM); sv_paused = Cvar_Get ("sv_paused", "0", CVAR_ROM); com_sv_running = Cvar_Get ("sv_running", "0", CVAR_ROM); com_cl_running = Cvar_Get ("cl_running", "0", CVAR_ROM); com_skippingcin = Cvar_Get ("skippingCinematic", "0", CVAR_ROM); com_buildScript = Cvar_Get( "com_buildScript", "0", 0 ); com_FirstTime = Cvar_Get( "com_FirstTime", "0", CVAR_ARCHIVE); if ( com_developer && com_developer->integer ) { Cmd_AddCommand ("error", Com_Error_f); Cmd_AddCommand ("crash", Com_Crash_f ); Cmd_AddCommand ("freeze", Com_Freeze_f); } s = va("%s %s %s", Q3_VERSION, CPUSTRING, __DATE__ ); com_version = Cvar_Get ("version", s, CVAR_ROM | CVAR_SERVERINFO ); SP_Init(); // Initialize StripEd Sys_Init(); // this also detects CPU type, so I can now do this CPU check below... if( !com_FirstTime->integer ) // special request to detect and use top-settings for Intel Williamette chip... { Cvar_Set( "com_FirstTime", "1" ); // only do this once // // ( make a local ptr only for quick test, since this is a common module ) // cvar_t* s_CPUType = Cvar_Get("sys_cpuid","",0); if (s_CPUType->value == CPUID_INTEL_WILLIAMETTE) { Cbuf_AddText ("exec perfect.cfg\n"); // Cbuf_Execute (); } } Netchan_Init( Com_Milliseconds() & 0xffff ); // pick a port value that should be nice and random // VM_Init(); SV_Init(); CL_Init(); Sys_ShowConsole( com_viewlog->integer, qfalse ); // set com_frameTime so that if a map is started on the // command line it will still be able to count on com_frameTime // being random enough for a serverid com_frameTime = Com_Milliseconds(); // add + commands from command line if ( !Com_AddStartupCommands() ) { #ifdef NDEBUG // if the user didn't give any commands, run default action // if ( !com_dedicated->integer ) { Cbuf_AddText ("cinematic openinglogos\n"); // if( !com_introPlayed->integer ) { // Cvar_Set( com_introPlayed->name, "1" ); // Cvar_Set( "nextmap", "cinematic intro" ); // } } #endif } com_fullyInitialized = qtrue; Com_Printf ("--- Common Initialization Complete ---\n"); } catch (const char* reason) { Sys_Error ("Error during initialization %s", reason); } }
void Com_Init( char *commandLine ) { char *s; Com_Printf( "%s %s %s\n", Q3_VERSION, PLATFORM_STRING, __DATE__ ); try { Cvar_Init (); // prepare enough of the subsystems to handle // cvar and command buffer management Com_ParseCommandLine( commandLine ); //Swap_Init (); Cbuf_Init (); Com_InitZoneMemory(); Cmd_Init (); // override anything from the config files with command line args Com_StartupVariable( NULL ); // done early so bind command exists CL_InitKeyCommands(); com_homepath = Cvar_Get("com_homepath", "", CVAR_INIT); FS_InitFilesystem (); //uses z_malloc //re.R_InitWorldEffects(); // this doesn't do much but I want to be sure certain variables are intialized. Com_ExecuteCfg(); // override anything from the config files with command line args Com_StartupVariable( NULL ); // allocate the stack based hunk allocator Com_InitHunkMemory(); // if any archived cvars are modified after this, we will trigger a writing // of the config file cvar_modifiedFlags &= ~CVAR_ARCHIVE; // // init commands and vars // Cmd_AddCommand ("quit", Com_Quit_f); Cmd_AddCommand ("writeconfig", Com_WriteConfig_f ); com_maxfps = Cvar_Get ("com_maxfps", "125", CVAR_ARCHIVE); com_developer = Cvar_Get ("developer", "0", CVAR_TEMP ); com_logfile = Cvar_Get ("logfile", "0", CVAR_TEMP ); com_speedslog = Cvar_Get ("speedslog", "0", CVAR_TEMP ); com_timescale = Cvar_Get ("timescale", "1", CVAR_CHEAT ); com_fixedtime = Cvar_Get ("fixedtime", "0", CVAR_CHEAT); com_showtrace = Cvar_Get ("com_showtrace", "0", CVAR_CHEAT); com_speeds = Cvar_Get ("com_speeds", "0", 0); #ifdef G2_PERFORMANCE_ANALYSIS com_G2Report = Cvar_Get("com_G2Report", "0", 0); #endif cl_paused = Cvar_Get ("cl_paused", "0", CVAR_ROM); sv_paused = Cvar_Get ("sv_paused", "0", CVAR_ROM); com_sv_running = Cvar_Get ("sv_running", "0", CVAR_ROM); com_cl_running = Cvar_Get ("cl_running", "0", CVAR_ROM); com_skippingcin = Cvar_Get ("skippingCinematic", "0", CVAR_ROM); com_buildScript = Cvar_Get( "com_buildScript", "0", 0 ); com_affinity = Cvar_Get( "com_affinity", "1", CVAR_ARCHIVE ); com_bootlogo = Cvar_Get( "com_bootlogo", "1", CVAR_ARCHIVE ); if ( com_developer && com_developer->integer ) { Cmd_AddCommand ("error", Com_Error_f); Cmd_AddCommand ("crash", Com_Crash_f ); Cmd_AddCommand ("freeze", Com_Freeze_f); } s = va("%s %s %s", Q3_VERSION, PLATFORM_STRING, __DATE__ ); com_version = Cvar_Get ("version", s, CVAR_ROM | CVAR_SERVERINFO ); #ifdef JK2_MODE JK2SP_Init(); Com_Printf("Running Jedi Outcast Mode\n"); #else SE_Init(); // Initialize StringEd Com_Printf("Running Jedi Academy Mode\n"); #endif Sys_Init(); // this also detects CPU type, so I can now do this CPU check below... Sys_SetProcessorAffinity(); Netchan_Init( Com_Milliseconds() & 0xffff ); // pick a port value that should be nice and random // VM_Init(); SV_Init(); CL_Init(); // set com_frameTime so that if a map is started on the // command line it will still be able to count on com_frameTime // being random enough for a serverid com_frameTime = Com_Milliseconds(); // add + commands from command line if ( !Com_AddStartupCommands() ) { // if the user didn't give any commands, run default action if ( com_bootlogo->integer ) { Cbuf_AddText ("cinematic openinglogos\n"); } } com_fullyInitialized = qtrue; Com_Printf ("--- Common Initialization Complete ---\n"); //HACKERY FOR THE DEUTSCH //if ( (Cvar_VariableIntegerValue("ui_iscensored") == 1) //if this was on before, set it again so it gets its flags // ) //{ // Cvar_Get( "ui_iscensored", "1", CVAR_ARCHIVE|CVAR_ROM|CVAR_INIT|CVAR_CHEAT|CVAR_NORESTART); // Cvar_Set( "ui_iscensored", "1"); //just in case it was archived // // NOTE : I also create this in UI_Init() // Cvar_Get( "g_dismemberment", "0", CVAR_ARCHIVE|CVAR_ROM|CVAR_INIT|CVAR_CHEAT); // Cvar_Set( "g_dismemberment", "0"); //just in case it was archived //} } catch ( int code ) { Com_CatchError (code); Sys_Error ("Error during initialization %s", Com_ErrorString (code)); } }
/* ==================== Host_Init ==================== */ void Host_Init (quakeparms_t *parms) { #if defined(_WIN32) && defined(GLQUAKE) FILE *fp = fopen("opengl32.dll","r"); if (fp) { // exists fclose(fp); Sys_Error ("OpenGL32.dll found in Quake folder. You must delete this file from your Quake folder to run this engine."); } #endif // Windows only if (standard_quake) minimum_memory = MINIMUM_MEMORY; else minimum_memory = MINIMUM_MEMORY_LEVELPAK; if (COM_CheckParm ("-minmemory")) parms->memsize = minimum_memory; host_parms = *parms; if (parms->memsize < minimum_memory) Sys_Error ("Only %4.1f megs of memory available, can't execute game and memsize = %i and minimum memory is %i", parms->memsize / (float)0x100000, parms->memsize, minimum_memory); com_argc = parms->argc; com_argv = parms->argv; #ifdef SUPPORTS_CHEATFREE // JPG 3.00 - moved this here #if defined(_WIN32) srand(time(NULL) ^ _getpid()); #else srand(time(NULL) ^ getpid()); #endif #endif Memory_Init (parms->membase, parms->memsize); Cbuf_Init (); Cmd_Init (); Cvar_Init (); V_Init (); Chase_Init (); Host_InitVCR (parms); COM_Init (parms->basedir); Host_InitLocal (); W_LoadWadFile ("gfx.wad"); Key_Init (); Con_Init (); M_Init (); PR_Init (); Mod_Init (); #ifdef PROQUAKE_EXTENSION Security_Init (); // JPG 3.20 - cheat free #endif NET_Init (); SV_Init (); #ifdef PROQUAKE_EXTENSION IPLog_Init (); // JPG 1.05 - ip address logging Con_Printf ("Exe: "__TIME__" "__DATE__"\n"); #endif #ifdef PSP_SYSTEM_STATS Con_Printf ("Insomnia ProQuake Engine v 4.71 Rev4\n"); //(EBOOT: "__TIME__" "__DATE__")\n"); int currentCPU = scePowerGetCpuClockFrequency(); int currentVRAM = sceGeEdramGetSize(); int currentVRAMADD = sceGeEdramGetAddr(); int currentRAMAVAIL = sceKernelTotalFreeMemSize(); #ifdef NORMAL_MODEL Con_Printf ("PSP Normal 32MB RAM Mode \n"); #endif #ifdef SLIM_MODEL Con_Printf ("PSP Slim 64MB RAM Mode \n"); #endif Con_Printf ("%4.1f megabyte heap \n",parms->memsize/ (1024*1024.0)); Con_Printf ("%4.1f PSP application heap \n",1.0f*PSP_HEAP_SIZE_MB); Con_Printf ("%d VRAM \n",currentVRAM); Con_Printf ("%d VRAM Address \n",currentVRAMADD); Con_Printf ("%d Current Total RAM \n",currentRAMAVAIL); Con_Printf ("CPU Speed %d MHz\n", currentCPU); Con_Printf ("%s \n", com_gamedir); R_InitTextures (); // needed even for dedicated servers #else Con_Printf ("%4.1f megabyte heap\n",parms->memsize/ (1024*1024.0)); #endif if (cls.state != ca_dedicated) { host_basepal = (byte *)COM_LoadHunkFile ("gfx/palette.lmp"); if (!host_basepal) Sys_Error ("Couldn't load gfx/palette.lmp"); host_colormap = (byte *)COM_LoadHunkFile ("gfx/colormap.lmp"); if (!host_colormap) Sys_Error ("Couldn't load gfx/colormap.lmp"); #ifndef _WIN32 // on non win32, mouse comes before video for security reasons IN_Init (); #endif VID_Init (host_basepal); Draw_Init (); SCR_Init (); R_Init (); #ifndef _WIN32 // on Win32, sound initialization has to come before video initialization, so we // can put up a popup if the sound hardware is in use S_Init (); #else #ifdef GLQUAKE // FIXME: doesn't use the new one-window approach yet S_Init (); #endif #endif // _WIN32 CDAudio_Init (); Sbar_Init (); CL_Init (); #ifdef _WIN32 // on non win32, mouse comes before video for security reasons IN_Init (); #endif #ifdef _WIN32 // Baker: 3.99m to get sys info // must be AFTER video init stuff Sys_InfoInit(); // We don't care about dedicated servers for this // Baker 3.76 - Autoplay demo if (com_argc >= 2) { char *infile = com_argv[1]; if (infile[0] && infile[0] != '-' && infile[0] != '+') { char tmp[1024] = {0}, *ext = COM_FileExtension(infile); if (!strncasecmp(ext, "dem", sizeof("dem"))) snprintf(tmp, sizeof(tmp), "playdemo \"%s\"\n", infile); if (tmp[0]) { nostartdemos = true; Cbuf_AddText(tmp); } } } #endif } Cbuf_InsertText ("exec quake.rc\n"); #ifdef PROQUAKE_EXTENSION // Baker 3.80x: this is a hack if (!isDedicated) { Cbuf_AddText ("\nsavefov\n"); Cbuf_AddText ("savesensitivity\n"); } #endif Hunk_AllocName (0, "-HOST_HUNKLEVEL-"); host_hunklevel = Hunk_LowMark (); host_initialized = true; Con_Printf ("Host Initialized\n"); Sys_Printf ("========Quake Initialized=========\n"); }