- int x, y, last_x, last_y, xpos = 8, ypos = 3;
- boolean check[3][3];
- int check_remaining = 3 * 3;
- int joy_x, joy_y;
- int joy_value;
- int result = -1;
-
- if (joystick.status == JOYSTICK_NOT_AVAILABLE)
- return FALSE;
-
- if (!joystick_active || !setup.input[player_nr].use_joystick)
- return FALSE;
-
- FadeSetEnterMenu();
- FadeOut(REDRAW_FIELD);
-
- ClearField();
-
- 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)