void R_Modules_Restart(void) { Host_StartVideo(); Con_Print("restarting renderer\n"); R_Modules_Shutdown(); R_Modules_Start(); }
static void CD_f (void) { const char *command; #ifdef MAXTRACKS int ret; int n; #endif command = Cmd_Argv (1); if (strcasecmp(command, "remap") != 0) Host_StartVideo(); if (strcasecmp(command, "on") == 0) { enabled = true; return; } if (strcasecmp(command, "off") == 0) { CDAudio_Stop(); enabled = false; return; } if (strcasecmp(command, "reset") == 0) { enabled = true; CDAudio_Stop(); #ifdef MAXTRACKS for (n = 0; n < MAXTRACKS; n++) *remap[n] = 0; // empty string, that is, unremapped #endif CDAudio_GetAudioDiskInfo(); return; } if (strcasecmp(command, "rescan") == 0) { CDAudio_Shutdown(); CDAudio_Startup(); return; } if (strcasecmp(command, "remap") == 0) { #ifdef MAXTRACKS ret = Cmd_Argc() - 2; if (ret <= 0) { for (n = 1; n < MAXTRACKS; n++) if (*remap[n]) Con_Printf(" %u -> %s\n", n, remap[n]); return; } for (n = 1; n <= ret; n++) strlcpy(remap[n], Cmd_Argv (n+1), sizeof(*remap)); #endif return; } if (strcasecmp(command, "close") == 0) { CDAudio_CloseDoor(); return; } if (strcasecmp(command, "play") == 0) { if (music_playlist_index.integer >= 0) return; CDAudio_Play_byName(Cmd_Argv (2), false, true, 0); return; } if (strcasecmp(command, "loop") == 0) { if (music_playlist_index.integer >= 0) return; CDAudio_Play_byName(Cmd_Argv (2), true, true, 0); return; } if (strcasecmp(command, "stop") == 0) { if (music_playlist_index.integer >= 0) return; CDAudio_Stop(); return; } if (strcasecmp(command, "pause") == 0) { if (music_playlist_index.integer >= 0) return; CDAudio_Pause(); return; } if (strcasecmp(command, "resume") == 0) { if (music_playlist_index.integer >= 0) return; CDAudio_Resume(); return; } if (strcasecmp(command, "eject") == 0) { if (faketrack == -1) CDAudio_Stop(); CDAudio_Eject(); cdValid = false; return; } if (strcasecmp(command, "info") == 0) { CDAudio_GetAudioDiskInfo (); if (cdValid) Con_Printf("%u tracks on CD.\n", maxTrack); else Con_Print ("No CD in player.\n"); if (cdPlaying) Con_Printf("Currently %s track %u\n", cdPlayLooping ? "looping" : "playing", cdPlayTrack); else if (wasPlaying) Con_Printf("Paused %s track %u\n", cdPlayLooping ? "looping" : "playing", cdPlayTrack); if (cdvolume >= 0) Con_Printf("Volume is %f\n", cdvolume); else Con_Printf("Can't get CD volume\n"); return; } Con_Printf("CD commands:\n"); Con_Printf("cd on - enables CD audio system\n"); Con_Printf("cd off - stops and disables CD audio system\n"); Con_Printf("cd reset - resets CD audio system (clears track remapping and re-reads disc information)\n"); Con_Printf("cd rescan - rescans disks in drives (to use another disc)\n"); Con_Printf("cd remap <remap1> [remap2] [remap3] [...] - chooses (possibly emulated) CD tracks to play when a map asks for a particular track, this has many uses\n"); Con_Printf("cd close - closes CD tray\n"); Con_Printf("cd eject - stops playing music and opens CD tray to allow you to change disc\n"); Con_Printf("cd play <tracknumber> - plays selected track in remapping table\n"); Con_Printf("cd loop <tracknumber> - plays and repeats selected track in remapping table\n"); Con_Printf("cd stop - stops playing current CD track\n"); Con_Printf("cd pause - pauses CD playback\n"); Con_Printf("cd resume - unpauses CD playback\n"); Con_Printf("cd info - prints basic disc information (number of tracks, currently playing track, volume level)\n"); }
void CDAudio_Play_byName (const char *trackname, qboolean looping, qboolean tryreal, float startposition) { unsigned int track; sfx_t* sfx; char filename[MAX_QPATH]; Host_StartVideo(); if (!enabled) return; if(tryreal && strspn(trackname, "0123456789") == strlen(trackname)) { track = (unsigned char) atoi(trackname); #ifdef MAXTRACKS if(track > 0 && track < MAXTRACKS) if(*remap[track]) { if(strspn(remap[track], "0123456789") == strlen(remap[track])) { trackname = remap[track]; } else { // ignore remappings to fake tracks if we're going to play a real track switch(cdaudio.integer) { case 0: // we never access CD case 1: // we have a replacement trackname = remap[track]; break; case 2: // we only use fake track replacement if CD track is invalid CDAudio_GetAudioDiskInfo(); if(!cdValid || track > maxTrack) trackname = remap[track]; break; case 3: // we always play from CD - ignore this remapping then case 4: // we randomize anyway break; } } } #endif } if(tryreal && strspn(trackname, "0123456789") == strlen(trackname)) { track = (unsigned char) atoi(trackname); if (track < 1) { Con_DPrintf("CDAudio: Bad track number %u.\n", track); return; } } else track = 0; // div0: I assume this code was intentionally there. Maybe turn it into a cvar? if (cdPlaying && cdPlayTrack == track && faketrack == -1) return; CDAudio_Stop (); if(track >= 1) { if(cdaudio.integer == 3) // only play real CD tracks at all { if(CDAudio_Play_real(track, looping, true)) goto success; return; } if(cdaudio.integer == 2) // prefer real CD track over fake { if(CDAudio_Play_real(track, looping, false)) goto success; } } if(cdaudio.integer == 4) // only play real CD tracks, EVEN instead of fake tracks! { if(CDAudio_Play_real(track, looping, false)) goto success; if(cdValid && maxTrack > 0) { track = 1 + (rand() % maxTrack); if(CDAudio_Play_real(track, looping, true)) goto success; } else { Con_DPrint ("No CD in player.\n"); } return; } // Try playing a fake track (sound file) first if(track >= 1) { dpsnprintf(filename, sizeof(filename), "sound/cdtracks/track%03u.wav", track); if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/cdtracks/track%03u.ogg", track); if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "music/track%03u.ogg", track);// added by motorsep if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "music/cdtracks/track%03u.ogg", track);// added by motorsep if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/cdtracks/track%02u.wav", track); if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/cdtracks/track%02u.ogg", track); if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "music/track%02u.ogg", track);// added by motorsep if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "music/cdtracks/track%02u.ogg", track);// added by motorsep } else { dpsnprintf(filename, sizeof(filename), "%s", trackname); if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "%s.wav", trackname); if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "%s.ogg", trackname); if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/%s", trackname); if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/%s.wav", trackname); if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/%s.ogg", trackname); if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/cdtracks/%s", trackname); if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/cdtracks/%s.wav", trackname); if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/cdtracks/%s.ogg", trackname); if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "music/%s.ogg", trackname); // added by motorsep if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "music/cdtracks/%s.ogg", trackname); // added by motorsep } if (FS_FileExists(filename) && (sfx = S_PrecacheSound (filename, false, true))) { faketrack = S_StartSound_StartPosition (-1, 0, sfx, vec3_origin, cdvolume, 0, startposition); if (faketrack != -1) { if (looping) S_SetChannelFlag (faketrack, CHANNELFLAG_FORCELOOP, true); S_SetChannelFlag (faketrack, CHANNELFLAG_FULLVOLUME, true); S_SetChannelFlag (faketrack, CHANNELFLAG_LOCALSOUND, true); // not pausable if(track >= 1) { if(cdaudio.integer != 0) // we don't need these messages if only fake tracks can be played anyway Con_DPrintf ("Fake CD track %u playing...\n", track); } else Con_DPrintf ("BGM track %s playing...\n", trackname); } } // If we can't play a fake CD track, try the real one if (faketrack == -1) { if(cdaudio.integer == 0 || track < 1) { Con_Print("Could not load BGM track.\n"); return; } else { if(!CDAudio_Play_real(track, looping, true)) return; } } success: cdPlayLooping = looping; cdPlayTrack = track; cdPlaying = true; if (cdvolume == 0.0 || bgmvolume.value == 0) CDAudio_Pause (); }
/* =============== SCR_BeginLoadingPlaque ================ */ void SCR_BeginLoadingPlaque (void) { Host_StartVideo(); R_LoadingScreen(); }