+/* ------------------------------------------------------------------------- */
+/* new setup functions */
+/* ------------------------------------------------------------------------- */
+
+#define MAX_LINE_LEN 1000
+#define MAX_SETUP_TOKEN_LEN 100
+#define MAX_SETUP_VALUE_LEN 100
+
+#define TOKEN_STR_FILE_IDENTIFIER "file_identifier"
+#define TOKEN_STR_LAST_LEVEL_SERIES "last_level_series"
+#define TOKEN_STR_ALIAS_NAME "alias_name"
+
+#define TOKEN_STR_PLAYER_PREFIX "player_"
+#define TOKEN_VALUE_POSITION 30
+#define TOKEN_INVALID -1
+#define TOKEN_IGNORE -99
+
+#define SETUP_TOKEN_ALIAS_NAME 100
+
+#define SETUP_TOKEN_SOUND 0
+#define SETUP_TOKEN_SOUND_LOOPS 1
+#define SETUP_TOKEN_SOUND_MUSIC 2
+#define SETUP_TOKEN_SOUND_SIMPLE 3
+#define SETUP_TOKEN_TOONS 4
+#define SETUP_TOKEN_DIRECT_DRAW 5
+#define SETUP_TOKEN_SCROLL_DELAY 6
+#define SETUP_TOKEN_SOFT_SCROLLING 7
+#define SETUP_TOKEN_FADING 8
+#define SETUP_TOKEN_AUTORECORD 9
+#define SETUP_TOKEN_QUICK_DOORS 10
+#define SETUP_TOKEN_USE_JOYSTICK 11
+#define SETUP_TOKEN_JOYSTICK_NR 12
+#define SETUP_TOKEN_JOY_SNAP 13
+#define SETUP_TOKEN_JOY_BOMB 14
+#define SETUP_TOKEN_KEY_LEFT 15
+#define SETUP_TOKEN_KEY_RIGHT 16
+#define SETUP_TOKEN_KEY_UP 17
+#define SETUP_TOKEN_KEY_DOWN 18
+#define SETUP_TOKEN_KEY_SNAP 19
+#define SETUP_TOKEN_KEY_BOMB 20
+
+#define NUM_SETUP_TOKENS 21
+
+static struct
+{
+ char *token, *value_true, *value_false;
+} setup_info[] =
+{
+ { "sound", "on", "off" },
+ { "repeating_sound_loops", "on", "off" },
+ { "background_music", "on", "off" },
+ { "simple_sound_effects", "on", "off" },
+ { "toons", "on", "off" },
+ { "double_buffering", "off", "on" },
+ { "scroll_delay", "on", "off" },
+ { "soft_scrolling", "on", "off" },
+ { "screen_fading", "on", "off" },
+ { "automatic_tape_recording", "on", "off" },
+ { "quick_doors", "on", "off" },
+
+ /* for each player: */
+ { ".use_joystick", "true", "false" },
+ { ".joystick_device", "second", "first" },
+ { ".joy.snap_field", "", "" },
+ { ".joy.place_bomb", "", "" },
+ { ".key.move_left", "", "" },
+ { ".key.move_right", "", "" },
+ { ".key.move_up", "", "" },
+ { ".key.move_down", "", "" },
+ { ".key.snap_field", "", "" },
+ { ".key.place_bomb", "", "" }
+};
+
+static char *string_tolower(char *s)