- Error(ERR_WARN, "cannot save score for level %d", nr);
- return;
- }
-
- fprintf(file, "%s\n\n", SCORE_COOKIE);
-
- for (i = 0; i < MAX_SCORE_ENTRIES; i++)
- fprintf(file, "%d %s\n", highscore[i].Score, highscore[i].Name);
-
- fclose(file);
-
- SetFilePermissions(filename, permissions);
-}
-
-
-/* ========================================================================= */
-/* setup file functions */
-/* ========================================================================= */
-
-#define TOKEN_STR_PLAYER_PREFIX "player_"
-
-/* global setup */
-#define SETUP_TOKEN_PLAYER_NAME 0
-#define SETUP_TOKEN_SOUND 1
-#define SETUP_TOKEN_SOUND_LOOPS 2
-#define SETUP_TOKEN_SOUND_MUSIC 3
-#define SETUP_TOKEN_SOUND_SIMPLE 4
-#define SETUP_TOKEN_TOONS 5
-#define SETUP_TOKEN_SCROLL_DELAY 6
-#define SETUP_TOKEN_SCROLL_DELAY_VALUE 7
-#define SETUP_TOKEN_ENGINE_SNAPSHOT_MODE 8
-#define SETUP_TOKEN_ENGINE_SNAPSHOT_MEMORY 9
-#define SETUP_TOKEN_FADE_SCREENS 10
-#define SETUP_TOKEN_AUTORECORD 11
-#define SETUP_TOKEN_SHOW_TITLESCREEN 12
-#define SETUP_TOKEN_QUICK_DOORS 13
-#define SETUP_TOKEN_TEAM_MODE 14
-#define SETUP_TOKEN_HANDICAP 15
-#define SETUP_TOKEN_SKIP_LEVELS 16
-#define SETUP_TOKEN_INCREMENT_LEVELS 17
-#define SETUP_TOKEN_TIME_LIMIT 18
-#define SETUP_TOKEN_FULLSCREEN 19
-#define SETUP_TOKEN_WINDOW_SCALING_PERCENT 20
-#define SETUP_TOKEN_WINDOW_SCALING_QUALITY 21
-#define SETUP_TOKEN_SCREEN_RENDERING_MODE 22
-#define SETUP_TOKEN_ASK_ON_ESCAPE 23
-#define SETUP_TOKEN_ASK_ON_ESCAPE_EDITOR 24
-#define SETUP_TOKEN_QUICK_SWITCH 25
-#define SETUP_TOKEN_INPUT_ON_FOCUS 26
-#define SETUP_TOKEN_PREFER_AGA_GRAPHICS 27
-#define SETUP_TOKEN_GAME_FRAME_DELAY 28
-#define SETUP_TOKEN_SP_SHOW_BORDER_ELEMENTS 29
-#define SETUP_TOKEN_SMALL_GAME_GRAPHICS 30
-#define SETUP_TOKEN_SHOW_SNAPSHOT_BUTTONS 31
-#define SETUP_TOKEN_GRAPHICS_SET 32
-#define SETUP_TOKEN_SOUNDS_SET 33
-#define SETUP_TOKEN_MUSIC_SET 34
-#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS 35
-#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS 36
-#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC 37
-#define SETUP_TOKEN_VOLUME_SIMPLE 38
-#define SETUP_TOKEN_VOLUME_LOOPS 39
-#define SETUP_TOKEN_VOLUME_MUSIC 40
-#define SETUP_TOKEN_TOUCH_CONTROL_TYPE 41
-#define SETUP_TOKEN_TOUCH_MOVE_DISTANCE 42
-#define SETUP_TOKEN_TOUCH_DROP_DISTANCE 43
-#define SETUP_TOKEN_TOUCH_TRANSPARENCY 44
-#define SETUP_TOKEN_TOUCH_DRAW_OUTLINED 45
-#define SETUP_TOKEN_TOUCH_DRAW_PRESSED 46
-#define SETUP_TOKEN_TOUCH_GRID_XSIZE_0 47
-#define SETUP_TOKEN_TOUCH_GRID_YSIZE_0 48
-#define SETUP_TOKEN_TOUCH_GRID_XSIZE_1 49
-#define SETUP_TOKEN_TOUCH_GRID_YSIZE_1 50
-
-#define NUM_GLOBAL_SETUP_TOKENS 51
-
-/* auto setup */
-#define SETUP_TOKEN_AUTO_EDITOR_ZOOM_TILESIZE 0
-
-#define NUM_AUTO_SETUP_TOKENS 1
-
-/* editor setup */
-#define SETUP_TOKEN_EDITOR_EL_CLASSIC 0
-#define SETUP_TOKEN_EDITOR_EL_CUSTOM 1
-#define SETUP_TOKEN_EDITOR_EL_USER_DEFINED 2
-#define SETUP_TOKEN_EDITOR_EL_DYNAMIC 3
-#define SETUP_TOKEN_EDITOR_EL_HEADLINES 4
-#define SETUP_TOKEN_EDITOR_SHOW_ELEMENT_TOKEN 5
-
-#define NUM_EDITOR_SETUP_TOKENS 6
-
-/* editor cascade setup */
-#define SETUP_TOKEN_EDITOR_CASCADE_BD 0
-#define SETUP_TOKEN_EDITOR_CASCADE_EM 1
-#define SETUP_TOKEN_EDITOR_CASCADE_EMC 2
-#define SETUP_TOKEN_EDITOR_CASCADE_RND 3
-#define SETUP_TOKEN_EDITOR_CASCADE_SB 4
-#define SETUP_TOKEN_EDITOR_CASCADE_SP 5
-#define SETUP_TOKEN_EDITOR_CASCADE_DC 6
-#define SETUP_TOKEN_EDITOR_CASCADE_DX 7
-#define SETUP_TOKEN_EDITOR_CASCADE_TEXT 8
-#define SETUP_TOKEN_EDITOR_CASCADE_STEELTEXT 9
-#define SETUP_TOKEN_EDITOR_CASCADE_CE 10
-#define SETUP_TOKEN_EDITOR_CASCADE_GE 11
-#define SETUP_TOKEN_EDITOR_CASCADE_REF 12
-#define SETUP_TOKEN_EDITOR_CASCADE_USER 13
-#define SETUP_TOKEN_EDITOR_CASCADE_DYNAMIC 14
-
-#define NUM_EDITOR_CASCADE_SETUP_TOKENS 15
-
-/* shortcut setup */
-#define SETUP_TOKEN_SHORTCUT_SAVE_GAME 0
-#define SETUP_TOKEN_SHORTCUT_LOAD_GAME 1
-#define SETUP_TOKEN_SHORTCUT_TOGGLE_PAUSE 2
-#define SETUP_TOKEN_SHORTCUT_FOCUS_PLAYER_1 3
-#define SETUP_TOKEN_SHORTCUT_FOCUS_PLAYER_2 4
-#define SETUP_TOKEN_SHORTCUT_FOCUS_PLAYER_3 5
-#define SETUP_TOKEN_SHORTCUT_FOCUS_PLAYER_4 6
-#define SETUP_TOKEN_SHORTCUT_FOCUS_PLAYER_ALL 7
-#define SETUP_TOKEN_SHORTCUT_TAPE_EJECT 8
-#define SETUP_TOKEN_SHORTCUT_TAPE_EXTRA 9
-#define SETUP_TOKEN_SHORTCUT_TAPE_STOP 10
-#define SETUP_TOKEN_SHORTCUT_TAPE_PAUSE 11
-#define SETUP_TOKEN_SHORTCUT_TAPE_RECORD 12
-#define SETUP_TOKEN_SHORTCUT_TAPE_PLAY 13
-#define SETUP_TOKEN_SHORTCUT_SOUND_SIMPLE 14
-#define SETUP_TOKEN_SHORTCUT_SOUND_LOOPS 15
-#define SETUP_TOKEN_SHORTCUT_SOUND_MUSIC 16
-#define SETUP_TOKEN_SHORTCUT_SNAP_LEFT 17
-#define SETUP_TOKEN_SHORTCUT_SNAP_RIGHT 18
-#define SETUP_TOKEN_SHORTCUT_SNAP_UP 19
-#define SETUP_TOKEN_SHORTCUT_SNAP_DOWN 20
-
-#define NUM_SHORTCUT_SETUP_TOKENS 21
-
-/* player setup */
-#define SETUP_TOKEN_PLAYER_USE_JOYSTICK 0
-#define SETUP_TOKEN_PLAYER_JOY_DEVICE_NAME 1
-#define SETUP_TOKEN_PLAYER_JOY_XLEFT 2
-#define SETUP_TOKEN_PLAYER_JOY_XMIDDLE 3
-#define SETUP_TOKEN_PLAYER_JOY_XRIGHT 4
-#define SETUP_TOKEN_PLAYER_JOY_YUPPER 5
-#define SETUP_TOKEN_PLAYER_JOY_YMIDDLE 6
-#define SETUP_TOKEN_PLAYER_JOY_YLOWER 7
-#define SETUP_TOKEN_PLAYER_JOY_SNAP 8
-#define SETUP_TOKEN_PLAYER_JOY_DROP 9
-#define SETUP_TOKEN_PLAYER_KEY_LEFT 10
-#define SETUP_TOKEN_PLAYER_KEY_RIGHT 11
-#define SETUP_TOKEN_PLAYER_KEY_UP 12
-#define SETUP_TOKEN_PLAYER_KEY_DOWN 13
-#define SETUP_TOKEN_PLAYER_KEY_SNAP 14
-#define SETUP_TOKEN_PLAYER_KEY_DROP 15
-
-#define NUM_PLAYER_SETUP_TOKENS 16
-
-/* system setup */
-#define SETUP_TOKEN_SYSTEM_SDL_VIDEODRIVER 0
-#define SETUP_TOKEN_SYSTEM_SDL_AUDIODRIVER 1
-#define SETUP_TOKEN_SYSTEM_AUDIO_FRAGMENT_SIZE 2
-
-#define NUM_SYSTEM_SETUP_TOKENS 3
-
-/* internal setup */
-#define SETUP_TOKEN_INT_PROGRAM_TITLE 0
-#define SETUP_TOKEN_INT_PROGRAM_VERSION 1
-#define SETUP_TOKEN_INT_PROGRAM_AUTHOR 2
-#define SETUP_TOKEN_INT_PROGRAM_EMAIL 3
-#define SETUP_TOKEN_INT_PROGRAM_WEBSITE 4
-#define SETUP_TOKEN_INT_PROGRAM_COPYRIGHT 5
-#define SETUP_TOKEN_INT_PROGRAM_COMPANY 6
-#define SETUP_TOKEN_INT_PROGRAM_ICON_FILE 7
-#define SETUP_TOKEN_INT_DEFAULT_GRAPHICS_SET 8
-#define SETUP_TOKEN_INT_DEFAULT_SOUNDS_SET 9
-#define SETUP_TOKEN_INT_DEFAULT_MUSIC_SET 10
-#define SETUP_TOKEN_INT_FALLBACK_GRAPHICS_FILE 11
-#define SETUP_TOKEN_INT_FALLBACK_SOUNDS_FILE 12
-#define SETUP_TOKEN_INT_FALLBACK_MUSIC_FILE 13
-#define SETUP_TOKEN_INT_DEFAULT_LEVEL_SERIES 14
-#define SETUP_TOKEN_INT_CHOOSE_FROM_TOP_LEVELDIR 15
-#define SETUP_TOKEN_INT_SHOW_SCALING_IN_TITLE 16
-#define SETUP_TOKEN_INT_DEFAULT_WINDOW_WIDTH 17
-#define SETUP_TOKEN_INT_DEFAULT_WINDOW_HEIGHT 18
-
-#define NUM_INTERNAL_SETUP_TOKENS 19
-
-/* debug setup */
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_0 0
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_1 1
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_2 2
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_3 3
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_4 4
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_5 5
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_6 6
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_7 7
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_8 8
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_9 9
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_0 10
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_1 11
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_2 12
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_3 13
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_4 14
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_5 15
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_6 16
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_7 17
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_8 18
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_KEY_9 19
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_USE_MOD_KEY 20
-#define SETUP_TOKEN_DEBUG_FRAME_DELAY_GAME_ONLY 21
-#define SETUP_TOKEN_DEBUG_SHOW_FRAMES_PER_SECOND 22
-
-#define NUM_DEBUG_SETUP_TOKENS 23
-
-/* options setup */
-#define SETUP_TOKEN_OPTIONS_VERBOSE 0
-
-#define NUM_OPTIONS_SETUP_TOKENS 1
-
-
-static struct SetupInfo si;
-static struct SetupAutoSetupInfo sasi;
-static struct SetupEditorInfo sei;
-static struct SetupEditorCascadeInfo seci;
-static struct SetupShortcutInfo ssi;
-static struct SetupInputInfo sii;
-static struct SetupSystemInfo syi;
-static struct SetupInternalInfo sxi;
-static struct SetupDebugInfo sdi;
-static struct OptionInfo soi;
-
-static struct TokenInfo global_setup_tokens[] =
-{
- { TYPE_STRING, &si.player_name, "player_name" },
- { TYPE_SWITCH, &si.sound, "sound" },
- { TYPE_SWITCH, &si.sound_loops, "repeating_sound_loops" },
- { TYPE_SWITCH, &si.sound_music, "background_music" },
- { TYPE_SWITCH, &si.sound_simple, "simple_sound_effects" },
- { TYPE_SWITCH, &si.toons, "toons" },
- { TYPE_SWITCH, &si.scroll_delay, "scroll_delay" },
- { TYPE_INTEGER,&si.scroll_delay_value, "scroll_delay_value" },
- { TYPE_STRING, &si.engine_snapshot_mode, "engine_snapshot_mode" },
- { TYPE_INTEGER,&si.engine_snapshot_memory, "engine_snapshot_memory" },
- { TYPE_SWITCH, &si.fade_screens, "fade_screens" },
- { TYPE_SWITCH, &si.autorecord, "automatic_tape_recording"},
- { TYPE_SWITCH, &si.show_titlescreen, "show_titlescreen" },
- { TYPE_SWITCH, &si.quick_doors, "quick_doors" },
- { TYPE_SWITCH, &si.team_mode, "team_mode" },
- { TYPE_SWITCH, &si.handicap, "handicap" },
- { TYPE_SWITCH, &si.skip_levels, "skip_levels" },
- { TYPE_SWITCH, &si.increment_levels, "increment_levels" },
- { TYPE_SWITCH, &si.time_limit, "time_limit" },
- { TYPE_SWITCH, &si.fullscreen, "fullscreen" },
- { TYPE_INTEGER,&si.window_scaling_percent, "window_scaling_percent" },
- { TYPE_STRING, &si.window_scaling_quality, "window_scaling_quality" },
- { TYPE_STRING, &si.screen_rendering_mode, "screen_rendering_mode" },
- { TYPE_SWITCH, &si.ask_on_escape, "ask_on_escape" },
- { TYPE_SWITCH, &si.ask_on_escape_editor, "ask_on_escape_editor" },
- { TYPE_SWITCH, &si.quick_switch, "quick_player_switch" },
- { TYPE_SWITCH, &si.input_on_focus, "input_on_focus" },
- { TYPE_SWITCH, &si.prefer_aga_graphics, "prefer_aga_graphics" },
- { TYPE_INTEGER,&si.game_frame_delay, "game_frame_delay" },
- { TYPE_SWITCH, &si.sp_show_border_elements, "sp_show_border_elements" },
- { TYPE_SWITCH, &si.small_game_graphics, "small_game_graphics" },
- { TYPE_SWITCH, &si.show_snapshot_buttons, "show_snapshot_buttons" },
- { TYPE_STRING, &si.graphics_set, "graphics_set" },
- { TYPE_STRING, &si.sounds_set, "sounds_set" },
- { TYPE_STRING, &si.music_set, "music_set" },
- { TYPE_SWITCH3,&si.override_level_graphics, "override_level_graphics" },
- { TYPE_SWITCH3,&si.override_level_sounds, "override_level_sounds" },
- { TYPE_SWITCH3,&si.override_level_music, "override_level_music" },
- { TYPE_INTEGER,&si.volume_simple, "volume_simple" },
- { TYPE_INTEGER,&si.volume_loops, "volume_loops" },
- { TYPE_INTEGER,&si.volume_music, "volume_music" },
- { TYPE_STRING, &si.touch.control_type, "touch.control_type" },
- { TYPE_INTEGER,&si.touch.move_distance, "touch.move_distance" },
- { TYPE_INTEGER,&si.touch.drop_distance, "touch.drop_distance" },
- { TYPE_INTEGER,&si.touch.transparency, "touch.transparency" },
- { TYPE_INTEGER,&si.touch.draw_outlined, "touch.draw_outlined" },
- { TYPE_INTEGER,&si.touch.draw_pressed, "touch.draw_pressed" },
- { TYPE_INTEGER,&si.touch.grid_xsize[0], "touch.virtual_buttons.0.xsize" },
- { TYPE_INTEGER,&si.touch.grid_ysize[0], "touch.virtual_buttons.0.ysize" },
- { TYPE_INTEGER,&si.touch.grid_xsize[1], "touch.virtual_buttons.1.xsize" },
- { TYPE_INTEGER,&si.touch.grid_ysize[1], "touch.virtual_buttons.1.ysize" },
+ Warn("cannot save score file '%s'", filename);
+
+ return;
+ }
+
+ info_chunk_size = 2 + (strlen(scores.level_identifier) + 1) + 2 + 2;
+ name_chunk_size = scores.num_entries * MAX_PLAYER_NAME_LEN;
+ scor_chunk_size = scores.num_entries * 2;
+ time_chunk_size = scores.num_entries * 4;
+
+ putFileChunkBE(file, "RND1", CHUNK_SIZE_UNDEFINED);
+ putFileChunkBE(file, "SCOR", CHUNK_SIZE_NONE);
+
+ putFileChunkBE(file, "VERS", SCORE_CHUNK_VERS_SIZE);
+ SaveScore_VERS(file, &scores);
+
+ putFileChunkBE(file, "INFO", info_chunk_size);
+ SaveScore_INFO(file, &scores);
+
+ putFileChunkBE(file, "NAME", name_chunk_size);
+ SaveScore_NAME(file, &scores);
+
+ putFileChunkBE(file, "SCOR", scor_chunk_size);
+ SaveScore_SCOR(file, &scores);
+
+ putFileChunkBE(file, "TIME", time_chunk_size);
+ SaveScore_TIME(file, &scores);
+
+ fclose(file);
+
+ SetFilePermissions(filename, permissions);
+}
+
+void SaveScore(int nr)
+{
+ char *filename = getScoreFilename(nr);
+ int i;
+
+ // used instead of "leveldir_current->subdir" (for network games)
+ InitScoreDirectory(levelset.identifier);
+
+ scores.file_version = FILE_VERSION_ACTUAL;
+ scores.game_version = GAME_VERSION_ACTUAL;
+
+ strncpy(scores.level_identifier, levelset.identifier, MAX_FILENAME_LEN);
+ scores.level_identifier[MAX_FILENAME_LEN] = '\0';
+ scores.level_nr = level_nr;
+
+ for (i = 0; i < MAX_SCORE_ENTRIES; i++)
+ if (scores.entry[i].score == 0 &&
+ scores.entry[i].time == 0 &&
+ strEqual(scores.entry[i].name, EMPTY_PLAYER_NAME))
+ break;
+
+ scores.num_entries = i;
+
+ if (scores.num_entries == 0)
+ return;
+
+ SaveScoreToFilename(filename);
+}
+
+
+// ============================================================================
+// setup file functions
+// ============================================================================
+
+#define TOKEN_STR_PLAYER_PREFIX "player_"
+
+
+static struct TokenInfo global_setup_tokens[] =
+{
+ {
+ TYPE_STRING,
+ &setup.player_name, "player_name"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.multiple_users, "multiple_users"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.sound, "sound"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.sound_loops, "repeating_sound_loops"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.sound_music, "background_music"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.sound_simple, "simple_sound_effects"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.toons, "toons"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.scroll_delay, "scroll_delay"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.forced_scroll_delay, "forced_scroll_delay"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.scroll_delay_value, "scroll_delay_value"
+ },
+ {
+ TYPE_STRING,
+ &setup.engine_snapshot_mode, "engine_snapshot_mode"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.engine_snapshot_memory, "engine_snapshot_memory"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.fade_screens, "fade_screens"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.autorecord, "automatic_tape_recording"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.show_titlescreen, "show_titlescreen"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.quick_doors, "quick_doors"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.team_mode, "team_mode"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.handicap, "handicap"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.skip_levels, "skip_levels"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.increment_levels, "increment_levels"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.auto_play_next_level, "auto_play_next_level"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.count_score_after_game, "count_score_after_game"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.show_scores_after_game, "show_scores_after_game"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.time_limit, "time_limit"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.fullscreen, "fullscreen"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.window_scaling_percent, "window_scaling_percent"
+ },
+ {
+ TYPE_STRING,
+ &setup.window_scaling_quality, "window_scaling_quality"
+ },
+ {
+ TYPE_STRING,
+ &setup.screen_rendering_mode, "screen_rendering_mode"
+ },
+ {
+ TYPE_STRING,
+ &setup.vsync_mode, "vsync_mode"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.ask_on_escape, "ask_on_escape"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.ask_on_escape_editor, "ask_on_escape_editor"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.ask_on_game_over, "ask_on_game_over"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.ask_on_quit_game, "ask_on_quit_game"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.ask_on_quit_program, "ask_on_quit_program"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.quick_switch, "quick_player_switch"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.input_on_focus, "input_on_focus"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.prefer_aga_graphics, "prefer_aga_graphics"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.prefer_lowpass_sounds, "prefer_lowpass_sounds"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.prefer_extra_panel_items, "prefer_extra_panel_items"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.game_speed_extended, "game_speed_extended"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.game_frame_delay, "game_frame_delay"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.sp_show_border_elements, "sp_show_border_elements"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.small_game_graphics, "small_game_graphics"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.show_snapshot_buttons, "show_snapshot_buttons"
+ },
+ {
+ TYPE_STRING,
+ &setup.graphics_set, "graphics_set"
+ },
+ {
+ TYPE_STRING,
+ &setup.sounds_set, "sounds_set"
+ },
+ {
+ TYPE_STRING,
+ &setup.music_set, "music_set"
+ },
+ {
+ TYPE_SWITCH3,
+ &setup.override_level_graphics, "override_level_graphics"
+ },
+ {
+ TYPE_SWITCH3,
+ &setup.override_level_sounds, "override_level_sounds"
+ },
+ {
+ TYPE_SWITCH3,
+ &setup.override_level_music, "override_level_music"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.volume_simple, "volume_simple"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.volume_loops, "volume_loops"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.volume_music, "volume_music"
+ },
+ {
+ TYPE_SWITCH,
+ &setup.network_mode, "network_mode"
+ },
+ {
+ TYPE_PLAYER,
+ &setup.network_player_nr, "network_player"
+ },
+ {
+ TYPE_STRING,
+ &setup.network_server_hostname, "network_server_hostname"
+ },
+ {
+ TYPE_STRING,
+ &setup.touch.control_type, "touch.control_type"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.touch.move_distance, "touch.move_distance"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.touch.drop_distance, "touch.drop_distance"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.touch.transparency, "touch.transparency"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.touch.draw_outlined, "touch.draw_outlined"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.touch.draw_pressed, "touch.draw_pressed"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.touch.grid_xsize[0], "touch.virtual_buttons.0.xsize"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.touch.grid_ysize[0], "touch.virtual_buttons.0.ysize"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.touch.grid_xsize[1], "touch.virtual_buttons.1.xsize"
+ },
+ {
+ TYPE_INTEGER,
+ &setup.touch.grid_ysize[1], "touch.virtual_buttons.1.ysize"
+ },