On this page
  1. Design
  2. Origins
  3. Games
  4. Related
  5. References
  6. Sources
Control PadSelectStartBA

The NES controller (NES-004) came with the Nintendo Entertainment System, two to each console2. Its parts are the Control Pad, the Select and Start buttons, and buttons B and A, with B to the left of A1. Nintendo of America introduced the NES in the New York City area before Christmas 19852. The earliest known cross pad is on Nintendo’s Game & Watch Donkey Kong of 19823.

#Design

Nintendo’s manual calls the pad the “4-way Control Pad”: it moves the main character up, down, left, and right, and A and B do what each game gives them4. By the manual, Select picks a variation of the game and Start begins it and pauses it, both on controller 1 only4. That rule is for games to follow, not the hardware’s: both controllers report all eight buttons5, and Super Mario Bros.’s title screen takes Start and Select from either one6. Seen from above, the controller measures about 124 × 53 mm7.

The console reads a controller one button at a time. A game writes 1 and then 0 to the controller’s port, which stops the controller reloading its buttons, and each read after that returns the next one, in the order A, B, Select, Start, Up, Down, Left, Right5. Games then sort the bits into buttons held and buttons newly pressed (controller reading).

#Origins

Game & Watch Donkey Kong, released in June 1982, a year before the Famicom, has the earliest known one3. Its makers built many prototypes, and Gunpei Yokoi insisted on a slightly concave center, so that the pad could be worked without looking8.

Nintendo patented the switch in the United States as US 4,687,200, “Multi-directional switch”, naming Ichiro Shirai as its inventor. It was filed in August 1985 as a continuation of an application of August 1983, and it issued in August 1987. Its drawings put the cross on a handheld game with a liquid-crystal screen9. The first claim never says “cross”: it covers a key that tilts in several directions under a fingertip, with a concave top, and later claims add arms reaching out from the center, four of them making a cross10.

Nintendo launched the Family Computer (Famicom), the NES’s Japanese original, in 198311. Its second controller, built into the console, has no Select or Start5.

Games

