// -------- // I_InitCD // Init CD Audio subsystem // -------- void I_InitCD (void) { MCI_SET_PARMS mciSet; MCIERROR iErr; int i; // We don't have an open device yet m_MCIOpen.wDeviceID = 0; m_nTracksCount = 0; cdaudio_started = false; m_MCIOpen.lpstrDeviceType = (LPCTSTR)MCI_DEVTYPE_CD_AUDIO; iErr = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID, (DWORD_PTR)&m_MCIOpen); if (iErr) { MCIErrorMessageBox (iErr); return; } // Set the time format to track/minute/second/frame (TMSF). mciSet.dwTimeFormat = MCI_FORMAT_TMSF; iErr = mciSendCommand(m_MCIOpen.wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD_PTR)&mciSet); if (iErr) { MCIErrorMessageBox (iErr); mciSendCommand(m_MCIOpen.wDeviceID, MCI_CLOSE, 0, 0); return; } I_AddExitFunc (I_ShutdownCD); cdaudio_started = true; CONS_Printf ("I_InitCD: CD Audio started\n"); // last saved in config.cfg i = cd_volume.value; //I_SetVolumeCD (0); // initialize to 0 for some odd cd drivers I_SetVolumeCD (i); // now set the last saved volume for (i = 0; i < MAX_CD_TRACKS; i++) cdRemap[i] = (UINT8)i; if (!CD_ReadTrackInfo()) { CONS_Printf("\2I_InitCD: no CD in player.\n"); cdEnabled = false; cdValid = false; } else { cdEnabled = true; cdValid = true; } COM_AddCommand ("cd", Command_Cd_f); }
static inline void I_InitUPnP(void) { struct UPNPDev * devlist = NULL; int upnp_error = -2; CONS_Printf(M_GetText("Looking for UPnP Internet Gateway Device\n")); devlist = upnpDiscover(2000, NULL, NULL, 0, false, &upnp_error); if (devlist) { struct UPNPDev *dev = devlist; char * descXML; int descXMLsize = 0; while (dev) { if (strstr (dev->st, "InternetGatewayDevice")) break; dev = dev->pNext; } if (!dev) dev = devlist; /* defaulting to first device */ CONS_Printf(M_GetText("Found UPnP device:\n desc: %s\n st: %s\n"), dev->descURL, dev->st); UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr)); CONS_Printf(M_GetText("Local LAN IP address: %s\n"), lanaddr); descXML = miniwget(dev->descURL, &descXMLsize); if (descXML) { parserootdesc(descXML, descXMLsize, &data); free(descXML); descXML = NULL; memset(&urls, 0, sizeof(struct UPNPUrls)); memset(&data, 0, sizeof(struct IGDdatas)); GetUPNPUrls(&urls, &data, dev->descURL); I_AddExitFunc(I_ShutdownUPnP); } freeUPNPDevlist(devlist); } else if (upnp_error == UPNPDISCOVER_SOCKET_ERROR) { CONS_Printf(M_GetText("No UPnP devices discovered\n")); } }
// ----------------- // I_StartupGraphics // Initialize video mode, setup dynamic screen size variables, // and allocate screens. // ----------------- void I_StartupGraphics(void) { if (graphics_started) return; #ifdef HWRENDER else if (M_CheckParm("-opengl")) rendermode = render_opengl; else #endif rendermode = render_soft; if (dedicated) rendermode = render_none; else VID_Init(); // register exit code for graphics I_AddExitFunc(I_ShutdownGraphics); if (!dedicated) graphics_started = true; }
// // I_InitNetwork // Only required for DOS, so this is more a dummy // boolean I_InitNetwork(void) { #ifdef HAVE_SDLNET char serverhostname[255]; boolean ret = false; SDL_version SDLcompiled; const SDL_version *SDLlinked = SDLNet_Linked_Version(); SDL_NET_VERSION(&SDLcompiled) CONS_Printf("Compiled for SDL_Net version: %d.%d.%d\n", SDLcompiled.major, SDLcompiled.minor, SDLcompiled.patch); CONS_Printf("Linked with SDL_Net version: %d.%d.%d\n", SDLlinked->major, SDLlinked->minor, SDLlinked->patch); //if (!M_CheckParm ("-sdlnet")) // return false; // initilize the driver I_InitSDLNetDriver(); I_AddExitFunc(I_ShutdownSDLNetDriver); if (!init_SDLNet_driver) return false; if (M_CheckParm("-udpport")) { if (M_IsNextParm()) sock_port = (UINT16)atoi(M_GetNextParm()); else sock_port = 0; } // parse network game options, if (M_CheckParm("-server") || dedicated) { server = true; // If a number of clients (i.e. nodes) is specified, the server will wait for the clients // to connect before starting. // If no number is specified here, the server starts with 1 client, and others can join // in-game. // Since Boris has implemented join in-game, there is no actual need for specifying a // particular number here. // FIXME: for dedicated server, numnodes needs to be set to 0 upon start /* if (M_IsNextParm()) doomcom->numnodes = (INT16)atoi(M_GetNextParm()); else */if (dedicated) doomcom->numnodes = 0; else doomcom->numnodes = 1; if (doomcom->numnodes < 0) doomcom->numnodes = 0; if (doomcom->numnodes > MAXNETNODES) doomcom->numnodes = MAXNETNODES; // server servernode = 0; // FIXME: // ??? and now ? // server on a big modem ??? 4*isdn net_bandwidth = 16000; hardware_MAXPACKETLENGTH = INETPACKETLENGTH; ret = true; } else if (M_CheckParm("-connect")) { if (M_IsNextParm()) strcpy(serverhostname, M_GetNextParm()); else serverhostname[0] = 0; // assuming server in the LAN, use broadcast to detect it // server address only in ip if (serverhostname[0]) { COM_BufAddText("connect \""); COM_BufAddText(serverhostname); COM_BufAddText("\"\n"); // probably modem hardware_MAXPACKETLENGTH = INETPACKETLENGTH; } else { // so we're on a LAN COM_BufAddText("connect any\n"); net_bandwidth = 800000; hardware_MAXPACKETLENGTH = MAXPACKETLENGTH; } } mypacket.maxlen = hardware_MAXPACKETLENGTH; I_NetOpenSocket = NET_OpenSocket; I_Ban = NET_Ban; I_ClearBans = NET_ClearBans; I_GetNodeAddress = NET_GetNodeAddress; I_GetBenAddress = NET_GetBenAddress; I_SetBanAddress = NET_SetBanAddress; bannednode = NET_bannednode; return ret; #else if ( M_CheckParm ("-net") ) { I_Error("-net not supported, use -server and -connect\n" "see docs for more\n"); } return false; #endif }