Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) {
- const HCURSOR hcurSave = ::SetCursor( LoadCursor( 0, IDC_WAIT ) );
- Sys_SetPhysicalWorkMemory( 192 << 20, 1024 << 20 );
- Sys_GetCurrentMemoryStatus( exeLaunchMemoryStats );
- #if 0
- DWORD handler = (DWORD)_except_handler;
- __asm
- { // Build EXCEPTION_REGISTRATION record:
- push handler // Address of handler function
- push FS:[0] // Address of previous handler
- mov FS:[0],ESP // Install new EXECEPTION_REGISTRATION
- }
- #endif
- win32.hInstance = hInstance;
- idStr::Copynz( sys_cmdline, lpCmdLine, sizeof( sys_cmdline ) );
- // done before Com/Sys_Init since we need this for error output
- Sys_CreateConsole();
- // no abort/retry/fail errors
- SetErrorMode( SEM_FAILCRITICALERRORS );
- for ( int i = 0; i < MAX_CRITICAL_SECTIONS; i++ ) {
- InitializeCriticalSection( &win32.criticalSections[i] );
- }
- // get the initial time base
- Sys_Milliseconds();
- #ifdef DEBUG
- // disable the painfully slow MS heap check every 1024 allocs
- _CrtSetDbgFlag( 0 );
- #endif
- // Sys_FPU_EnableExceptions( TEST_FPU_EXCEPTIONS );
- Sys_FPU_SetPrecision( FPU_PRECISION_DOUBLE_EXTENDED );
- common->Init( 0, NULL, lpCmdLine );
- #if TEST_FPU_EXCEPTIONS != 0
- common->Printf( Sys_FPU_GetState() );
- #endif
- #ifndef ID_DEDICATED
- if ( win32.win_notaskkeys.GetInteger() ) {
- DisableTaskKeys( TRUE, FALSE, /*( win32.win_notaskkeys.GetInteger() == 2 )*/ FALSE );
- }
- #endif
- Sys_StartAsyncThread();
- // hide or show the early console as necessary
- if ( win32.win_viewlog.GetInteger() || com_skipRenderer.GetBool() || idAsyncNetwork::serverDedicated.GetInteger() ) {
- Sys_ShowConsole( 1, true );
- } else {
- Sys_ShowConsole( 0, false );
- }
- #ifdef SET_THREAD_AFFINITY
- // give the main thread an affinity for the first cpu
- SetThreadAffinityMask( GetCurrentThread(), 1 );
- #endif
- ::SetCursor( hcurSave );
- // Launch the script debugger
- if ( strstr( lpCmdLine, "+debugger" ) ) {
- // DebuggerClientInit( lpCmdLine );
- return 0;
- }
- ::SetFocus( win32.hWnd );
- // main game loop
- while( 1 ) {
- Win_Frame();
- #ifdef DEBUG
- Sys_MemFrame();
- #endif
- // set exceptions, even if some crappy syscall changes them!
- Sys_FPU_EnableExceptions( TEST_FPU_EXCEPTIONS );
- #ifdef ID_ALLOW_TOOLS
- if ( com_editors ) {
- if ( com_editors & EDITOR_GUI ) {
- // GUI editor
- GUIEditorRun();
- } else if ( com_editors & EDITOR_RADIANT ) {
- // Level Editor
- RadiantRun();
- }
- else if (com_editors & EDITOR_MATERIAL ) {
- //BSM Nerve: Add support for the material editor
- MaterialEditorRun();
- }
- else {
- if ( com_editors & EDITOR_LIGHT ) {
- // in-game Light Editor
- LightEditorRun();
- }
- if ( com_editors & EDITOR_SOUND ) {
- // in-game Sound Editor
- SoundEditorRun();
- }
- if ( com_editors & EDITOR_DECL ) {
- // in-game Declaration Browser
- DeclBrowserRun();
- }
- if ( com_editors & EDITOR_AF ) {
- // in-game Articulated Figure Editor
- AFEditorRun();
- }
- if ( com_editors & EDITOR_PARTICLE ) {
- // in-game Particle Editor
- ParticleEditorRun();
- }
- if ( com_editors & EDITOR_SCRIPT ) {
- // in-game Script Editor
- ScriptEditorRun();
- }
- if ( com_editors & EDITOR_PDA ) {
- // in-game PDA Editor
- PDAEditorRun();
- }
- }
- }
- #endif
- // run the game
- common->Frame();
- }
- // never gets here
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment