From 51d8328ad962b9873de4d1d466edce354e55b0fd Mon Sep 17 00:00:00 2001 From: Taylor Richards Date: Tue, 19 Nov 2013 12:35:25 -0500 Subject: [PATCH] remove CDROM stuff add "ExtrasPath" ini option for other data location --- include/cfile.h | 7 +- include/cfilesystem.h | 2 +- include/cutscenes.h | 2 - include/freespace.h | 38 - src/cfile/cfile.cpp | 29 +- src/cfile/cfilesystem.cpp | 10 +- src/cutscene/cutscenes.cpp | 90 --- src/freespace2/freespace.cpp | 1068 +++++++--------------------- src/menuui/readyroom.cpp | 14 +- src/missionui/missionbrief.cpp | 7 +- src/missionui/missiondebrief.cpp | 7 +- src/missionui/missionloopbrief.cpp | 20 +- src/missionui/redalert.cpp | 13 +- src/network/multiui.cpp | 12 - 14 files changed, 300 insertions(+), 1019 deletions(-) diff --git a/include/cfile.h b/include/cfile.h index 41c5dd3..cc9a828 100644 --- a/include/cfile.h +++ b/include/cfile.h @@ -437,12 +437,7 @@ extern char Cfile_user_dir[CFILE_ROOT_DIRECTORY_LEN]; //================= LOW-LEVEL FUNCTIONS ================== // Call this once at the beginning of the program -int cfile_init(const char *cdrom_dir = NULL); - -// Call this if pack files got added or removed or the -// cdrom changed. This will refresh the list of filenames -// stored in packfiles and on the cdrom. -void cfile_refresh(); +int cfile_init(const char *extras_dir = NULL); // add an extension to a filename if it doesn't already have it char *cf_add_ext(const char *filename, const char *ext); diff --git a/include/cfilesystem.h b/include/cfilesystem.h index ca34bb5..c5a3ef8 100644 --- a/include/cfilesystem.h +++ b/include/cfilesystem.h @@ -55,7 +55,7 @@ #define _CFILESYSTEM_H // Builds a list of all the files -void cf_build_secondary_filelist( const char *cdrom_path ); +void cf_build_secondary_filelist( const char *extras_path ); void cf_free_secondary_filelist(); // Internal stuff diff --git a/include/cutscenes.h b/include/cutscenes.h index 7d66202..a3b5dcd 100644 --- a/include/cutscenes.h +++ b/include/cutscenes.h @@ -77,14 +77,12 @@ extern int Cutscenes_viewable; // initializa table data void cutscene_init(); void cutscene_tbl_close(); -int cutscene_get_cd_num(char *filename); void cutscenes_screen_init(); void cutscenes_screen_close(); void cutscenes_screen_do_frame(); -int cutscenes_validate_cd(const char *mve_name, int prompt_for_cd = 1); void cutscene_mark_viewable(const char *filename); #endif diff --git a/include/freespace.h b/include/freespace.h index 63d7053..a924a1b 100644 --- a/include/freespace.h +++ b/include/freespace.h @@ -169,33 +169,6 @@ #define FS_CAMPAIGN_FILE_EXT NOX(".fc2") #endif -// CDROM volume names -#ifdef MULTIPLAYER_BETA_BUILD - #define FS_CDROM_VOLUME_1 NOX("FS2_BETA") - #define FS_CDROM_VOLUME_2 NOX("FS2_BETA") -#elif defined(E3_BUILD) - #define FS_CDROM_VOLUME_1 NOX("FS2_E3DEMO") - #define FS_CDROM_VOLUME_2 NOX("FS2_E3DEMO") -#elif defined(OEM_BUILD) - #define FS_CDROM_VOLUME_1 NOX("FS2_OEM") - #define FS_CDROM_VOLUME_2 NOX("FS2_OEM") - #define FS_CDROM_VOLUME_3 NOX("FS2_OEM") -#else -#ifdef MAKE_FS1 - #define FS_CDROM_VOLUME_1 NOX("FREESPACE_1") - #define FS_CDROM_VOLUME_2 NOX("FREESPACE_2") -#else - #define FS_CDROM_VOLUME_1 NOX("FREESPACE2_1") - #define FS_CDROM_VOLUME_2 NOX("FREESPACE2_2") - #define FS_CDROM_VOLUME_3 NOX("FREESPACE2_3") -#endif - - // old volume names - // #define FS_CDROM_VOLUME_1 NOX("FREESPACE_1") - // #define FS_CDROM_VOLUME_2 NOX("FREESPACE_2") - // #define FS_CDROM_VOLUME_3 NOX("FREESPACE_3") -#endif - // frametime/missiontime variables extern fix Frametime; extern float flFrametime; @@ -220,9 +193,6 @@ extern int Game_subspace_effect; // The current mission being played. extern char Game_current_mission_filename[MAX_FILENAME_LEN]; -// game's CDROM directory -extern char Game_CDROM_dir[MAX_PATH_LEN]; - // if the ships.tbl the player has is valid extern int Game_ships_tbl_valid; @@ -248,7 +218,6 @@ extern int Game_weapons_tbl_valid; typedef struct fs_builtin_mission { char filename[MAX_FILENAME_LEN]; int flags; // see FSB_* defines above - char cd_volume[MAX_FILENAME_LEN]; // cd volume which this needs } fs_builtin_mission; @@ -350,13 +319,6 @@ void game_shudder_apply(int time, float intensity); //=================================================================== -// make sure a CD is in the drive before continuing (returns 1 to continue, otherwise 0). -int game_do_cd_check(const char *volume_name = NULL); -int game_do_cd_check_specific(const char *volume_name, int cdnum); -int find_freespace_cd(const char *volume_name = NULL); -int set_cdrom_path(int drive_num); -int game_do_cd_mission_check(const char *filename); - // Used to tell the player that a feature isn't available in the demo version of FreeSpace void game_feature_not_in_demo_popup(); diff --git a/src/cfile/cfile.cpp b/src/cfile/cfile.cpp index 2aa4ed0..9bb07a4 100644 --- a/src/cfile/cfile.cpp +++ b/src/cfile/cfile.cpp @@ -342,8 +342,6 @@ char Cfile_stack[128][CFILE_STACK_MAX]; Cfile_block Cfile_block_list[MAX_CFILE_BLOCKS]; CFILE Cfile_list[MAX_CFILE_BLOCKS]; -char *Cfile_cdrom_dir = NULL; - // // Function prototypes for internally-called functions // @@ -398,7 +396,7 @@ int cfile_in_root_dir(char *exe_path) // returns: success ==> 0 // error ==> non-zero // -int cfile_init(const char *cdrom_dir) +int cfile_init(const char *extras_dir) { int i; @@ -417,9 +415,13 @@ int cfile_init(const char *cdrom_dir) Cfile_block_list[i].type = CFILE_BLOCK_UNUSED; } - Cfile_cdrom_dir = (char *)cdrom_dir; + const char *extras_dir = os_config_read_string(NULL, "ExtrasPath", NULL); + + if ( extras_dir && (strlen(extras_dir) >= MAX_PATH_LEN) ) { + extras_dir = NULL; + } - cf_build_secondary_filelist(Cfile_cdrom_dir); + cf_build_secondary_filelist(extras_dir); // 32 bit CRC table init cf_chksum_long_init(); @@ -432,14 +434,6 @@ int cfile_init(const char *cdrom_dir) return 0; } -// Call this if pack files got added or removed or the -// cdrom changed. This will refresh the list of filenames -// stored in packfiles and on the cdrom. -void cfile_refresh() -{ - cf_build_secondary_filelist(Cfile_cdrom_dir); -} - // Changes to a drive if valid.. 1=A, 2=B, etc // If flag, then changes to it. @@ -760,8 +754,6 @@ void cf_create_directory( int dir_type ) } -extern int game_cd_changed(); - // cfopen() // // parameters: *filepath ==> name of file to open (may be path+name) @@ -785,13 +777,6 @@ CFILE *cfopen(const char *file_path, const char *mode, int type, int dir_type, b // nprintf(("CFILE", "CFILE -- trying to open %s\n", file_path )); // #if !defined(MULTIPLAYER_BETA_BUILD) && !defined(FS2_DEMO) -// we no longer need to do this, and on machines with crappy-ass drivers it can slow things down horribly. -#if 0 - if ( game_cd_changed() ) { - cfile_refresh(); - } -#endif - //================================================ // Check that all the parameters make sense Assert(file_path && strlen(file_path)); diff --git a/src/cfile/cfilesystem.cpp b/src/cfile/cfilesystem.cpp index e498080..e24f298 100644 --- a/src/cfile/cfilesystem.cpp +++ b/src/cfile/cfilesystem.cpp @@ -471,7 +471,7 @@ void cf_build_pack_list( cf_root *root ) } -void cf_build_root_list(const char *cdrom_dir) +void cf_build_root_list(const char *extras_dir) { Num_roots = 0; @@ -510,9 +510,9 @@ void cf_build_root_list(const char *cdrom_dir) //====================================================== // Check the real CD if one... - if ( cdrom_dir && strlen(cdrom_dir) ) { + if ( extras_dir && strlen(extras_dir) ) { root = cf_create_root(); - strcpy( root->path, cdrom_dir ); + strcpy( root->path, extras_dir ); root->roottype = CF_ROOTTYPE_PATH; //====================================================== @@ -776,7 +776,7 @@ void cf_build_file_list() } -void cf_build_secondary_filelist(const char *cdrom_dir) +void cf_build_secondary_filelist(const char *extras_dir) { int i; @@ -807,7 +807,7 @@ void cf_build_secondary_filelist(const char *cdrom_dir) mprintf(( "Building file index...\n" )); // build the list of searchable roots - cf_build_root_list(cdrom_dir); + cf_build_root_list(extras_dir); // build the list of files themselves cf_build_file_list(); diff --git a/src/cutscene/cutscenes.cpp b/src/cutscene/cutscenes.cpp index 0093050..303d361 100644 --- a/src/cutscene/cutscenes.cpp +++ b/src/cutscene/cutscenes.cpp @@ -257,25 +257,6 @@ void cutscene_tbl_close() } } -// function to return 0 based index of which CD a particular movie is on -// returns -1 on failure. -int cutscenes_get_cd_num( const char *filename ) -{ -#if defined(OEM_BUILD) - return 0; // only 1 cd for OEM -#else - int i; - - for (i = 0; i < Num_cutscenes; i++ ) { - if ( !stricmp(Cutscenes[i].filename, filename) ) { - return (Cutscenes[i].cd - 1); - } - } - - return -1; -#endif // defined(OEM_BUILD) -} - // marks a cutscene as viewable void cutscene_mark_viewable(const char *filename) { @@ -411,77 +392,6 @@ static int Text_line_size[MAX_TEXT_LINES]; static char *Text_lines[MAX_TEXT_LINES]; -int cutscenes_validate_cd(const char *mve_name, int prompt_for_cd) -{ - int cd_present = 0; - int cd_drive_num; - int cd_mve_is_on; - char volume_name[128]; - -#ifdef RELEASE_REAL - int num_attempts = 0; -#endif - - while(1) { - int path_set_ok; - - cd_mve_is_on = cutscenes_get_cd_num(mve_name); - if ((cd_mve_is_on != 0) && (cd_mve_is_on != 1) && (cd_mve_is_on != 2)) { - cd_present = 0; - break; - } - -#if defined(OEM_BUILD) - sprintf(volume_name, NOX("FS2_OEM")); -#else - sprintf(volume_name, NOX("FREESPACE2_%c"), '1' + cd_mve_is_on); -#endif - - - cd_drive_num = find_freespace_cd(volume_name); - path_set_ok = set_cdrom_path(cd_drive_num); - - if ( path_set_ok ) { - cd_present = 1; - break; - } - -#ifdef RELEASE_REAL - if ( !prompt_for_cd ) { - cd_present = 0; - break; - } - - // no CD found, so prompt user - char popup_msg[256]; - int popup_rval; - -#if defined(DVD_MESSAGE_HACK) - sprintf(popup_msg, XSTR( "Movie not found\n\nInsert FreeSpace DVD to continue", 203)); -#else - sprintf(popup_msg, XSTR( "Movie not found\n\nInsert FreeSpace CD #%d to continue", 203), cd_mve_is_on+1); -#endif - - popup_rval = popup(PF_BODY_BIG, 2, POPUP_CANCEL, POPUP_OK, popup_msg); - if ( popup_rval != 1 ) { - cd_present = 0; - break; - } - - if ( num_attempts++ > 5 ) { - cd_present = 0; - break; - } -#else - cd_present = 0; - break; -#endif - - } - - return cd_present; -} - void cutscenes_screen_play() { char name[MAX_FILENAME_LEN], *full_name; diff --git a/src/freespace2/freespace.cpp b/src/freespace2/freespace.cpp index 7d90176..e01acf6 100644 --- a/src/freespace2/freespace.cpp +++ b/src/freespace2/freespace.cpp @@ -871,351 +871,351 @@ int Player_multi_died_check = -1; #ifdef FS2_DEMO int Game_builtin_mission_count = 6; fs_builtin_mission Game_builtin_mission_list[MAX_BUILTIN_MISSIONS] = { - { "SPDemo-01.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "SPDemo-02.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "DemoTrain.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "Demo.fc2", (FSB_FROM_VOLITION | FSB_CAMPAIGN_FILE), "" }, - { "MPDemo-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "Demo-DOG-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, + { "SPDemo-01.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "SPDemo-02.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "DemoTrain.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "Demo.fc2", (FSB_FROM_VOLITION | FSB_CAMPAIGN_FILE) }, + { "MPDemo-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "Demo-DOG-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, }; #elif defined(FS1_DEMO) int Game_builtin_mission_count = 5; fs_builtin_mission Game_builtin_mission_list[MAX_BUILTIN_MISSIONS] = { - { "btmdemo.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "demo.fsc", (FSB_FROM_VOLITION | FSB_CAMPAIGN_FILE), "" }, - { "demo01.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "demo02a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "demo02b.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, + { "btmdemo.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "demo.fsc", (FSB_FROM_VOLITION | FSB_CAMPAIGN_FILE) }, + { "demo01.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "demo02a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "demo02b.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, }; #elif defined(PD_BUILD) int Game_builtin_mission_count = 4; fs_builtin_mission Game_builtin_mission_list[MAX_BUILTIN_MISSIONS] = { - { "sm1-01.fs2", (FSB_FROM_VOLITION), "" }, - { "sm1-05.fs2", (FSB_FROM_VOLITION), "" }, - { "sm1-01", (FSB_FROM_VOLITION), "" }, - { "sm1-05", (FSB_FROM_VOLITION), "" }, + { "sm1-01.fs2", (FSB_FROM_VOLITION) }, + { "sm1-05.fs2", (FSB_FROM_VOLITION) }, + { "sm1-01", (FSB_FROM_VOLITION) }, + { "sm1-05", (FSB_FROM_VOLITION) }, }; #elif defined(MULTIPLAYER_BETA) int Game_builtin_mission_count = 17; fs_builtin_mission Game_builtin_mission_list[MAX_BUILTIN_MISSIONS] = { // multiplayer beta - { "md-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "md-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "md-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "md-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "md-05.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "md-06.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "md-07.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mt-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mt-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-05.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "templar-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "templar-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "templar-03a.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "templar-04a.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "templar.fc2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN_FILE), "" }, + { "md-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "md-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "md-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "md-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "md-05.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "md-06.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "md-07.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mt-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mt-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-05.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "templar-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN) }, + { "templar-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN) }, + { "templar-03a.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN) }, + { "templar-04a.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN) }, + { "templar.fc2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN_FILE) }, }; #elif defined(OEM_BUILD) int Game_builtin_mission_count = 17; fs_builtin_mission Game_builtin_mission_list[MAX_BUILTIN_MISSIONS] = { // oem version - act 1 only - { "freespace2oem.fc2", (FSB_FROM_VOLITION | FSB_CAMPAIGN_FILE), "" }, + { "freespace2oem.fc2", (FSB_FROM_VOLITION | FSB_CAMPAIGN_FILE) }, // act 1 - { "sm1-01.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "sm1-02.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "sm1-03.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "sm1-04.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "sm1-05.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "sm1-06.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "sm1-07.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "sm1-08.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "sm1-09.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "sm1-10.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "training-1.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "training-2.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "training-3.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "tsm-104.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "tsm-105.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 }, - { "tsm-106.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_1 } + { "sm1-01.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-02.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-03.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-04.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-05.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-06.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-07.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-08.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-09.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-10.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "training-1.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "training-2.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "training-3.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "tsm-104.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "tsm-105.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "tsm-106.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) } }; #elif defined(MAKE_FS1) int Game_builtin_mission_count = 125; fs_builtin_mission Game_builtin_mission_list[MAX_BUILTIN_MISSIONS] = { // single player campaign - { "freespace.fsc", (FSB_FROM_VOLITION | FSB_CAMPAIGN_FILE), "" }, + { "freespace.fsc", (FSB_FROM_VOLITION | FSB_CAMPAIGN_FILE) }, // act 1 - { "sm1-01.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm1-02a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm1-03a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm1-04a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm1-05a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm1-06a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm1-07a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm1-08a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm1-09a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm1-10a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, + { "sm1-01.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-02a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-03a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-04a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-05a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-06a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-07a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-08a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-09a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-10a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, // act 2 - { "sm2-01a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm2-02a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm2-03a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm2-04a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm2-05a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm2-06a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm2-07a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm2-08a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm2-09a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm2-10a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, + { "sm2-01a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-02a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-03a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-04a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-05a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-06a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-07a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-08a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-09a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-10a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, // act 3 - { "sm3-01a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm3-02a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm3-03a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm3-04a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm3-05a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm3-06a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm3-07a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm3-08a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "sm3-09a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, + { "sm3-01a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-02a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-03a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-04a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-05a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-06a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-07a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-08a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-09a.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, // gauntlet - { "t-gauntlet.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "v-gauntlet.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "s-gauntlet.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, + { "t-gauntlet.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "v-gauntlet.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "s-gauntlet.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, // training - { "btm-01.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "btm-02.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "btm-03.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "btm-04.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, - { "btm-05.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN), "" }, + { "btm-01.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "btm-02.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "btm-03.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "btm-04.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "btm-05.fsm", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, // multiplayer - { "m-hope.fsc", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN_FILE), "" }, - { "m-altair.fsc", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN_FILE), "" }, - - { "m-v-gauntlet.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-va.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-unstoppable.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-t-gauntlet.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-s-gauntlet.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-rescue.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-pain.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-orecovery.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mm3-01a.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mm3-02a.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mm3-03a.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mm3-04a.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mm3-05a.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mm3-06a.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-guardduty.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-gate.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-duel.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-convoyassault.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-clash.fsm", (FSB_FROM_VOLITION | FSB_MULTI), "" }, + { "m-hope.fsc", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN_FILE) }, + { "m-altair.fsc", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN_FILE) }, + + { "m-v-gauntlet.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-va.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-unstoppable.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-t-gauntlet.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-s-gauntlet.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-rescue.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-pain.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-orecovery.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mm3-01a.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mm3-02a.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mm3-03a.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mm3-04a.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mm3-05a.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mm3-06a.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-guardduty.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-gate.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-duel.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-convoyassault.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-clash.fsm", (FSB_FROM_VOLITION | FSB_MULTI) }, // SilentThreat missions // Main SilentThreat campaign - { "SilentThreat.fsc", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN_FILE), "" }, - - { "md-01.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN), "" }, - { "md-02.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN), "" }, - { "md-03.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN), "" }, - { "md-04.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN), "" }, - { "md-05.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN), "" }, - { "md-06.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN), "" }, - { "md-07.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN), "" }, - { "md-08.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN), "" }, - { "md-09.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN), "" }, - { "md-10.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN), "" }, - { "md-11.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN), "" }, - { "md-12.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN), "" }, + { "SilentThreat.fsc", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN_FILE) }, + + { "md-01.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN) }, + { "md-02.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN) }, + { "md-03.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN) }, + { "md-04.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN) }, + { "md-05.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN) }, + { "md-06.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN) }, + { "md-07.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN) }, + { "md-08.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN) }, + { "md-09.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN) }, + { "md-10.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN) }, + { "md-11.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN) }, + { "md-12.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_CAMPAIGN) }, // SilentThreat Part 1 - multi-coop - { "ST-Part1.fsc", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN_FILE), "" }, + { "ST-Part1.fsc", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN_FILE) }, - { "stmm-01.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "stmm-02.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "stmm-03.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN), "" }, + { "stmm-01.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN) }, + { "stmm-02.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN) }, + { "stmm-03.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN) }, // SilentThreat Part 2 - multi-coop - { "ST-Part2.fsc", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN_FILE), "" }, + { "ST-Part2.fsc", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN_FILE) }, - { "stmm-04.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "stmm-05.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "stmm-06.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN), "" }, + { "stmm-04.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN) }, + { "stmm-05.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN) }, + { "stmm-06.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN) }, // SilentThreat Part 3 - multi-coop - { "ST-Part3.fsc", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN_FILE), "" }, + { "ST-Part3.fsc", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN_FILE) }, - { "stmm-07.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "stmm-08.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "stmm-09.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN), "" }, + { "stmm-07.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN) }, + { "stmm-08.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN) }, + { "stmm-09.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN) }, // SilentThreat Part 4 - multi-coop - { "ST-Part4.fsc", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN_FILE), "" }, + { "ST-Part4.fsc", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN_FILE) }, - { "stmm-10.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "stmm-11.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "stmm-12.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN), "" }, + { "stmm-10.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN) }, + { "stmm-11.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN) }, + { "stmm-12.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI | FSB_CAMPAIGN) }, // multiplayer missions - { "mdmm-01.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdmm-02.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdmm-03.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdmm-04.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI), "" }, + { "mdmm-01.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI) }, + { "mdmm-02.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI) }, + { "mdmm-03.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI) }, + { "mdmm-04.fsm", (FSB_FROM_VOLITION | FSB_FROM_MDISK | FSB_MULTI) }, // user supplied missions - { "mdu-02.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-03.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-04.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-05.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-06.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-07.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-08.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-09.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-10.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-11.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-12.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-13.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-14.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-15.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-16.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-17.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-18.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-19.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-20.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-21.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-22.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-23.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-24.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-25.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-26.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-27.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-28.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-29.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-30.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdu-31.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdumm-01.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, - { "mdumm-02.fsm", (FSB_FROM_MDISK | FSB_MULTI), "" }, + { "mdu-02.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-03.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-04.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-05.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-06.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-07.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-08.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-09.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-10.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-11.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-12.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-13.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-14.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-15.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-16.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-17.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-18.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-19.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-20.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-21.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-22.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-23.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-24.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-25.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-26.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-27.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-28.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-29.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-30.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdu-31.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdumm-01.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, + { "mdumm-02.fsm", (FSB_FROM_MDISK | FSB_MULTI) }, }; #else int Game_builtin_mission_count = 92; fs_builtin_mission Game_builtin_mission_list[MAX_BUILTIN_MISSIONS] = { // single player campaign - { "freespace2.fc2", (FSB_FROM_VOLITION | FSB_CAMPAIGN_FILE), "" }, + { "freespace2.fc2", (FSB_FROM_VOLITION | FSB_CAMPAIGN_FILE) }, // act 1 - { "sm1-01.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "sm1-02.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "sm1-03.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "sm1-04.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "sm1-05.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "sm1-06.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "sm1-07.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "sm1-08.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "sm1-09.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "sm1-10.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "loop1-1.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "loop1-2.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "loop1-3.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "training-1.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "training-2.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "training-3.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "tsm-104.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "tsm-105.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, - { "tsm-106.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_2 }, + { "sm1-01.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-02.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-03.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-04.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-05.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-06.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-07.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-08.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-09.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm1-10.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "loop1-1.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "loop1-2.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "loop1-3.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "training-1.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "training-2.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "training-3.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "tsm-104.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "tsm-105.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "tsm-106.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, // act 2 - { "sm2-01.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm2-02.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm2-03.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm2-04.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm2-05.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm2-06.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm2-07.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm2-08.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm2-09.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm2-10.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, + { "sm2-01.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-02.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-03.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-04.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-05.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-06.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-07.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-08.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-09.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm2-10.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, // act 3 - { "sm3-01.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm3-02.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm3-03.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm3-04.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm3-05.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm3-06.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm3-07.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm3-08.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm3-09.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "sm3-10.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "loop2-1.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, - { "loop2-2.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN), FS_CDROM_VOLUME_3 }, + { "sm3-01.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-02.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-03.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-04.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-05.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-06.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-07.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-08.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-09.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "sm3-10.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "loop2-1.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, + { "loop2-2.fs2", (FSB_FROM_VOLITION | FSB_CAMPAIGN) }, // multiplayer missions // gauntlet - { "g-shi.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "g-ter.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "g-vas.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, + { "g-shi.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "g-ter.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "g-vas.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, // coop - { "m-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "m-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, + { "m-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "m-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, // dogfight - { "mdh-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdh-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdh-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdh-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdh-05.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdh-06.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdh-07.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdh-08.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdh-09.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdl-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdl-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdl-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdl-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdl-05.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdl-06.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdl-07.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdl-08.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdl-09.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdm-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdm-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdm-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdm-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdm-05.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdm-06.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdm-07.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdm-08.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mdm-09.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "osdog.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, + { "mdh-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdh-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdh-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdh-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdh-05.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdh-06.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdh-07.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdh-08.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdh-09.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdl-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdl-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdl-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdl-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdl-05.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdl-06.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdl-07.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdl-08.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdl-09.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdm-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdm-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdm-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdm-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdm-05.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdm-06.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdm-07.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdm-08.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mdm-09.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "osdog.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, // TvT - { "mt-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mt-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mt-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mt-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mt-05.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mt-06.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mt-07.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mt-08.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mt-09.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, - { "mt-10.fs2", (FSB_FROM_VOLITION | FSB_MULTI), "" }, + { "mt-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mt-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mt-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mt-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mt-05.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mt-06.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mt-07.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mt-08.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mt-09.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, + { "mt-10.fs2", (FSB_FROM_VOLITION | FSB_MULTI) }, // campaign - { "templar.fc2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN_FILE), "" }, - { "templar-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "templar-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "templar-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN), "" }, - { "templar-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN), "" }, + { "templar.fc2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN_FILE) }, + { "templar-01.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN) }, + { "templar-02.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN) }, + { "templar-03.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN) }, + { "templar-04.fs2", (FSB_FROM_VOLITION | FSB_MULTI | FSB_CAMPAIGN) }, }; #endif @@ -1268,10 +1268,6 @@ static const char *Game_demo_title_screen_fname[GR_NUM_RESOLUTIONS] = { // auto-lang stuff int detect_lang(); -// cdrom stuff -char Game_CDROM_dir[MAX_PATH_LEN]; -int init_cdrom(); - // How much RAM is on this machine. Set in WinMain static int Freespace_total_ram = 0; @@ -2371,7 +2367,7 @@ void game_init() //Initialize the libraries s1 = timer_get_milliseconds(); - if(cfile_init(Game_CDROM_dir)){ // initialize before calling any cfopen stuff!!! + if ( cfile_init() ) { // initialize before calling any cfopen stuff!!! exit(1); } e1 = timer_get_milliseconds(); @@ -4292,12 +4288,7 @@ void game_maybe_do_dead_popup(float frametime) if ( Game_mode & GM_NORMAL ) { switch(choice) { case 0: - // CD CHECK - if(game_do_cd_mission_check(Game_current_mission_filename)){ - gameseq_post_event(GS_EVENT_ENTER_GAME); - } else { - gameseq_post_event(GS_EVENT_MAIN_MENU); - } + gameseq_post_event(GS_EVENT_ENTER_GAME); break; case 1: @@ -4305,12 +4296,7 @@ void game_maybe_do_dead_popup(float frametime) break; case 2: - // CD CHECK - if(game_do_cd_mission_check(Game_current_mission_filename)){ - gameseq_post_event(GS_EVENT_START_GAME); - } else { - gameseq_post_event(GS_EVENT_MAIN_MENU); - } + gameseq_post_event(GS_EVENT_START_GAME); break; // this should only happen during a red alert mission @@ -4318,23 +4304,14 @@ void game_maybe_do_dead_popup(float frametime) // bogus? Assert(The_mission.red_alert); if(!The_mission.red_alert){ - // CD CHECK - if(game_do_cd_mission_check(Game_current_mission_filename)){ - gameseq_post_event(GS_EVENT_START_GAME); - } else { - gameseq_post_event(GS_EVENT_MAIN_MENU); - } + gameseq_post_event(GS_EVENT_START_GAME); break; } // choose the previous mission mission_campaign_previous_mission(); - // CD CHECK - if(game_do_cd_mission_check(Game_current_mission_filename)){ - gameseq_post_event(GS_EVENT_START_GAME); - } else { - gameseq_post_event(GS_EVENT_MAIN_MENU); - } + + gameseq_post_event(GS_EVENT_START_GAME); break; default: @@ -7001,7 +6978,7 @@ DCF(pofspew, "") int game_main(const char *szCmdLine) { - int state, i; + int state; #ifndef PLAT_UNIX // Don't let more than one instance of Freespace run. @@ -7124,7 +7101,6 @@ int game_main(const char *szCmdLine) } #endif - init_cdrom(); game_init(); game_stop_time(); @@ -7137,33 +7113,6 @@ int game_main(const char *szCmdLine) // non-demo, non-standalone, play the intro movie #ifndef DEMO - if(!Is_standalone){ -#ifdef RELEASE_REAL - char *plist[5]; - - // to avoid crashes on debug build - for (i=0; i<5; i++) { - plist[i] = NULL; - } - - if( (cf_get_file_list(2, plist, CF_TYPE_MULTI_PLAYERS, NOX("*.plr")) <= 0) && (cf_get_file_list(2, plist, CF_TYPE_SINGLE_PLAYERS, NOX("*.plr")) <= 0) ){ - // prompt for cd 2 -#if defined(OEM_BUILD) - game_do_cd_check_specific(FS_CDROM_VOLUME_1, 1); -#else - game_do_cd_check_specific(FS_CDROM_VOLUME_2, 2); -#endif // defined(OEM_BUILD) - } - - for (int i=0; i<5; i++) { - if (plist[i] != NULL) { - free(plist[i]); - plist[i] = NULL; - } - } -#endif // RELEASE_REAL - } - if ( !Is_standalone ) { // release -- movies always play @@ -8370,475 +8319,6 @@ void game_stop_subspace_ambient_sound() // // ---------------------------------------------------------------- -// ---------------------------------------------------------------- -// -// CDROM detection code START -// -// ---------------------------------------------------------------- - -#define CD_SIZE_72_MINUTE_MAX (697000000) - -uint game_get_cd_used_space(char *path) -{ -#ifndef PLAT_UNIX - uint total = 0; - char use_path[512] = ""; - char sub_path[512] = ""; - WIN32_FIND_DATA find; - HANDLE find_handle; - - // recurse through all files and directories - strcpy(use_path, path); - strcat(use_path, "*.*"); - find_handle = FindFirstFile(use_path, &find); - - // bogus - if(find_handle == INVALID_HANDLE_VALUE){ - return 0; - } - - // whee - do { - // subdirectory. make sure to ignore . and .. - if((find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && stricmp(find.cFileName, ".") && stricmp(find.cFileName, "..")){ - // subsearch - strcpy(sub_path, path); - strcat(sub_path, find.cFileName); - strcat(sub_path, "\\"); - total += game_get_cd_used_space(sub_path); - } else { - total += (uint)find.nFileSizeLow; - } - } while(FindNextFile(find_handle, &find)); - - // close - FindClose(find_handle); - - // total - return total; -#else - STUB_FUNCTION; - - return 0; -#endif -} - - -// if volume_name is non-null, the CD name must match that -int find_freespace_cd(const char *volume_name) -{ -#ifndef PLAT_UNIX - char oldpath[MAX_PATH]; - char volume[256]; - int i; - int cdrom_drive=-1; - int volume_match = 0; - _finddata_t find; - int find_handle; - - GetCurrentDirectory(MAX_PATH, oldpath); - - for (i = 0; i < 26; i++) - { -//XSTR:OFF - char path[]="d:\\"; -//XSTR:ON - - path[0] = (char)('A'+i); - if (GetDriveType(path) == DRIVE_CDROM) { - cdrom_drive = -3; - if ( GetVolumeInformation(path, volume, 256, NULL, NULL, NULL, NULL, 0) == TRUE ) { - nprintf(("CD", "CD volume: %s\n", volume)); - - // check for any CD volume - int volume1_present = 0; - int volume2_present = 0; - int volume3_present = 0; - - char full_check[512] = ""; - - // look for setup.exe - strcpy(full_check, path); - strcat(full_check, "setup.exe"); - find_handle = _findfirst(full_check, &find); - if(find_handle != -1){ - volume1_present = 1; - _findclose(find_handle); - } - - // look for intro.mve - strcpy(full_check, path); - strcat(full_check, "intro.mve"); - find_handle = _findfirst(full_check, &find); - if(find_handle != -1){ - volume2_present = 1; - _findclose(find_handle); - } - - // look for endpart1.mve - strcpy(full_check, path); - strcat(full_check, "endpart1.mve"); - find_handle = _findfirst(full_check, &find); - if(find_handle != -1){ - volume3_present = 1; - _findclose(find_handle); - } - - // see if we have the specific CD we're looking for - if ( volume_name ) { - // volume 1 - if ( !stricmp(volume_name, FS_CDROM_VOLUME_1) && volume1_present) { - volume_match = 1; - } - // volume 2 - if ( !stricmp(volume_name, FS_CDROM_VOLUME_2) && volume2_present) { - volume_match = 1; - } - // volume 3 - if ( !stricmp(volume_name, FS_CDROM_VOLUME_3) && volume3_present) { - volume_match = 1; - } - } else { - if ( volume1_present || volume2_present || volume3_present ) { - volume_match = 1; - } - } - - // here's where we make sure that CD's 2 and 3 are not just ripped - check to make sure its capacity is > 697,000,000 bytes - if ( volume_match ){ -#ifdef RELEASE_REAL - // we don't care about CD1 though. let it be whatever size it wants, since the game will demand CD's 2 and 3 at the proper time - if(volume2_present || volume3_present) { - // first step - check to make sure its a cdrom - if(GetDriveType(path) != DRIVE_CDROM){ - break; - } - -#if !defined(OEM_BUILD) - // oem not on 80 min cds, so dont check tha size - // check its size - uint used_space = game_get_cd_used_space(path); - if(used_space < CD_SIZE_72_MINUTE_MAX){ - break; - } -#endif // !defined(OEM_BUILD) - } - - cdrom_drive = i; - break; -#else - cdrom_drive = i; - break; -#endif // RELEASE_REAL - } - } - } - } - - SetCurrentDirectory(oldpath); - return cdrom_drive; -#else - STUB_FUNCTION; - - return 0; -#endif -} - -int set_cdrom_path(int drive_num) -{ - int rval; - - if (drive_num < 0) { //no CD -// #ifndef NDEBUG -// strcpy(CDROM_dir,"j:\\FreeSpaceCD\\"); //set directory -// rval = 1; -// #else - strcpy(Game_CDROM_dir,""); //set directory - rval = 0; -// #endif - } else { - sprintf(Game_CDROM_dir,NOX("%c:\\"), 'a' + drive_num ); //set directory - rval = 1; - } - - return rval; -} - -int init_cdrom() -{ - int i, rval; - - //scan for CD, etc. - - rval = 1; - -#ifndef DEMO - i = find_freespace_cd(); - - rval = set_cdrom_path(i); - - /* - if ( rval ) { - nprintf(("CD", "Using %s for FreeSpace CD\n", CDROM_dir)); - } else { - nprintf(("CD", "FreeSpace CD not found\n")); - } - */ -#endif - - return rval; -} - -int Last_cd_label_found = 0; -char Last_cd_label[256]; - -int game_cd_changed() -{ -#ifndef PLAT_UNIX - char label[256]; - int found; - int changed = 0; - - if ( strlen(Game_CDROM_dir) == 0 ) { - init_cdrom(); - } - - found = GetVolumeInformation(Game_CDROM_dir, label, 256, NULL, NULL, NULL, NULL, 0); - - if ( found != Last_cd_label_found ) { - Last_cd_label_found = found; - if ( found ) { - mprintf(( "CD '%s' was inserted\n", label )); - changed = 1; - } else { - mprintf(( "CD '%s' was removed\n", Last_cd_label )); - changed = 1; - } - } else { - if ( Last_cd_label_found ) { - if ( !stricmp( Last_cd_label, label )) { - //mprintf(( "CD didn't change\n" )); - } else { - mprintf(( "CD was changed from '%s' to '%s'\n", Last_cd_label, label )); - changed = 1; - } - } else { - // none found before, none found now. - //mprintf(( "still no CD...\n" )); - } - } - - Last_cd_label_found = found; - if ( found ) { - strcpy( Last_cd_label, label ); - } else { - strcpy( Last_cd_label, "" ); - } - - return changed; -#else - STUB_FUNCTION; - - return 0; -#endif -} - -// check if _any_ FreeSpace2 CDs are in the drive -// return: 1 => CD now in drive -// 0 => Could not find CD, they refuse to put it in the drive -int game_do_cd_check(const char *volume_name) -{ -#if !defined(GAME_CD_CHECK) - return 1; -#else - int cd_present = 0; - int cd_drive_num; - - int num_attempts = 0; - int refresh_files = 0; - while(1) { - int path_set_ok, popup_rval; - - cd_drive_num = find_freespace_cd(volume_name); - path_set_ok = set_cdrom_path(cd_drive_num); - if ( path_set_ok ) { - cd_present = 1; - if ( refresh_files ) { - cfile_refresh(); - refresh_files = 0; - } - break; - } - - // standalone mode - if(Is_standalone){ - cd_present = 0; - break; - } else { - // no CD found, so prompt user - popup_rval = popup(PF_BODY_BIG, 1, POPUP_OK, XSTR( "FreeSpace 2 CD not found\n\nInsert a FreeSpace 2 CD to continue", 202)); - refresh_files = 1; - if ( popup_rval != 1 ) { - cd_present = 0; - break; - } - - if ( num_attempts++ > 5 ) { - cd_present = 0; - break; - } - } - } - - return cd_present; -#endif -} - -// check if _any_ FreeSpace2 CDs are in the drive -// return: 1 => CD now in drive -// 0 => Could not find CD, they refuse to put it in the drive -int game_do_cd_check_specific(const char *volume_name, int cdnum) -{ - int cd_present = 0; - int cd_drive_num; - - int num_attempts = 0; - int refresh_files = 0; - while(1) { - int path_set_ok, popup_rval; - - cd_drive_num = find_freespace_cd(volume_name); - path_set_ok = set_cdrom_path(cd_drive_num); - if ( path_set_ok ) { - cd_present = 1; - if ( refresh_files ) { - cfile_refresh(); - refresh_files = 0; - } - break; - } - - if(Is_standalone){ - cd_present = 0; - break; - } else { - // no CD found, so prompt user -#if defined(DVD_MESSAGE_HACK) - popup_rval = popup(PF_BODY_BIG, 1, POPUP_OK, XSTR("Please insert DVD", 1468)); -#else - popup_rval = popup(PF_BODY_BIG, 1, POPUP_OK, XSTR("Please insert CD %d", 1468), cdnum); -#endif - refresh_files = 1; - if ( popup_rval != 1 ) { - cd_present = 0; - break; - } - - if ( num_attempts++ > 5 ) { - cd_present = 0; - break; - } - } - } - - return cd_present; -} - -// only need to do this in RELEASE_REAL -int game_do_cd_mission_check(const char *filename) -{ -#ifdef RELEASE_REAL - int cd_num; - int cd_present = 0; - int cd_drive_num; - fs_builtin_mission *m = game_find_builtin_mission(filename); - - // check for changed CD - if(game_cd_changed()){ - cfile_refresh(); - } - - // multiplayer - if((Game_mode & GM_MULTIPLAYER) || Is_standalone){ - return 1; - } - - // not builtin, so do a general check (any FS2 CD will do) - if(m == NULL){ - return game_do_cd_check(); - } - - // does not have any CD requirement, do a general check - if(strlen(m->cd_volume) <= 0){ - return game_do_cd_check(); - } - - // get the volume - if(!stricmp(m->cd_volume, FS_CDROM_VOLUME_1)){ - cd_num = 1; - } else if(!stricmp(m->cd_volume, FS_CDROM_VOLUME_2)){ - cd_num = 2; -#ifndef MAKE_FS1 - } else if(!stricmp(m->cd_volume, FS_CDROM_VOLUME_3)){ - cd_num = 3; -#endif - } else { - return game_do_cd_check(); - } - - // did we find the cd? - if(find_freespace_cd(m->cd_volume) >= 0){ - return 1; - } - - // make sure the volume exists - int num_attempts = 0; - int refresh_files = 0; - while(1){ - int path_set_ok, popup_rval; - - cd_drive_num = find_freespace_cd(m->cd_volume); - path_set_ok = set_cdrom_path(cd_drive_num); - if ( path_set_ok ) { - cd_present = 1; - if ( refresh_files ) { - cfile_refresh(); - refresh_files = 0; - } - break; - } - - // no CD found, so prompt user -#if defined(DVD_MESSAGE_HACK) - popup_rval = popup(PF_BODY_BIG, 1, POPUP_OK, XSTR("Please insert DVD", 1468)); -#else - popup_rval = popup(PF_BODY_BIG, 1, POPUP_OK, XSTR("Please insert CD %d", 1468), cd_num); -#endif - - refresh_files = 1; - if ( popup_rval != 1 ) { - cd_present = 0; - break; - } - - if ( num_attempts++ > 5 ) { - cd_present = 0; - break; - } - } - - return cd_present; -#else - return 1; -#endif -} - -// ---------------------------------------------------------------- -// -// CDROM detection code END -// -// ---------------------------------------------------------------- - // ---------------------------------------------------------------- // // Language Autodetection stuff diff --git a/src/menuui/readyroom.cpp b/src/menuui/readyroom.cpp index 4b3bb26..2eca53a 100644 --- a/src/menuui/readyroom.cpp +++ b/src/menuui/readyroom.cpp @@ -1006,11 +1006,6 @@ int readyroom_continue_campaign() #endif } - // CD CHECK - if(!game_do_cd_mission_check(Game_current_mission_filename)){ - return -1; - } - // set the bit for campaign mode Game_mode |= GM_CAMPAIGN_MODE; gameseq_post_event( GS_EVENT_START_GAME ); @@ -1029,12 +1024,9 @@ void sim_room_commit() Game_mode &= ~(GM_CAMPAIGN_MODE); // be sure this bit is clear - // CD CHECK - if(game_do_cd_mission_check(Game_current_mission_filename)){ - // don't resume savegame, proceed to briefing - gameseq_post_event(GS_EVENT_START_GAME); - gamesnd_play_iface(SND_COMMIT_PRESSED); - } + // don't resume savegame, proceed to briefing + gameseq_post_event(GS_EVENT_START_GAME); + gamesnd_play_iface(SND_COMMIT_PRESSED); } int sim_room_button_pressed(int n) diff --git a/src/missionui/missionbrief.cpp b/src/missionui/missionbrief.cpp index a486643..0452816 100644 --- a/src/missionui/missionbrief.cpp +++ b/src/missionui/missionbrief.cpp @@ -695,12 +695,7 @@ void brief_skip_training_pressed() mission_campaign_eval_next_mission(); mission_campaign_mission_over(); - // CD CHECK - if(game_do_cd_mission_check(Game_current_mission_filename)){ - gameseq_post_event( GS_EVENT_START_GAME ); - } else { - gameseq_post_event( GS_EVENT_MAIN_MENU ); - } + gameseq_post_event( GS_EVENT_START_GAME ); } #if defined(FS2_DEMO) || defined(FS1_DEMO) diff --git a/src/missionui/missiondebrief.cpp b/src/missionui/missiondebrief.cpp index 975ab2f..b034aec 100644 --- a/src/missionui/missiondebrief.cpp +++ b/src/missionui/missiondebrief.cpp @@ -1840,12 +1840,7 @@ void debrief_accept(int ok_to_post_start_game_event) #endif } else { if ( ok_to_post_start_game_event ) { - // CD CHECK - if(game_do_cd_mission_check(Game_current_mission_filename)){ - gameseq_post_event(GS_EVENT_START_GAME); - } else { - gameseq_post_event(GS_EVENT_MAIN_MENU); - } + gameseq_post_event(GS_EVENT_START_GAME); } else { play_commit_sound = 0; } diff --git a/src/missionui/missionloopbrief.cpp b/src/missionui/missionloopbrief.cpp index d779009..0345852 100644 --- a/src/missionui/missionloopbrief.cpp +++ b/src/missionui/missionloopbrief.cpp @@ -131,13 +131,8 @@ void loop_brief_button_pressed(int i) { switch(i){ case LOOP_BRIEF_DECLINE: - // CD CHECK - if(game_do_cd_mission_check(Game_current_mission_filename)){ - gameseq_post_event(GS_EVENT_START_GAME); - gamesnd_play_iface(SND_USER_SELECT); - } else { - gameseq_post_event(GS_EVENT_MAIN_MENU); - } + gameseq_post_event(GS_EVENT_START_GAME); + gamesnd_play_iface(SND_USER_SELECT); break; case LOOP_BRIEF_ACCEPT: @@ -145,14 +140,9 @@ void loop_brief_button_pressed(int i) Campaign.loop_enabled = 1; Campaign.loop_reentry = Campaign.next_mission; // save reentry pt, so we can break out of loop Campaign.next_mission = Campaign.loop_mission; - - // CD CHECK - if(game_do_cd_mission_check(Game_current_mission_filename)){ - gameseq_post_event(GS_EVENT_START_GAME); - gamesnd_play_iface(SND_USER_SELECT); - } else { - gameseq_post_event(GS_EVENT_MAIN_MENU); - } + + gameseq_post_event(GS_EVENT_START_GAME); + gamesnd_play_iface(SND_USER_SELECT); break; } } diff --git a/src/missionui/redalert.cpp b/src/missionui/redalert.cpp index 86181ad..9f21441 100644 --- a/src/missionui/redalert.cpp +++ b/src/missionui/redalert.cpp @@ -369,11 +369,7 @@ void red_alert_button_pressed(int n) { switch (n) { case RA_CONTINUE: - if(game_do_cd_mission_check(Game_current_mission_filename)){ - gameseq_post_event(GS_EVENT_ENTER_GAME); - } else { - gameseq_post_event(GS_EVENT_MAIN_MENU); - } + gameseq_post_event(GS_EVENT_ENTER_GAME); break; case RA_REPLAY_MISSION: @@ -385,12 +381,7 @@ void red_alert_button_pressed(int n) break; } - // CD CHECK - if(game_do_cd_mission_check(Game_current_mission_filename)){ - gameseq_post_event(GS_EVENT_START_GAME); - } else { - gameseq_post_event(GS_EVENT_MAIN_MENU); - } + gameseq_post_event(GS_EVENT_START_GAME); } else { gamesnd_play_iface(SND_GENERAL_FAIL); } diff --git a/src/network/multiui.cpp b/src/network/multiui.cpp index 5db071c..b3ec0ea 100644 --- a/src/network/multiui.cpp +++ b/src/network/multiui.cpp @@ -913,19 +913,7 @@ void multi_common_unload_palette() void multi_common_verify_cd() { -#ifdef GAME_CD_CHECK - // otherwise, call the freespace function to determine if we have a cd - Multi_has_cd = 0; -#ifdef MAKE_FS1 - if((find_freespace_cd(FS_CDROM_VOLUME_1) >= 0) || (find_freespace_cd(FS_CDROM_VOLUME_2) >= 0) ){ -#else - if((find_freespace_cd(FS_CDROM_VOLUME_1) >= 0) || (find_freespace_cd(FS_CDROM_VOLUME_2) >= 0) || (find_freespace_cd(FS_CDROM_VOLUME_3) >= 0) ){ -#endif - Multi_has_cd = 1; - } -#else Multi_has_cd = 1; -#endif } -- 2.39.2