References

  1. ^ abManualNES Control Deck manual
    How we know
    CONTROL PAD … SELECT BUTTON … START BUTTON … BUTTON B BUTTON A
    p. 2, 1. NES Components, Controller figure · archived copy ↗

    Claim page

  2. ^ abManualNES Control Deck manual · CHM, NES-004 controller · iFixit, NES controller · Computer Entertainer, February 1986
    How we know
    Your NES includes two identical controllers.
    p. 10, Using the Controllers · archived copy ↗
    NES-004 (MODEL NUMBER)
    Item Details · archived copy ↗
    The controller shipped with the original Nintendo Entertainment System in 1985. It has the model number NES-004.
    overview · archived copy ↗
    area a little before Christmas, 1985 by Nintendo of America.
    p. 12, The Nintendo Entertainment System · archived copy ↗

    Claim page

  3. ^ abInterviewIwata Asks: Game & Watch, vol. 1 p. 5 · Nintendo: Game & Watch history
    How we know
    それに、このタイトルでは … 初めて十字ボタンを採用しました。
    page 5, Izushi · archived copy ↗
    Our translationAnd this title was the first to adopt the cross button.
    ファミコンが発売される1年前に … 十字ボタンが『ドンキーコング』で初めて採用されたんですよね。
    page 5, Iwata · archived copy ↗
    Our translationThe cross button was first adopted in Donkey Kong, a year before the Famicom came out.
    『ドンキーコング』=ゲーム&ウオッチのマルチスクリーンシリーズの第2弾ソフト。 … 1982年6月発売。
    page 5, note 21 · archived copy ↗
    Our translationDonkey Kong: the second title in the Game & Watch Multi Screen series. … Released June 1982.
    またこのシリーズから方向入力に初めて十字キーが登場しました。
    Multi Screen series · archived copy ↗
    Our translationAnd with this series the cross key first appeared, for direction input.

    Claim page

  4. ^ abManualNES Control Deck manual
    How we know
    SELECT BUTTON (Controller ① only). … The SELECT button is used to … select the particular variation you want to play from the menu displayed at the begin- … START BUTTON (Controller ① only) … push the START button to … start the game. The START button can also be used to take a … If you push the START button in the middle of a game, the game will freeze … (pause) where it is until the START button is pressed again. … The ④-way Control Pad moves the main character of the game up, down, left, and right; … although its function may vary from game to game. … Buttons A and B perform different functions in different games.
    p. 10, Using the Controllers · archived copy ↗

    Claim page

  5. ^ abcWikiNESdev Wiki, “Standard controller”
    How we know
    While S (strobe) is high, the shift registers in the controllers are continuously reloaded from the button states, and reading $4016/$4017 will keep returning the current state of the first button (A). Once S goes low, this reloading will stop. … Hence a 1/0 write sequence is required to get the button states, after which the buttons can be read back one at a time.
    Input ($4016 write) · archived copy ↗
    Status for each controller is returned as an 8-bit report in the following order: A, B, Select, Start, Up, Down, Left, Right. … Each read reports one bit at a time through D0. … Primary controller status bit |+-- Expansion controller status bit (Famicom) … The first 8 reads will indicate which buttons or directions are pressed (1 if pressed, 0 if not pressed). … controller 1 is read through $4016, and controller 2 is separately read through $4017.
    Output ($4016/$4017 read) · archived copy ↗
    The original Famicom's hard-wired second controller (II) is missing the Select and Start buttons. Its corresponding bits will read as 0 … These gave the same standard 8-bit report, but through D1 instead of D0.
    Famicom · archived copy ↗

    Claim page

  6. ^ abCodeSuper Mario Bros. instruction booklet · Xkeeper0/smb1prg.asm 330–353, 364–376, 402–407, 428–433, 622–626, 638–645
    How we know
    Use this button to move the mushroom mark to the
    p. 4, SELECT button · archived copy ↗
    Press this button to begin.
    p. 5, START button · archived copy ↗
    330GameMenuRoutine:
    331	LDY #$00
    332	LDA SavedJoypad1Bits                         ; check to see if either player pressed
    333	ORA SavedJoypad2Bits                         ; only the start button (either joypad)
    334	CMP #Start_Button
    335	BEQ StartGame
    336	CMP #A_Button+Start_Button                   ; check to see if A + start was pressed
    337	BNE ChkSelect                                ; if not, branch to check select button
    338StartGame:
    339	JMP ChkContinue                              ; if either start or A + start, execute here
    340ChkSelect:
    341	CMP #Select_Button                           ; check to see if the select button was pressed
    ⋮
    
    src/prg.asm lines 330–353 at 1cc3c92 · upstream ↗
    364	CPY #$01                                     ; was the B button pressed earlier?  if so, branch
    365	BEQ IncWorldSel                              ; note this will not be run if world selection is disabled
    366	LDA NumberOfPlayers                          ; if no, must have been the select button, therefore
    367	EOR #%00000001                               ; change number of players and draw icon accordingly
    368	STA NumberOfPlayers
    369	JSR DrawMushroomIcon
    370	JMP NullJoypad
    371IncWorldSel:
    372	LDX WorldSelectNumber                        ; increment world select number
    373	INX
    374	TXA
    375	AND #%00000111                               ; mask out higher bits
    ⋮
    
    src/prg.asm lines 364–376 at 1cc3c92 · upstream ↗
    402ChkContinue:
    403	LDY DemoTimer                                ; if timer for demo has expired, reset modes
    404	BEQ ResetTitle
    405	ASL                                          ; check to see if A button was also pushed
    406	BCC StartWorld1                              ; if not, don't load continue function's world number
    407	LDA ContinueWorld                            ; load previously saved world number for secret
    
    src/prg.asm lines 402–407 at 1cc3c92 · upstream ↗

    3 more excerpts on the claim page

  7. ^WebiFixit, NES controller · CHM, NES-004 controller
    How we know
    Width: 4.86 inches (123.4 mm) … Height: 2.096 inches (53.2 mm) … Depth: .6875 inches (17.5 mm)
    Specifications · archived copy ↗
    4 7/8w x 3/4h x 2 1/8l (in) … 12.38w x 1.9h x 5.4l (cm)
    Item Details, Dimension · archived copy ↗

    Claim page

  8. ^InterviewIwata Asks: Game & Watch, vol. 1 p. 5
    How we know
    この十字ボタンは、ものすごく試行錯誤していました。
    page 5, Yamamoto · archived copy ↗
    Our translationWe went through an enormous amount of trial and error on this cross button.
    本当にたくさんの試作品をつくりました。 … 手元を見なくても、きっちり操作できるように … 十字ボタンの真ん中を少し凹んだ形状にしたりとか、 … 横井さんはものすごくこだわっていましたから。
    page 5, Izushi · archived copy ↗
    Our translationWe made a great many prototypes. So it could be worked precisely without looking at your hands, Mr. Yokoi was very particular, about things like making the middle of the cross button slightly concave.

    Claim page

  9. ^PatentUS patent 4,687,200 (cross-shaped switch)
    How we know
    MULTI-DIRECTIONAL SWITCH … Aug. 18, 1987 … inventor: Ichiro Shirai, Kyoto, Japan … Assignee: Nintendo Co., Ltd., Kyoto, Japan … Aug. 9, 1985 … Continuation of Ser. No. 521,116, Aug. 5, 1983, aban … doned.
    p. 1, front page · archived copy ↗
    character moving switch 8 is formed in the shape of a … cross and is adapted such that characters 9a to 9d are … selectively displayed responsive to the pressing direc … 1, a body 1 comprises a liquid crystal display plate 2. … Referring to FIG. 2, the hand-held type game playing apparatus is the same as the apparatus shown in FIG. 1, except the below described points.
    col. 3, description of FIG. 2 · archived copy ↗

    Claim page

  10. ^PatentUS patent 4,687,200 (cross-shaped switch)
    How we know
    1. A multi-directional switch which can be manually … actuated in multiple directions by a depressing action … with the tip of a finger of an operator … (b) an integral key member disposed above said base … having a downwardly concave upper surface for … receiving a fingertip of the operator
    col. 6, claim 1 · archived copy ↗
    6. A multi-directional switch according to claim 1, … the manipulation portion of said key member includes … a plurality of protrusions extending outwardly … from a central portion of said key member
    col. 6, claim 6 · archived copy ↗
    the shape of a cross is formed with inclinations so as to … become concave in the center. With these inclinations, … the operational surface 14 is fitted perfectly for the … touch of the fingers
    col. 3 · archived copy ↗
    8. A multi-directional switch according to claim 6, … including four protrusions, two of said protrusions ex … said four protrusions thereby defining a cruciform … shape.
    col. 7, claim 8 · archived copy ↗

    Claim page

  11. ^PublisherNintendo, Company History
    How we know
    Launched the home video game system, Family Computer System (known as Nintendo Entertainment System outside Japan.)
    1983 · archived copy ↗

    Claim page

  12. ^CodeSuper Mario Bros. instruction booklet · Xkeeper0/smb1prg.asm 4913–4918, 5000–5010, 5024–5025, 5142–5161, 4372–4378, 4702–4711, 213–216, 186–188, 4080–4083
    How we know
    Jump... ... Mario (Luigi) jumps higher if you hold the button down longer.
    p. 4, 2. Names of Controller Parts, A button · archived copy ↗
    Accelerate ... Press this button to speed up, then jump and you can go all the … Fireballs ...... After you pick up the fire flower, you can use this button to throw
    p. 4, 2. Names of Controller Parts, B button · archived copy ↗
    Walk to the right. … (Push button B at the … Crouch. … (Super Mario only.)
    p. 3, 2. Names of Controller Parts, Control Pad · archived copy ↗
    If you wish to interrupt play in the middle of a game, press the START button. … The pause tone will sound, and the game will stop. Press the START button again
    p. 5, START button · archived copy ↗
    4913	LDA A_B_Buttons                              ; check for A button press
    4914	AND #A_Button
    4915	BEQ NoJump                                   ; if not, branch to something else
    4916	AND PreviousA_B_Buttons                      ; if button not pressed in previous frame, branch
    4917	BEQ ProcJumping
    4918NoJump:
    
    src/prg.asm lines 4913–4918 at 1cc3c92 · upstream ↗
    5000ProcPRun:
    5001	INY                                          ; if mario on the ground, increment Y
    5002	LDA AreaType                                 ; check area type
    5003	BEQ ChkRFast                                 ; if water type, branch
    5004	DEY                                          ; decrement Y by default for non-water type area
    5005	LDA Left_Right_Buttons                       ; get left/right controller bits
    5006	CMP Player_MovingDir                         ; check against moving direction
    5007	BNE ChkRFast                                 ; if controller bits <> moving direction, skip this part
    5008	LDA A_B_Buttons                              ; check for b button pressed
    5009	AND #B_Button
    5010	BNE SetRTmr                                  ; if pressed, skip ahead to set timer
    
    src/prg.asm lines 5000–5010 at 1cc3c92 · upstream ↗
    5024SetRTmr:
    5025	LDA #$0a                                     ; if b button pressed, set running timer
    
    src/prg.asm lines 5024–5025 at 1cc3c92 · upstream ↗
    Walk to the left.
    p. 3, 2. Names of Controller Parts, Control Pad · archived copy ↗

    6 more excerpts on the claim page

  13. ^CodeSuper Mario Bros. instruction booklet · Xkeeper0/smb1prg.asm 2337–2341, 4921–4930, 5000–5003, 4361–4371, 213–216
    How we know
    Swim... ..When you're in the water, each press of this button makes you bob
    p. 4, 2. Names of Controller Parts, A button · archived copy ↗
    2337	LDA AreaType                                 ; check area type
    2338	BNE ChkStPos                                 ; if water type, set swimming flag, otherwise do not set
    2339	INY
    2340ChkStPos:
    2341	STY SwimmingFlag
    
    src/prg.asm lines 2337–2341 at 1cc3c92 · upstream ↗
    4921ProcJumping:
    4922	LDA Player_State                             ; check player state
    4923	BEQ InitJS                                   ; if on the ground, branch
    4924	LDA SwimmingFlag                             ; if swimming flag not set, jump to do something else
    4925	BEQ NoJump                                   ; to prevent midair jumping, otherwise continue
    4926	LDA JumpSwimTimer                            ; if jump/swim timer nonzero, branch
    4927	BNE InitJS
    4928	LDA Player_Y_Speed                           ; check player's vertical speed
    4929	BPL InitJS                                   ; if player's vertical speed motionless or down, branch
    4930	JMP X_Physics                                ; if timer at zero and player still rising, do not swim
    
    src/prg.asm lines 4921–4930 at 1cc3c92 · upstream ↗
    5000ProcPRun:
    5001	INY                                          ; if mario on the ground, increment Y
    5002	LDA AreaType                                 ; check area type
    5003	BEQ ChkRFast                                 ; if water type, branch
    
    src/prg.asm lines 5000–5003 at 1cc3c92 · upstream ↗

    2 more excerpts on the claim page

Sources

Code

Primary

  • Nintendo. 1988. “Nintendo Entertainment System Control Deck instruction manual (1988).” NES Control Deck instruction manual, chapter I (NES Instruction Manual). Nintendo of America. original · archived · licence, all uses
  • Co., Nintendo and Ltd. n.d. “社長が訊く「ゲーム&ウオッチ」 Vol.1, page 5.” Nintendo Co., Ltd. original · archived · licence, all uses
  • Co., Nintendo and Ltd. n.d. “ゲーム&ウオッチ ヒストリー (Nintendo Game & Watch history page).” Nintendo Co., Ltd. original · archived · licence, all uses
  • Nintendo. 1985. “Super Mario Bros. instruction booklet (NES).” Super Mario Bros. instruction booklet, pp. 1-16. Nintendo of America. original · archived · licence, all uses
  • Ichiro, Shirai,. 1987. “US 4,687,200: Multi-directional switch.” United States patent 4,687,200, filed 9 August 1985 as a continuation of Ser. No. 521,116, filed 5 August 1983 (abandoned). Nintendo Co., Ltd. (assignee). original · archived · licence, all uses
  • Co., Nintendo and Ltd. 2026. “Corporate Information: Company History (Nintendo).” original · archived · licence, all uses

Secondary

  • Museum, Computer History. n.d. “Nintendo Entertainment System controller (Computer History Museum, X3821.2007).” Computer History Museum collection catalog 102673391. original · archived · licence, all uses
  • iFixit contributors. n.d. “Nintendo Entertainment System Controller (iFixit device page).” iFixit. original · archived · licence, all uses
  • Computer Entertainer editors. 1986. “Computer Entertainer, Vol. 4, No. 11 (February 1986).” Computer Entertainer, vol. 4, no. 11 (February 1986), pp. 12-13. Computer Entertainer. original · archived · licence, all uses
  • NESdev Wiki contributors. n.d. “Standard controller.” NESdev Wiki. Version oldid 23466. original · archived · licence, all uses