X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fmain.c;h=f09dbd62a22d7c8e4ee033673a64d207bd7f33ff;hp=258ac50463b671317c73be88b1d0de326417549a;hb=c0c5862d9ee59c70412b1c35e558101b109a8ec9;hpb=3cab4c74ceb97d865c501a24352a35e944fc44ce diff --git a/src/main.c b/src/main.c index 258ac504..f09dbd62 100644 --- a/src/main.c +++ b/src/main.c @@ -16,10 +16,14 @@ #include "main.h" #include "init.h" #include "game.h" +#include "tape.h" #include "events.h" #include "config.h" -Bitmap *bitmap_db_field, *bitmap_db_door; +Bitmap *bitmap_db_cross; +Bitmap *bitmap_db_field; +Bitmap *bitmap_db_panel; +Bitmap *bitmap_db_door; DrawBuffer *fieldbuffer; DrawBuffer *drawto_field; @@ -64,7 +68,9 @@ short ExplodeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; int RunnerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; int PlayerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +#if 0 unsigned long Properties[MAX_NUM_ELEMENTS][NUM_EP_BITFIELDS]; +#endif int GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; int GfxRandom[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; @@ -104,6 +110,7 @@ struct GameInfo game; struct GlobalInfo global; struct MenuInfo menu; struct DoorInfo door_1, door_2; +struct PreviewInfo preview; struct GraphicInfo *graphic_info = NULL; struct SoundInfo *sound_info = NULL; struct MusicInfo *music_info = NULL; @@ -185,7 +192,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "yamyam", "yamyam", - "yam yam" + "yam yam (random start direction)" }, { "robot", @@ -194,7 +201,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "steelwall", - "wall", + "steelwall", "steel wall" }, { @@ -245,7 +252,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "amoeba_wet", "amoeba", - "dropping amoeba" + "dropping amoeba (EM style)" }, { "amoeba_dry", @@ -290,60 +297,63 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "key_1", "key", - "red key" + "key 1" }, { "key_2", "key", - "yellow key" + "key 2" }, { "key_3", "key", - "green key" + "key 3" }, { "key_4", "key", - "blue key" + "key 4" }, { "gate_1", "gate", - "red door" + "door 1" }, { "gate_2", "gate", - "yellow door" + "door 2" }, { "gate_3", "gate", - "green door" + "door 3" }, { "gate_4", "gate", - "blue door" + "door 4" }, { "gate_1_gray", "gate", - "gray door (opened by red key)" + "gray door (opened by key 1)" }, { "gate_2_gray", "gate", - "gray door (opened by yellow key)"}, + "gray door (opened by key 2)" + }, { "gate_3_gray", "gate", - "gray door (opened by green key)"}, + "gray door (opened by key 3)" + }, { "gate_4_gray", "gate", - "gray door (opened by blue key)"}, + "gray door (opened by key 4)" + }, { "dynamite", "dynamite", @@ -402,7 +412,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "expandable_wall", "wall", - "growing wall" + "growing wall (horizontal, visible)" }, { "bd_diamond", @@ -436,7 +446,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "invisible_steelwall", - "wall", + "steelwall", "invisible steel wall" }, { @@ -524,22 +534,22 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "player_1", "player", - "yellow player" + "player 1" }, { "player_2", "player", - "red player" + "player 2" }, { "player_3", "player", - "green player" + "player 3" }, { "player_4", "player", - "blue player" + "player 4" }, { "bug.right", @@ -1136,22 +1146,22 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "em_gate_1", "gate", - "red door (EM style)" + "door 1 (EM style)" }, { "em_gate_2", "gate", - "yellow door (EM style)" + "door 2 (EM style)" }, { "em_gate_3", "gate", - "green door (EM style)" + "door 3 (EM style)" }, { "em_gate_4", "gate", - "blue door (EM style)" + "door 4 (EM style)" }, { "em_key_2_file_obsolete", @@ -1371,32 +1381,32 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "em_gate_1_gray", "gate", - "gray door (EM style, red key)" + "gray door (EM style, key 1)" }, { "em_gate_2_gray", "gate", - "gray door (EM style, yellow key)" + "gray door (EM style, key 2)" }, { "em_gate_3_gray", "gate", - "gray door (EM style, green key)" + "gray door (EM style, key 3)" }, { "em_gate_4_gray", "gate", - "gray door (EM style, blue key)" + "gray door (EM style, key 4)" }, { - "unused_254", - "unused", - "(not used)" + "em_dynamite", + "dynamite", + "dynamite (EM style)" }, { - "unused_255", - "unused", - "(not used)" + "em_dynamite.active", + "dynamite", + "burning dynamite (EM style)" }, { "pearl", @@ -1476,122 +1486,122 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "conveyor_belt_1_left", "conveyor_belt", - "red conveyor belt (left)" + "conveyor belt 1 (left)" }, { "conveyor_belt_1_middle", "conveyor_belt", - "red conveyor belt (middle)" + "conveyor belt 1 (middle)" }, { "conveyor_belt_1_right", "conveyor_belt", - "red conveyor belt (right)" + "conveyor belt 1 (right)" }, { "conveyor_belt_1_switch_left", "conveyor_belt_switch", - "switch for red conveyor belt (left)" + "switch for conveyor belt 1 (left)" }, { "conveyor_belt_1_switch_middle", "conveyor_belt_switch", - "switch for red conveyor belt (middle)" + "switch for conveyor belt 1 (middle)" }, { "conveyor_belt_1_switch_right", "conveyor_belt_switch", - "switch for red conveyor belt (right)" + "switch for conveyor belt 1 (right)" }, { "conveyor_belt_2_left", "conveyor_belt", - "yellow conveyor belt (left)" + "conveyor belt 2 (left)" }, { "conveyor_belt_2_middle", "conveyor_belt", - "yellow conveyor belt (middle)" + "conveyor belt 2 (middle)" }, { "conveyor_belt_2_right", "conveyor_belt", - "yellow conveyor belt (right)" + "conveyor belt 2 (right)" }, { "conveyor_belt_2_switch_left", "conveyor_belt_switch", - "switch for yellow conveyor belt (left)" + "switch for conveyor belt 2 (left)" }, { "conveyor_belt_2_switch_middle", "conveyor_belt_switch", - "switch for yellow conveyor belt (middle)" + "switch for conveyor belt 2 (middle)" }, { "conveyor_belt_2_switch_right", "conveyor_belt_switch", - "switch for yellow conveyor belt (right)" + "switch for conveyor belt 2 (right)" }, { "conveyor_belt_3_left", "conveyor_belt", - "green conveyor belt (left)" + "conveyor belt 3 (left)" }, { "conveyor_belt_3_middle", "conveyor_belt", - "green conveyor belt (middle)" + "conveyor belt 3 (middle)" }, { "conveyor_belt_3_right", "conveyor_belt", - "green conveyor belt (right)" + "conveyor belt 3 (right)" }, { "conveyor_belt_3_switch_left", "conveyor_belt_switch", - "switch for green conveyor belt (left)" + "switch for conveyor belt 3 (left)" }, { "conveyor_belt_3_switch_middle", "conveyor_belt_switch", - "switch for green conveyor belt (middle)" + "switch for conveyor belt 3 (middle)" }, { "conveyor_belt_3_switch_right", "conveyor_belt_switch", - "switch for green conveyor belt (right)" + "switch for conveyor belt 3 (right)" }, { "conveyor_belt_4_left", "conveyor_belt", - "blue conveyor belt (left)" + "conveyor belt 4 (left)" }, { "conveyor_belt_4_middle", "conveyor_belt", - "blue conveyor belt (middle)" + "conveyor belt 4 (middle)" }, { "conveyor_belt_4_right", "conveyor_belt", - "blue conveyor belt (right)" + "conveyor belt 4 (right)" }, { "conveyor_belt_4_switch_left", "conveyor_belt_switch", - "switch for blue conveyor belt (left)" + "switch for conveyor belt 4 (left)" }, { "conveyor_belt_4_switch_middle", "conveyor_belt_switch", - "switch for blue conveyor belt (middle)" + "switch for conveyor belt 4 (middle)" }, { "conveyor_belt_4_switch_right", "conveyor_belt_switch", - "switch for blue conveyor belt (right)" + "switch for conveyor belt 4 (right)" }, { "landmine", @@ -1695,7 +1705,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "steelwall_slippery", - "wall", + "steelwall", "slippery steel wall" }, { @@ -1780,22 +1790,22 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "emc_steelwall_1", - "wall", + "steelwall", "steel wall" }, { "emc_steelwall_2", - "wall", + "steelwall", "steel wall" }, { "emc_steelwall_3", - "wall", + "steelwall", "steel wall" }, { "emc_steelwall_4", - "wall", + "steelwall", "steel wall" }, { @@ -3201,22 +3211,22 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "em_key_1", "key", - "red key (EM style)" + "key 1 (EM style)" }, { "em_key_2", "key", - "yellow key (EM style)" + "key 2 (EM style)" }, { "em_key_3", "key", - "green key (EM style)" + "key 3 (EM style)" }, { "em_key_4", "key", - "blue key (EM style)" + "key 4 (EM style)" }, { "envelope_1", @@ -3643,6 +3653,141 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "dripper", "dripper" }, + { + "trigger_ce_value", + "trigger", + "CE value of element triggering change" + }, + { + "trigger_ce_score", + "trigger", + "CE score of element triggering change" + }, + { + "current_ce_value", + "current", + "CE value of current element" + }, + { + "current_ce_score", + "current", + "CE score of current element" + }, + { + "yamyam.left", + "yamyam", + "yam yam (starts moving left)" + }, + { + "yamyam.right", + "yamyam", + "yam yam (starts moving right)" + }, + { + "yamyam.up", + "yamyam", + "yam yam (starts moving up)" + }, + { + "yamyam.down", + "yamyam", + "yam yam (starts moving down)" + }, + { + "bd_expandable_wall", + "wall", + "growing wall (horizontal, BD style)" + }, + { + "last_ce_8", + "last_ce", + "CE 8 positions earlier in list" + }, + { + "last_ce_7", + "last_ce", + "CE 7 positions earlier in list" + }, + { + "last_ce_6", + "last_ce", + "CE 6 positions earlier in list" + }, + { + "last_ce_5", + "last_ce", + "CE 5 positions earlier in list" + }, + { + "last_ce_4", + "last_ce", + "CE 4 positions earlier in list" + }, + { + "last_ce_3", + "last_ce", + "CE 3 positions earlier in list" + }, + { + "last_ce_2", + "last_ce", + "CE 2 positions earlier in list" + }, + { + "last_ce_1", + "last_ce", + "CE 1 position earlier in list" + }, + { + "self", + "self", + "the current custom element" + }, + { + "next_ce_1", + "next_ce", + "CE 1 position later in list" + }, + { + "next_ce_2", + "next_ce", + "CE 2 positions later in list" + }, + { + "next_ce_3", + "next_ce", + "CE 3 positions later in list" + }, + { + "next_ce_4", + "next_ce", + "CE 4 positions later in list" + }, + { + "next_ce_5", + "next_ce", + "CE 5 positions later in list" + }, + { + "next_ce_6", + "next_ce", + "CE 6 positions later in list" + }, + { + "next_ce_7", + "next_ce", + "CE 7 positions later in list" + }, + { + "next_ce_8", + "next_ce", + "CE 8 positions later in list" + }, + { + "any_element", + "any_element", + "this element matches any element" + }, /* ----------------------------------------------------------------------- */ /* "real" (and therefore drawable) runtime elements */ @@ -3705,7 +3850,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "invisible_steelwall.active", - "wall", + "steelwall", "-" }, { @@ -3944,6 +4089,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "dripper", "dripper" }, + { + "emc_spring_bumper.active", + "emc_spring_bumper", + "spring bumper", + }, /* ----------------------------------------------------------------------- */ /* "unreal" (and therefore not drawable) runtime elements */ @@ -4044,6 +4194,16 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "-", "-" }, + { + "diagonal.shrinking", + "-", + "-" + }, + { + "diagonal.growing", + "-", + "-" + }, /* ----------------------------------------------------------------------- */ /* dummy elements (never used as game elements, only used as graphics) */ @@ -4305,24 +4465,24 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "hide group elements" }, { - "internal_cascade_user", + "internal_cascade_ref", "internal", - "show user defined elements" + "show reference elements" }, { - "internal_cascade_user.active", + "internal_cascade_ref.active", "internal", - "hide user defined elements" + "hide reference elements" }, { - "internal_cascade_generic", + "internal_cascade_user", "internal", - "show elements" + "show user defined elements" }, { - "internal_cascade_generic.active", + "internal_cascade_user.active", "internal", - "hide elements" + "hide user defined elements" }, { "internal_cascade_dynamic", @@ -4400,7 +4560,7 @@ struct ElementActionInfo element_action_info[NUM_ACTIONS + 1 + 1] = { ".turning_from_down", ACTION_TURNING_FROM_DOWN, FALSE }, { ".smashed_by_rock", ACTION_SMASHED_BY_ROCK, FALSE }, { ".smashed_by_spring", ACTION_SMASHED_BY_SPRING, FALSE }, - { ".slurped_by_spring", ACTION_SLURPED_BY_SPRING, FALSE }, + { ".eating", ACTION_EATING, FALSE }, { ".twinkling", ACTION_TWINKLING, FALSE }, { ".splashing", ACTION_SPLASHING, FALSE }, { ".page[1]", ACTION_PAGE_1, FALSE }, @@ -4443,12 +4603,16 @@ struct ElementActionInfo element_action_info[NUM_ACTIONS + 1 + 1] = { NULL, 0, 0 } }; -struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS + 1] = +struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS_FULL + 1] = { { ".left", MV_BIT_LEFT }, { ".right", MV_BIT_RIGHT }, { ".up", MV_BIT_UP }, { ".down", MV_BIT_DOWN }, + { ".upleft", MV_BIT_UP }, + { ".upright", MV_BIT_RIGHT }, + { ".downleft", MV_BIT_LEFT }, + { ".downright", MV_BIT_DOWN }, { NULL, 0 } }; @@ -4456,6 +4620,7 @@ struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS + 1] = struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1 + 1] = { { ".[DEFAULT]", GAME_MODE_DEFAULT, }, + { ".TITLE", GAME_MODE_TITLE, }, { ".MAIN", GAME_MODE_MAIN, }, { ".LEVELS", GAME_MODE_LEVELS }, { ".SCORES", GAME_MODE_SCORES, }, @@ -4475,43 +4640,71 @@ struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1 + 1] = struct TokenIntPtrInfo image_config_vars[] = { - { "global.num_toons", &global.num_toons }, + { "global.num_toons", &global.num_toons }, + + { "menu.draw_xoffset", &menu.draw_xoffset[GFX_SPECIAL_ARG_DEFAULT] }, + { "menu.draw_yoffset", &menu.draw_yoffset[GFX_SPECIAL_ARG_DEFAULT] }, + { "menu.draw_xoffset.MAIN", &menu.draw_xoffset[GFX_SPECIAL_ARG_MAIN] }, + { "menu.draw_yoffset.MAIN", &menu.draw_yoffset[GFX_SPECIAL_ARG_MAIN] }, + { "menu.draw_xoffset.LEVELS", &menu.draw_xoffset[GFX_SPECIAL_ARG_LEVELS] }, + { "menu.draw_yoffset.LEVELS", &menu.draw_yoffset[GFX_SPECIAL_ARG_LEVELS] }, + { "menu.draw_xoffset.SCORES", &menu.draw_xoffset[GFX_SPECIAL_ARG_SCORES] }, + { "menu.draw_yoffset.SCORES", &menu.draw_yoffset[GFX_SPECIAL_ARG_SCORES] }, + { "menu.draw_xoffset.EDITOR", &menu.draw_xoffset[GFX_SPECIAL_ARG_EDITOR] }, + { "menu.draw_yoffset.EDITOR", &menu.draw_yoffset[GFX_SPECIAL_ARG_EDITOR] }, + { "menu.draw_xoffset.INFO", &menu.draw_xoffset[GFX_SPECIAL_ARG_INFO] }, + { "menu.draw_yoffset.INFO", &menu.draw_yoffset[GFX_SPECIAL_ARG_INFO] }, + { "menu.draw_xoffset.SETUP", &menu.draw_xoffset[GFX_SPECIAL_ARG_SETUP] }, + { "menu.draw_yoffset.SETUP", &menu.draw_yoffset[GFX_SPECIAL_ARG_SETUP] }, - { "menu.draw_xoffset", &menu.draw_xoffset[GFX_SPECIAL_ARG_DEFAULT]}, - { "menu.draw_yoffset", &menu.draw_yoffset[GFX_SPECIAL_ARG_DEFAULT]}, - { "menu.draw_xoffset.MAIN", &menu.draw_xoffset[GFX_SPECIAL_ARG_MAIN] }, - { "menu.draw_yoffset.MAIN", &menu.draw_yoffset[GFX_SPECIAL_ARG_MAIN] }, - { "menu.draw_xoffset.LEVELS", &menu.draw_xoffset[GFX_SPECIAL_ARG_LEVELS] }, - { "menu.draw_yoffset.LEVELS", &menu.draw_yoffset[GFX_SPECIAL_ARG_LEVELS] }, - { "menu.draw_xoffset.SCORES", &menu.draw_xoffset[GFX_SPECIAL_ARG_SCORES] }, - { "menu.draw_yoffset.SCORES", &menu.draw_yoffset[GFX_SPECIAL_ARG_SCORES] }, - { "menu.draw_xoffset.EDITOR", &menu.draw_xoffset[GFX_SPECIAL_ARG_EDITOR] }, - { "menu.draw_yoffset.EDITOR", &menu.draw_yoffset[GFX_SPECIAL_ARG_EDITOR] }, - { "menu.draw_xoffset.INFO", &menu.draw_xoffset[GFX_SPECIAL_ARG_INFO] }, - { "menu.draw_yoffset.INFO", &menu.draw_yoffset[GFX_SPECIAL_ARG_INFO] }, - { "menu.draw_xoffset.SETUP", &menu.draw_xoffset[GFX_SPECIAL_ARG_SETUP] }, - { "menu.draw_yoffset.SETUP", &menu.draw_yoffset[GFX_SPECIAL_ARG_SETUP] }, + { "menu.scrollbar_xoffset", &menu.scrollbar_xoffset }, - { "menu.scrollbar_xoffset", &menu.scrollbar_xoffset }, + { "menu.list_size", &menu.list_size[GFX_SPECIAL_ARG_DEFAULT] }, + { "menu.list_size.LEVELS", &menu.list_size[GFX_SPECIAL_ARG_LEVELS] }, + { "menu.list_size.SCORES", &menu.list_size[GFX_SPECIAL_ARG_SCORES] }, + { "menu.list_size.INFO", &menu.list_size[GFX_SPECIAL_ARG_INFO] }, - { "menu.list_size", &menu.list_size[GFX_SPECIAL_ARG_DEFAULT] }, - { "menu.list_size.LEVELS", &menu.list_size[GFX_SPECIAL_ARG_LEVELS] }, - { "menu.list_size.SCORES", &menu.list_size[GFX_SPECIAL_ARG_SCORES] }, - { "menu.list_size.INFO", &menu.list_size[GFX_SPECIAL_ARG_INFO] }, + { "menu.fade_delay", &menu.fade_delay }, + { "menu.post_delay", &menu.post_delay }, - { "door_1.step_offset", &door_1.step_offset }, - { "door_1.step_delay", &door_1.step_delay }, - { "door_1.anim_mode", &door_1.anim_mode }, - { "door_2.step_offset", &door_2.step_offset }, - { "door_2.step_delay", &door_2.step_delay }, - { "door_2.anim_mode", &door_2.anim_mode }, + { "door_1.width", &door_1.width }, + { "door_1.height", &door_1.height }, + { "door_1.step_offset", &door_1.step_offset }, + { "door_1.step_delay", &door_1.step_delay }, + { "door_1.anim_mode", &door_1.anim_mode }, + { "door_2.width", &door_2.width }, + { "door_2.height", &door_2.height }, + { "door_2.step_offset", &door_2.step_offset }, + { "door_2.step_delay", &door_2.step_delay }, + { "door_2.anim_mode", &door_2.anim_mode }, - { "[player].boring_delay_fixed", &game.player_boring_delay_fixed }, - { "[player].boring_delay_random", &game.player_boring_delay_random }, - { "[player].sleeping_delay_fixed", &game.player_sleeping_delay_fixed }, - { "[player].sleeping_delay_random", &game.player_sleeping_delay_random }, + { "preview.x", &preview.x }, + { "preview.y", &preview.y }, + { "preview.xsize", &preview.xsize }, + { "preview.ysize", &preview.ysize }, + { "preview.tile_size", &preview.tile_size }, + { "preview.step_offset", &preview.step_offset }, + { "preview.step_delay", &preview.step_delay }, - { NULL, NULL, } + { "game.panel.level.x", &game.panel.level.x }, + { "game.panel.level.y", &game.panel.level.y }, + { "game.panel.gems.x", &game.panel.gems.x }, + { "game.panel.gems.y", &game.panel.gems.y }, + { "game.panel.inventory.x", &game.panel.inventory.x }, + { "game.panel.inventory.y", &game.panel.inventory.y }, + { "game.panel.keys.x", &game.panel.keys.x }, + { "game.panel.keys.y", &game.panel.keys.y }, + { "game.panel.score.x", &game.panel.score.x }, + { "game.panel.score.y", &game.panel.score.y }, + { "game.panel.time.x", &game.panel.time.x }, + { "game.panel.time.y", &game.panel.time.y }, + + { "[player].boring_delay_fixed", &game.player_boring_delay_fixed }, + { "[player].boring_delay_random", &game.player_boring_delay_random }, + { "[player].sleeping_delay_fixed", &game.player_sleeping_delay_fixed }, + { "[player].sleeping_delay_random", &game.player_sleeping_delay_random }, + + { NULL, NULL, } }; @@ -4553,6 +4746,7 @@ struct FontInfo font_info[NUM_FONTS + 1] = { "font.value_1" }, { "font.value_2" }, { "font.value_old" }, + { "font.level_number.active" }, { "font.level_number" }, { "font.tape_recorder" }, { "font.game_info" }, @@ -4610,9 +4804,11 @@ static void print_usage() int main(int argc, char *argv[]) { - InitProgramInfo(argv[0], USERDATA_DIRECTORY, - PROGRAM_TITLE_STRING, getWindowTitleString(), - ICON_TITLE_STRING, X11_ICON_FILENAME, X11_ICONMASK_FILENAME, + char * window_title_string = getWindowTitleString(); + + InitProgramInfo(argv[0], USERDATA_DIRECTORY, USERDATA_DIRECTORY_UNIX, + PROGRAM_TITLE_STRING, window_title_string, ICON_TITLE_STRING, + X11_ICON_FILENAME, X11_ICONMASK_FILENAME, SDL_ICON_FILENAME, MSDOS_POINTER_FILENAME, COOKIE_PREFIX, FILENAME_PREFIX, GAME_VERSION_ACTUAL);