## Controller

The following cautions should be observed when programming a game that uses the standard Nintendo 64 Controller.

- 3-1 Re-calibration of the Control Stick (Required)
- 3-2 Control Pad Operation (Required)
- 3-3 Operation of Unused Buttons (Required)
- 3-4 Mechanical "Play" in Control Stick (Recommended)
- 3-5 Maximum Range of Control Stick Value (Required)
- 3-6 Input Value of Control Stick (Required)

### 3-1 Re-calibration of the Control Stick (Required)

Caution
For games in which the Control Stick is used, the developer must design the game program in such a way that the L Button, R Button, and Start Button will not be pressed simultaneously as a part of normal game play.

Discussion
The standard N64 Controller has a function which calibrates the neutral position of the Control Stick by pressing the L Button, R Button and Start Button at the same time. An accidental re-calibration of the Control Stick must be avoided during normal operation of the game. In addition, if a user chooses to re-calibrate the Control Stick after game play has begun, ensure that the game works as intended when game play is resumed. For more information, refer to Developer News 1.3, Section 2: Control Stick RESET Function.

### 3-2 Control Pad Operation (Required)

Caution
Ensure that the program operates as intended, even if the Up and Down or Left and Right Control Pad data are input at the same time.

Discussion
After years of normal usage, there is a possibility that Up and Down or Left and Right Control Pad data may be input at the same time.

Examples of methods which may be used to prevent "Up and Down" or "Left and Right" input are:

1. Set a priority order for Up and Down and Left and Right inputs.
2. Invalidate the input.

### 3-3 Operation of Unused Buttons (Required)

Caution
Ensure that the game continues to function normally even if the user pushes a button that is not used in the game. Also ensure that the game continues to function as intended even if the user presses buttons on Controllers not being used in a 1-player game.

Discussion
A button which is not intended to be used in game play may be pushed by the user. In addition, an accessory may be connected to the Control Deck. The accessory may cause unexpected data input. Neither of these situations should impact game play.

If the developer uses a button for a debugging mode which is not used during normal game play, ensure that it has no effect if pressed during normal game play.

### 3-4 Mechanical "Play" in Control Stick (Recommended)

Caution
It is recommended that a method is used to prevent mechanical "play" in the Control Stick from generating unwanted input data.

Discussion
There is a small amount of mechanical play in the Control Stick of every Controller. The amount of mechanical play will vary from one Control Stick to another. An allowance should be made to ensure that a slight movement by the Control Stick, when it has not been touched by the user, will not be considered as a valid Control Stick input.

For more information, refer to Developer News 1.3, Section 1: N64 Controller Control Stick Resolution Specifications.

### 3-5 Maximum Range of Control Stick Value (Required)

Caution
Programs must be designed to use input values that are possible using all Controllers.

Discussion
The maximum range of the Control Stick value will vary somewhat from one Controller to another. In addition, the resolution of a specified Controller may deteriorate after it has been used for a period of time. To accomplish the above requirement, we recommend the following values be used for Control Stick range.

        Horizontal direction of X axis   61
        Vertical direction of Y axis     63
        Diagonal direction of X axis     45
        Diagonal direction of Y axis     47

The center stop width of the Control Stick is relatively unimportant for a game that treats the Control Stick data as an absolute location (such as a table tennis game), and the values for XBM, XCM, YBM, and YCM (in the illustration on the following page) can be used for the program's actual range. However, when better resolution is required, each game must be calibrated individually, with the Controller which is being used. In other words, the program's center stop width may require adjustment in the application. The amount of adjustment may also vary according to the amount of usage the Controller has seen.

For example: A new Controller will present the following values.

XA |  | MAX: 7 Counts
XBM | minimum guaranteed value of XB, XB' | MIN: 70 Counts
XCM | minimum guaranteed value of XC, XC', XC'', XC''' | MIN: 54 Counts
YA |  | MAX: 7 Counts
YBM | minimum guaranteed value of YB, YB' | MIN: 74 Counts
YCM | minimum guaranteed value of YC, YC', YC'', YC''' | MIN: 56 Counts

While a Controller which has been used for approximately 5 million direction changes will present these values.

XA |  | MAX: 7 Counts
XBM | minimum guaranteed value of XB, XB' | MIN: 68 Counts
XCM | minimum guaranteed value of XC, XC', XC'', XC''' | MIN: 52 Counts
YA |  | MAX: 7 Counts
YBM | minimum guaranteed value of YB, YB' | MIN: 70 Counts
YCM | minimum guaranteed value of YC, YC', YC'', YC''' | MIN: 54 Counts

Given the above values, the program's actual range can be calculated, as follows.

      Horizontal direction of X axis (one side) MIN = XBM - XA = 68 - 7 = 61 Counts
      Vertical direction of Y axis (one side) MIN = YBM - YA = 70 - 7 = 63 Counts
      Diagonal direction of X axis (one side) MIN (45°) = XCM - XA = 52 - 7 = 45 Counts
      Diagonal direction of Y axis (one side) MIN (45°) = YCM - YA = 54 - 7 = 47 Counts

Symbol Explanation:

      XA   :    Maximum horizontal center stop width
      XB   :    Minimum horizontal counts left
      XB'  :    Minimum horizontal counts right
      XC   :    Minimum horizontal counts with Control Stick in the
                up/right direction
      XC'  :    Minimum horizontal counts with Control Stick in the
                up/left direction
      XC'' :    Minimum horizontal counts with Control Stick in the
                down/left direction
      XC''':    Minimum horizontal counts with Control Stick in the
                down/right direction
      YA   :    Maximum vertical center stop width
      YB   :    Minimum vertical counts up
      YB'  :    Minimum vertical counts down
      YC   :    Minimum vertical counts with Control Stick in the up/right
                direction
      YC'  :    Minimum vertical counts with Control Stick in the up/left
                direction
      YC'' :    Minimum vertical counts with Control Stick in the down/left
                direction
      YC''':    Minimum vertical counts with Control Stick in the down/right
                direction

### 3-6 Input Value of Control Stick (Required)

Caution
Programs must be designed any Control Stick value between +127 and -127 will be accepted as a normal input.

Discussion
For example, assume that the normal horizontal range of a specific Controller is from +68 to -68. If the Control Stick is physically shifted to the left when it is calibrated, the horizontal range of the Control Stick may shift to +75 to -50. Since these values are still between +127 and -127, they should be considered normal values, and the game should continue.

© 1999 Nintendo of America Inc.
Release Date: March 1999