+/* setup screen titles */
+#define STR_SETUP_MAIN "Setup"
+#define STR_SETUP_GAME "Game & Menu"
+#define STR_SETUP_EDITOR "Editor"
+#define STR_SETUP_GRAPHICS "Graphics"
+#define STR_SETUP_SOUND "Sound & Music"
+#define STR_SETUP_ARTWORK "Custom Artwork"
+#define STR_SETUP_INPUT "Input Devices"
+#define STR_SETUP_TOUCH "Touch Controls"
+#define STR_SETUP_SHORTCUTS "Key Shortcuts"
+#define STR_SETUP_EXIT "Exit"
+#define STR_SETUP_SAVE_AND_EXIT "Save and Exit"
+
+#define STR_SETUP_CHOOSE_GAME_SPEED "Game Speed"
+#define STR_SETUP_CHOOSE_SCROLL_DELAY "Scroll Delay"
+#define STR_SETUP_CHOOSE_SNAPSHOT_MODE "Snapshot Mode"
+#define STR_SETUP_CHOOSE_WINDOW_SIZE "Window Scaling"
+#define STR_SETUP_CHOOSE_SCALING_TYPE "Anti-Aliasing"
+#define STR_SETUP_CHOOSE_RENDERING "Rendering Mode"
+#define STR_SETUP_CHOOSE_VOLUME_SIMPLE "Sound Volume"
+#define STR_SETUP_CHOOSE_VOLUME_LOOPS "Loops Volume"
+#define STR_SETUP_CHOOSE_VOLUME_MUSIC "Music Volume"
+#define STR_SETUP_CHOOSE_TOUCH_CONTROL "Control Type"
+#define STR_SETUP_CHOOSE_MOVE_DISTANCE "Move Distance"
+#define STR_SETUP_CHOOSE_DROP_DISTANCE "Drop Distance"
+
- { TYPE_ENTER_MENU, execSetupGame, "Game & Menu" },
- { TYPE_ENTER_MENU, execSetupEditor, "Editor" },
- { TYPE_ENTER_MENU, execSetupGraphics, "Graphics" },
- { TYPE_ENTER_MENU, execSetupSound, "Sound & Music" },
- { TYPE_ENTER_MENU, execSetupArtwork, "Custom Artwork" },
- { TYPE_ENTER_MENU, execSetupInput, "Input Devices" },
- { TYPE_ENTER_MENU, execSetupTouch, "Touch Controls" },
- { TYPE_ENTER_MENU, execSetupShortcuts, "Key Shortcuts" },
+ { TYPE_ENTER_MENU, execSetupGame, STR_SETUP_GAME },
+ { TYPE_ENTER_MENU, execSetupEditor, STR_SETUP_EDITOR },
+ { TYPE_ENTER_MENU, execSetupGraphics, STR_SETUP_GRAPHICS },
+ { TYPE_ENTER_MENU, execSetupSound, STR_SETUP_SOUND },
+ { TYPE_ENTER_MENU, execSetupArtwork, STR_SETUP_ARTWORK },
+ { TYPE_ENTER_MENU, execSetupInput, STR_SETUP_INPUT },
+ { TYPE_ENTER_MENU, execSetupTouch, STR_SETUP_TOUCH },
+ { TYPE_ENTER_MENU, execSetupShortcuts, STR_SETUP_SHORTCUTS },
- for (y = 0; y < 3; y++)
- {
- for (x = 0; x < 3; x++)
- {
- DrawFixedGraphic(xpos + x - 1, ypos + y - 1, IMG_MENU_CALIBRATE_BLUE, 0);
- check[x][y] = FALSE;
- }
- }
-
- DrawTextSCentered(mSY - SY + 6 * 32, FONT_TITLE_1, "Rotate joystick");
- DrawTextSCentered(mSY - SY + 7 * 32, FONT_TITLE_1, "in all directions");
- DrawTextSCentered(mSY - SY + 9 * 32, FONT_TITLE_1, "if all balls");
- DrawTextSCentered(mSY - SY + 10 * 32, FONT_TITLE_1, "are marked,");
- DrawTextSCentered(mSY - SY + 11 * 32, FONT_TITLE_1, "center joystick");
- DrawTextSCentered(mSY - SY + 12 * 32, FONT_TITLE_1, "and");
- DrawTextSCentered(mSY - SY + 13 * 32, FONT_TITLE_1, "press any button!");
-
- joy_value = JoystickExt(joystick_nr, TRUE);
- last_x = (joy_value & JOY_LEFT ? -1 : joy_value & JOY_RIGHT ? +1 : 0);
- last_y = (joy_value & JOY_UP ? -1 : joy_value & JOY_DOWN ? +1 : 0);
-
- /* eventually uncalibrated center position (joystick could be uncentered) */
- if (!ReadJoystick(joystick_nr, &joy_x, &joy_y, NULL, NULL))
- return FALSE;
-
- new_joystick_xmiddle = joy_x;
- new_joystick_ymiddle = joy_y;
-
- DrawFixedGraphic(xpos + last_x, ypos + last_y, IMG_MENU_CALIBRATE_RED, 0);
-
- FadeIn(REDRAW_FIELD);
-
- /* wait for potentially still pressed button to be released */
- while (JoystickExt(joystick_nr, TRUE) & JOY_BUTTON);
-
- while (result < 0)
- while (PendingEvent()) /* got event */
- {
- Event event;
-
- NextEvent(&event);
-
- switch (event.type)
- {
- case EVENT_KEYPRESS:
- switch (GetEventKey((KeyEvent *)&event, TRUE))
- {
- case KSYM_Return:
- if (check_remaining == 0)
- result = 1;
- break;
-
- case KSYM_Escape:
- FadeSkipNextFadeIn();
- result = 0;
- break;
-
- default:
- break;
- }
- break;
-
- case EVENT_KEYRELEASE:
- key_joystick_mapping = 0;
- break;
-
- default:
- HandleOtherEvents(&event);
- break;
- }
- }
-
- if (!ReadJoystick(joystick_nr, &joy_x, &joy_y, NULL, NULL))
- return FALSE;
-
- new_joystick_xleft = MIN(new_joystick_xleft, joy_x);
- new_joystick_xright = MAX(new_joystick_xright, joy_x);
- new_joystick_yupper = MIN(new_joystick_yupper, joy_y);
- new_joystick_ylower = MAX(new_joystick_ylower, joy_y);
-
- setup.input[player_nr].joy.xleft = new_joystick_xleft;
- setup.input[player_nr].joy.yupper = new_joystick_yupper;
- setup.input[player_nr].joy.xright = new_joystick_xright;
- setup.input[player_nr].joy.ylower = new_joystick_ylower;
- setup.input[player_nr].joy.xmiddle = new_joystick_xmiddle;
- setup.input[player_nr].joy.ymiddle = new_joystick_ymiddle;
-
- CheckJoystickData();
-
- joy_value = JoystickExt(joystick_nr, TRUE);
-
- if (joy_value & JOY_BUTTON && check_remaining == 0)
- result = 1;
-
- x = (joy_value & JOY_LEFT ? -1 : joy_value & JOY_RIGHT ? +1 : 0);
- y = (joy_value & JOY_UP ? -1 : joy_value & JOY_DOWN ? +1 : 0);
-
- if (x != last_x || y != last_y)
- {
- DrawFixedGraphic(xpos + last_x, ypos + last_y,
- IMG_MENU_CALIBRATE_YELLOW, 0);
- DrawFixedGraphic(xpos + x, ypos + y,
- IMG_MENU_CALIBRATE_RED, 0);
-
- last_x = x;
- last_y = y;
-
- if (check_remaining > 0 && !check[x+1][y+1])
- {
- check[x+1][y+1] = TRUE;
- check_remaining--;
- }
- }
-
- BackToFront();
- }
-
- /* calibrated center position (joystick should now be centered) */
- if (!ReadJoystick(joystick_nr, &joy_x, &joy_y, NULL, NULL))
- return FALSE;
+ int xpos = mSX - SX;
+ int ypos = mSY - SY;
+ unsigned int wait_frame_delay = 0;
+ unsigned int wait_frame_delay_value = 2000;
- { 370, 175, MARKER_BUTTON, "a", },
- { 410, 142, MARKER_BUTTON, "b", },
- { 334, 145, MARKER_BUTTON, "x", },
- { 372, 115, MARKER_BUTTON, "y", },
- { 176, 145, MARKER_BUTTON, "back", },
- { 230, 145, MARKER_BUTTON, "guide", },
- { 285, 145, MARKER_BUTTON, "start", },
- { 124, 220, MARKER_BUTTON, "dpleft", },
- { 160, 248, MARKER_BUTTON, "dpdown", },
- { 192, 220, MARKER_BUTTON, "dpright", },
- { 160, 192, MARKER_BUTTON, "dpup", },
- { 64, 60, MARKER_BUTTON, "leftshoulder", },
- { 102, 10, MARKER_AXIS_Y, "lefttrigger", },
- { 396, 60, MARKER_BUTTON, "rightshoulder", },
- { 360, 10, MARKER_AXIS_Y, "righttrigger", },
- { 87, 161, MARKER_BUTTON, "leftstick", },
- { 296, 230, MARKER_BUTTON, "rightstick", },
- { 87, 161, MARKER_AXIS_X, "leftx", },
- { 87, 161, MARKER_AXIS_Y, "lefty", },
- { 296, 230, MARKER_AXIS_X, "rightx", },
- { 296, 230, MARKER_AXIS_Y, "righty", },
+ { 356, 155, MARKER_BUTTON, "a", },
+ { 396, 122, MARKER_BUTTON, "b", },
+ { 320, 125, MARKER_BUTTON, "x", },
+ { 358, 95, MARKER_BUTTON, "y", },
+ { 162, 125, MARKER_BUTTON, "back", },
+ { 216, 125, MARKER_BUTTON, "guide", },
+ { 271, 125, MARKER_BUTTON, "start", },
+ { 110, 200, MARKER_BUTTON, "dpleft", },
+ { 146, 228, MARKER_BUTTON, "dpdown", },
+ { 178, 200, MARKER_BUTTON, "dpright", },
+ { 146, 172, MARKER_BUTTON, "dpup", },
+ { 50, 40, MARKER_BUTTON, "leftshoulder", },
+ { 88, -10, MARKER_AXIS_Y, "lefttrigger", },
+ { 382, 40, MARKER_BUTTON, "rightshoulder", },
+ { 346, -10, MARKER_AXIS_Y, "righttrigger", },
+ { 73, 141, MARKER_BUTTON, "leftstick", },
+ { 282, 210, MARKER_BUTTON, "rightstick", },
+ { 73, 141, MARKER_AXIS_X, "leftx", },
+ { 73, 141, MARKER_AXIS_Y, "lefty", },
+ { 282, 210, MARKER_AXIS_X, "rightx", },
+ { 282, 210, MARKER_AXIS_Y, "righty", },