void EvalSoundArgs (void) { int t; #if USE_SDL_MIXER # ifdef __macosx__ void * volatile function_p = (void *)&(Mix_OpenAudio); if (function_p == NULL) { // the SDL_mixer framework is not present, // so regardless of what conf.h or d2x.ini says, // we don't want to use SDL_mixer gameOptions [0].sound.bUseSDLMixer = 0; } else # endif //__macosx__ if ((t = FindArg ("-sdl_mixer"))) gameOptions [0].sound.bUseSDLMixer = NumArg (t, 1); #endif //USE_SDL_MIXER if ((t = FindArg ("-noredbook"))) gameOptions [0].sound.bUseRedbook = 0; #if USE_SDL_MIXER if (gameOptions [0].sound.bUseSDLMixer) { if ((t = FindArg ("-hires_sound"))) gameOptions [0].sound.bHires [0] = gameOptions [0].sound.bHires [1] = NumArg (t, 2); } #endif }
void arch_init() { // Initialise the library #ifdef __SDL__ arch_sdl_init(); #endif #ifdef __SVGALIB__ arch_svgalib_init(); #endif if (!FindArg( "-nojoystick" )) { if (Inferno_verbose) printf( "\n%s", TXT_VERBOSE_6); joy_init(); } //added 06/09/99 Matt Mueller - fix nonetwork compile #ifdef NETWORK //end addition -MM //added on 10/19/98 by Victor Rachels to add serial support (from DPH) if(!(FindArg("-noserial"))) com_init(); //end this section addition - Victor //added 06/09/99 Matt Mueller - fix nonetwork compile #endif //end addition -MM timer_init(); key_init(); }
int dd_gfx_init() { int i; if (dd_gfx_initialized) return 1; for (i = 0; i < MAX_GFX_BITMAPS; i++) gfxBitmap[i].lpdds = NULL; gfxBitmapHandleCur = 1; atexit(dd_gfx_close); if (FindArg("-disallowgfx")) dd_gfx_initialized = 0; else if (FindArg("-forcegfx")) dd_gfx_initialized = 1; else { if (ddDriverCaps.hwcolorkey) logentry("Card supports HW colorkeying.\n"); if (ddDriverCaps.hwbltstretch) logentry("Card supports HW bitmap stretching.\n"); if (ddDriverCaps.hwcolorkey) dd_gfx_initialized = 1; else dd_gfx_initialized = 0; } return 0; }
void gamefont_init() { int i; if (Gamefont_installed) return; Gamefont_installed = 1; for (i=0;i<MAX_FONTS;i++){ Gamefonts[i]=NULL; addfontconf(i,0,Gamefont_filenames_l[i]); addfontconf(i,640,Gamefont_filenames_h[i]); } // addfontconf(640,"pc6x8.fnt"); // addfontconf(1024,"pc8x16.fnt"); if ((i=FindArg("-font320"))) addfontconf(4,320,Args[i+1]); if ((i=FindArg("-font640"))) addfontconf(4,640,Args[i+1]); if ((i=FindArg("-font800"))) addfontconf(4,800,Args[i+1]); if ((i=FindArg("-font1024"))) addfontconf(4,1024,Args[i+1]); gamefont_choose_game_font(grd_curscreen->sc_canvas.cv_bitmap.bm_w,grd_curscreen->sc_canvas.cv_bitmap.bm_h); atexit( gamefont_close ); }
void EvalDemoArgs (void) { int t; if ((t = FindArg ("-revert_demos"))) gameOpts->demo.bRevertFormat = NumArg (t, 1); if ((t = FindArg ("-auto_demos"))) gameStates.app.bAutoDemos = NumArg (t, 1); }
int GrInit (void) { int mode = SM (800, 600); int retcode, t; // Only do this function once! if (gameStates.gfx.bInstalled) return -1; #ifdef OGL_RUNTIME_LOAD OglInitLoadLibrary (); #endif /***/PrintLog (" initializing SDL\n"); #if !USE_IRRLICHT if (SDL_Init (SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE) < 0) { PrintLog ("SDL library video initialisation failed: %s.\n", SDL_GetError()); Error ("SDL library video initialisation failed: %s.", SDL_GetError()); } #endif #if DBG ogl.m_states.bFullScreen = 0; #else if ((t = FindArg ("-fullscreen"))) { /***/PrintLog (" switching to fullscreen\n"); ogl.m_states.bFullScreen = NumArg (t, 1); //GrToggleFullScreen(); } #endif /***/PrintLog (" initializing internal texture list\n"); textureManager.Init (); /***/PrintLog (" allocating screen buffer\n"); screen.Canvas ()->SetBuffer (NULL); // Set the mode. for (t = 0; scrSizes [t].x && scrSizes [t].y; t++) if (FindArg (ScrSizeArg (scrSizes [t].x, scrSizes [t].y))) { gameStates.gfx.bOverride = 1; gameStates.gfx.nStartScrSize = mode = SM (scrSizes [t].x, scrSizes [t].y); gameStates.gfx.nStartScrMode = FindDisplayMode (mode); break; } if ((retcode = GrSetMode (mode))) return retcode; gameStates.gfx.bInstalled = 1; InitGammaRamp (); //atexit(GrClose); /***/PrintLog (" initializing OpenGL extensions\n"); ogl.SetRenderQuality (); ogl.SetupExtensions (); ogl.DestroyDrawBuffer (); ogl.CreateDrawBuffer (); ogl.SetDrawBuffer (GL_BACK, 1); return 0; }
void EvalGameplayArgs (void) { int t; if ((t = FindArg ("-noscreens"))) gameOpts->gameplay.bSkipBriefingScreens = NumArg (t, 1); if ((t = FindArg ("-secretsave"))) gameOptions [0].gameplay.bSecretSave = NumArg (t, 1); if ((t = FindArg ("-nobotai"))) gameStates.gameplay.bNoBotAI = NumArg (t, 1); }
void DoJoystickInit () { if (!FindArg ("-nojoystick")) { JoyInit (); if (FindArg ("-joyslow")) JoySetSlowReading (JOY_SLOW_READINGS); if (FindArg ("-joypolled")) JoySetSlowReading (JOY_POLLED_READINGS); if (FindArg ("-joybios")) JoySetSlowReading (JOY_BIOS_READINGS); } }
int state_save_all(int between_levels) { char filename[128], desc[DESC_LENGTH+1]; if ( Game_mode & GM_MULTI ) { #ifdef MULTI_SAVE if ( FindArg( "-multisave" ) ) multi_initiate_save_game(); else #endif HUD_init_message( "Can't save in a multiplayer game!" ); return 0; } mprintf(( 0, "CL=%d, NL=%d\n", Current_level_num, Next_level_num )); stop_time(); if (!state_get_save_file(filename,desc,0)) { start_time(); return 0; } return state_save_all_sub(filename, desc, between_levels); }
char *GetIniFileName (char *fnIni, int bDebug) { int i; if ((i = FindArg ("-ini"))) strncpy (fnIni, Args [i + 1], sizeof (fnIni) - 1); else { #if defined(__unix__) FFS ffs; strcpy (fnIni, gameFolders.szHomeDir); if (bDebug) strcat (fnIni, "/.d2x-xl-dbg"); else strcat (fnIni, "/.d2x-xl"); if (FFF (fnIni, &ffs, 0) <= 0) { #endif strcpy (fnIni, gameFolders.szConfigDir); if (*fnIni) strcat (fnIni, "/"); if (bDebug) strcat (fnIni, "d2xdebug.ini"); else strcat (fnIni, "d2x.ini"); #if defined(__unix__) } #endif //!__unix__ } return fnIni; }
void EvalMusicArgs (void) { int t; char *p; if ((t = FindArg ("-playlist")) && (p = pszArgList [t+1])) songManager.LoadPlayList (p); if ((t = FindArg ("-introsong")) && (p = pszArgList [t+1])) strncpy (songManager.IntroSong (), p, FILENAME_LEN); if ((t = FindArg ("-briefingsong")) && (p = pszArgList [t+1])) strncpy (songManager.BriefingSong (), p, FILENAME_LEN); if ((t = FindArg ("-creditssong")) && (p = pszArgList [t+1])) strncpy (songManager.CreditsSong (), p, FILENAME_LEN); if ((t = FindArg ("-menusong")) && (p = pszArgList [t+1])) strncpy (songManager.MenuSong (), p, FILENAME_LEN); }
tBitmapIndex PiggyRegisterBitmap (grsBitmap *bmP, const char *name, int bInFile) { tBitmapIndex temp; Assert (gameData.pig.tex.nBitmaps [gameStates.app.bD1Data] < MAX_BITMAP_FILES); if (strstr (name, "door13")) name = name; temp.index = gameData.pig.tex.nBitmaps [gameStates.app.bD1Data]; if (!bInFile) { #ifdef EDITOR if (FindArg ("-macdata")) swap_0_255 (bmP); #endif if (!bBigPig) gr_bitmap_rle_compress (bmP); nBitmapFilesNew++; } strncpy (gameData.pig.tex.pBitmapFiles [gameData.pig.tex.nBitmaps [gameStates.app.bD1Data]].name, name, 12); HashTableInsert (bitmapNames + gameStates.app.bD1Mission, gameData.pig.tex.pBitmapFiles[gameData.pig.tex.nBitmaps [gameStates.app.bD1Data]].name, gameData.pig.tex.nBitmaps [gameStates.app.bD1Data]); gameData.pig.tex.pBitmaps [gameData.pig.tex.nBitmaps [gameStates.app.bD1Data]] = *bmP; if (!bInFile) { bitmapOffsets [gameStates.app.bD1Data][gameData.pig.tex.nBitmaps [gameStates.app.bD1Data]] = 0; gameData.pig.tex.bitmapFlags [gameStates.app.bD1Data][gameData.pig.tex.nBitmaps [gameStates.app.bD1Data]] = bmP->bmProps.flags; } gameData.pig.tex.nBitmaps [gameStates.app.bD1Data]++; return temp; }
void RBAInit() { if (initialised) return; if (FindArg("-nocdrom")) return; if (SDL_Init(SDL_INIT_CDROM) < 0) { Warning("SDL library initialisation failed: %s.",SDL_GetError()); return; } if (SDL_CDNumDrives() == 0) { Warning("No cdrom drives found!\n"); return; } s_cd = SDL_CDOpen(0); if (s_cd == NULL) { Warning("Could not open cdrom for redbook audio!\n"); return; } SDL_CDStatus(s_cd); /* update the drive status */ atexit(RBAExit); initialised = 1; }
void EvalInputArgs (void) { int t; if ((t = FindArg ("-grabmouse"))) gameStates.input.bGrabMouse = NumArg (t, 1); }
int ShowTitleScreens (void) { int nPlayed = MOVIE_NOT_PLAYED; //default is not nPlayed #if DBG if (FindArg ("-notitles")) songManager.Play (SONG_TITLE, 1); else #endif { //NOTE LINK TO ABOVE! int bSongPlaying = 0; if (movieManager.m_bHaveExtras) { nPlayed = movieManager.Play ("starta.mve", MOVIE_REQUIRED, 0, gameOpts->movies.bResize); if (nPlayed == MOVIE_ABORTED) nPlayed = MOVIE_PLAYED_FULL; else nPlayed = movieManager.Play ("startb.mve", MOVIE_REQUIRED, 0, gameOpts->movies.bResize); } else { movieManager.PlayIntro (); } if (!bSongPlaying) songManager.Play (SONG_TITLE, 1); } return (nPlayed != MOVIE_NOT_PLAYED); //default is not nPlayed }
void OglInitAttributes (void) { int t; /***/LogErr ("setting OpenGL attributes\n"); OglSetAttribute ("-gl_red", "SDL_GL_RED_SIZE", SDL_GL_RED_SIZE, 8); OglSetAttribute ("-gl_green", "SDL_GL_GREEN_SIZE", SDL_GL_GREEN_SIZE, 8); OglSetAttribute ("-gl_blue", "SDL_GL_BLUE_SIZE", SDL_GL_BLUE_SIZE, 8); OglSetAttribute ("-gl_alpha", "SDL_GL_ALPHA_SIZE", SDL_GL_ALPHA_SIZE, 8); OglSetAttribute ("-gl_buffer", "SDL_GL_BUFFER_SIZE", SDL_GL_BUFFER_SIZE, 32); OglSetAttribute ("-gl_stencil", "SDL_GL_STENCIL_SIZE", SDL_GL_STENCIL_SIZE, 8); if ((t = FindArg ("-gl_depth")) && Args [t+1]) { gameStates.ogl.nDepthBits = atoi (Args [t + 1]); if (gameStates.ogl.nDepthBits <= 0) gameStates.ogl.nDepthBits = 24; else if (gameStates.ogl.nDepthBits > 24) gameStates.ogl.nDepthBits = 24; OglSetAttribute (NULL, "SDL_GL_DEPTH_SIZE", SDL_GL_DEPTH_SIZE, gameStates.ogl.nDepthBits); OglSetAttribute (NULL, "SDL_GL_STENCIL_SIZE", SDL_GL_STENCIL_SIZE, 8); } OglSetAttribute (NULL, "SDL_GL_ACCUM_RED_SIZE", SDL_GL_ACCUM_RED_SIZE, 5); OglSetAttribute (NULL, "SDL_GL_ACCUM_GREEN_SIZE", SDL_GL_ACCUM_GREEN_SIZE, 5); OglSetAttribute (NULL, "SDL_GL_ACCUM_BLUE_SIZE", SDL_GL_ACCUM_BLUE_SIZE, 5); OglSetAttribute (NULL, "SDL_GL_ACCUM_ALPHA_SIZE", SDL_GL_ACCUM_ALPHA_SIZE, 5); OglSetAttribute (NULL, "SDL_GL_DOUBLEBUFFER", SDL_GL_DOUBLEBUFFER, 1); }
void digi_set_midi_volume( int mvolume ) { char buf[128]; if(FindArg("-nomusic")) return; sprintf(buf,"v%i",mvolume); send_ipc(buf); }
/* assume parameter following tag is hexadecimal (0x unnecessary) */ int LongHexArg( const char *tag, int deflt ) { const char *parm = FindArg( tag ); if( parm ) return strtoul( parm, NULL, 16 ); else return deflt; }
int CCommand::FindArgInt( const char *pName, int nDefaultVal ) const { const char *pVal = FindArg( pName ); if ( pVal ) return atoi( pVal ); else return nDefaultVal; }
int LongArg( const char *tag, int deflt ) { const char *parm = FindArg( tag ); if( parm ) return atol( parm ); else return deflt; }
int com_init(void) { //edited 02/06/99 Matt Mueller - allow selection of different devices char *modem=MODEMDEVICE; int t; if ((t = FindArg( "-serialdevice" ))) { modem=Args[t+1]; } //edited 03/05/99 Matt Mueller - allow reading from different device if ((t = FindArg( "-serialread" ))) { char *readpipe=NULL; readpipe=Args[t+1]; rfd=open(readpipe, O_RDONLY | O_NOCTTY | O_NONBLOCK); if (rfd < 0) { perror(readpipe); return -1; } }else rfd=-1; if (commlib_initialised) return -1; fd=open(modem, (rfd<0?O_RDWR:O_WRONLY) | O_NOCTTY); if (fd < 0) { perror(modem); return -1; } if (rfd<0) rfd=fd; //end edit -MM //end edit -MM tcgetattr(fd, &oldtio); bzero(&newtio, sizeof(newtio)); newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD; newtio.c_iflag = IGNPAR; newtio.c_oflag = 0; /* set input mode (non-canonical, no echo,...) */ newtio.c_lflag = 0; newtio.c_cc[VTIME] = 0; /* inter-character timer unused */ newtio.c_cc[VMIN] = 0; /* don't block on reads */ tcflush(fd, TCIFLUSH); tcsetattr(fd, TCSANOW, &newtio); atexit(com_done); commlib_initialised=1; return 0; }
void RBAInit() { int d, i, j; char szDrive [FILENAME_LEN], sz [FILENAME_LEN]; if (initialised) return; if (FindArg("-nocdrom")) return; if (SDL_Init(SDL_INIT_CDROM) < 0) { Warning(TXT_SDL_INIT_LIB,SDL_GetError()); return; } if ((j = SDL_CDNumDrives()) == 0) { Warning(TXT_CDROM_NONE); return; } d = 0; if ((i = FindArg ("-cdrom")) && *Args [++i]) { #ifdef _WIN32 sprintf (szDrive, "%c:\\", *Args [i]); #else strncpy (szDrive, Args [i], sizeof (szDrive)); #endif strlwr (szDrive); for (i = 0; i < j; i++) { strcpy (sz, SDL_CDName (i)); strlwr (sz); if (!strcmp (szDrive, sz)) { d = i; break; } } } if (!(s_cd = SDL_CDOpen(d))) { Warning(TXT_CDROM_OPEN); return; } atexit(RBAExit); initialised = 1; }
void EvalMenuArgs (void) { int t; if (!gameStates.app.bNostalgia) { if ((t = FindArg ("-menustyle"))) gameOptions [0].menus.nStyle = NumArg (t, 1); else gameOptions [0].menus.nStyle = 1; } if ((t = FindArg ("-fademenus"))) gameOptions [0].menus.nFade = NumArg (t, 0); if ((t = FindArg ("-altbg_alpha")) && *pszArgList [t+1]) { gameOptions [0].menus.altBg.alpha = atof (pszArgList [t+1]); if (gameOptions [0].menus.altBg.alpha < 0) gameOptions [0].menus.altBg.alpha = -1.0; else if ((gameOptions [0].menus.altBg.alpha == 0) || (gameOptions [0].menus.altBg.alpha > 1.0)) gameOptions [0].menus.altBg.alpha = 1.0; } if ((t = FindArg ("-altbg_brightness")) && *pszArgList [t+1]) { gameOptions [0].menus.altBg.brightness = atof (pszArgList [t+1]); if ((gameOptions [0].menus.altBg.brightness <= 0) || (gameOptions [0].menus.altBg.brightness > 1.0)) gameOptions [0].menus.altBg.brightness = 1.0; } if ((t = FindArg ("-altbg_grayscale"))) gameOptions [0].menus.altBg.grayscale = NumArg (t, 1); if ((t = FindArg ("-altbg_name")) && *pszArgList [t+1]) strncpy (gameOptions [0].menus.altBg.szName, pszArgList [t+1], sizeof (gameOptions [0].menus.altBg.szName)); if ((t = FindArg ("-use_swapfile"))) gameStates.app.bUseSwapFile = NumArg (t, 1); }
int CCommand::FindIntArg( const char* pszArgument, const int iDefault ) const { const char* pszValue = FindArg( pszArgument ); if( !pszValue ) return iDefault; return atoi( pszValue ); }
int OglVideoModeOK (int w, int h) { int nColorBits = SDL_VideoModeOK (w, h, FindArg ("-gl_16bpp") ? 16 : 32, SDL_VIDEO_FLAGS); LogErr ("SDL suggests %d bits/pixel\n", nColorBits); if (!nColorBits) return 0; gameStates.ogl.nColorBits = nColorBits; return 1; }
int IpxInit (int socket_number) { int i; if ((i = FindArg ("-ipxnetwork")) && pszArgList[i + 1]) { ulong n = strtol (pszArgList[i + 1], NULL, 16); for (i = 3; i >= 0; i--, n >>= 8) ipx_MyAddress [i] = n & 0xff; }
void SongsInit () { int i, bD1Songs; char *p, inputline [81]; CFILE cf; if (gameData.songs.bInitialized) return; CFUseD1HogFile ("descent.hog"); for (i = 0, bD1Songs = 0; bD1Songs < 2; bD1Songs++) { if (!FindArg ("-nomixer")) CD_blast_mixer (); // Crank it! if (CFExist ("descent.sng", gameFolders.szDataDir, bD1Songs)) { // mac (demo?) datafiles don't have the .sng file if (!CFOpen (&cf, "descent.sng", gameFolders.szDataDir, "rb", bD1Songs)) { if (bD1Songs) break; else Error ("Couldn't open descent.sng"); } while (CFGetS (inputline, 80, &cf)) { if ((p = strchr (inputline,'\n'))) *p = '\0'; if (*inputline) { Assert(i < MAX_NUM_SONGS); if (3 == sscanf (inputline, "%s %s %s", gameData.songs.info [i].filename, gameData.songs.info [i].melodicBankFile, gameData.songs.info [i].drumBankFile)) { if (!gameData.songs.nFirstLevelSong [bD1Songs] && strstr (gameData.songs.info [i].filename, "game01.hmp")) gameData.songs.nFirstLevelSong [bD1Songs] = i; if (bD1Songs && strstr (gameData.songs.info [i].filename, "endlevel.hmp")) gameData.songs.nD1EndLevelSong = i; i++; } } } gameData.songs.nSongs [bD1Songs] = i; gameData.songs.nLevelSongs [bD1Songs] = gameData.songs.nSongs [bD1Songs] - gameData.songs.nFirstLevelSong [bD1Songs]; if (!gameData.songs.nFirstLevelSong [bD1Songs]) Error ("Descent 1 songs are missing."); CFClose(&cf); } gameData.songs.nTotalSongs = i; gameData.songs.bInitialized = 1; // RBA Hook if (!gameOpts->sound.bUseRedbook) gameStates.sound.bRedbookEnabled = 0; else { // use redbook RBAInit (); if (RBAEnabled ()) { SetRedbookVolume(gameConfig.nRedbookVolume); RBARegisterCD (); } } atexit(RBAStop); // stop song on exit } }
void EvalMovieArgs (void) { int t; if ((t = FindArg ("-nomovies"))) { gameOptions [0].movies.nLevel = 2 - NumArg (t, 2); if (gameOptions [0].movies.nLevel < 0) gameOptions [0].movies.nLevel = 0; else if (gameOptions [0].movies.nLevel > 2) gameOptions [0].movies.nLevel = 2; } if (FindArg ("-subtitles")) gameOptions [0].movies.bSubTitles = NumArg (t, 1); if ((t = FindArg ("-movie_quality"))) gameOptions [0].movies.nQuality = NumArg (t, 0); if (gameData.multiplayer.autoNG.bValid) gameOptions [0].movies.nLevel = 0; }
void EvalOglArgs (void) { int t; #if DBG if ((t = FindArg ("-gl_alttexmerge"))) gameOpts->ogl.bGlTexMerge = NumArg (t, 1); #endif if ((t = FindArg ("-lowmem"))) ogl.m_states.bLowMemory = NumArg (t, 1); if ((t = FindArg ("-preload_textures"))) ogl.m_states.nPreloadTextures = NumArg (t, 3); else ogl.m_states.nPreloadTextures = 5; if ((t = FindArg ("-FSAA"))) ogl.m_states.bFSAA = NumArg (t, 1); if ((t = FindArg ("-quad_buffering"))) ogl.m_states.bQuadBuffering = NumArg (t, 1); }
int OglSetAttribute (char *szSwitch, char *szAttr, SDL_GLattr attr, int value) { int i; if (szSwitch && (i = FindArg (szSwitch)) && Args [i + 1]) attr = (SDL_GLattr) atoi (Args [i + 1]); i = SDL_GL_SetAttribute (attr, value); /***/LogErr (" setting %s to %d %s\n", szAttr, value, (i == -1) ? "failed" : "succeeded"); return i; }