Power Pad

From NESdevWiki

Jump to: navigation, search

The Power Pad exercise mat for the Nintendo Entertainment System has twelve sensors arranged in a 3x4 grid, which the player steps on to control the action on the screen:

The Power Pad can be used in either controller port, though most games will only allow you to use it in controller port #2, leaving port #1 for a standard controller used for navigating through options.

          |                        |
,---------+---------.    ,---------+---------.
| POWER PAD  side B |    | POWER PAD  side A |
|  (1) (2) (3) (4)  |    |      (O) (O)      |
|                   |    |                   |
|  (5) (6) (7) (8)  |    |  (O) (X) (X) (O)  |
|                   |    |                   |
|  (9) (10)(11)(12) |    |      (O) (O)      |
|                   |    |                   |
`-------------------'    `-------------------'

Most games used side B, with the numbers on top. A few games turned the pad over to side A, whose markings lack numerals and lack markings for spaces 1, 4, 9, and 12 entirely (but they still send a signal). There is a third possible configuration, which no official game used, but which may be useful for homebrew dance simulation games in the style of Dance Dance Revolution: side B rotated 90 degrees anticlockwise, placing sensors 4, 8, and 12 toward the display.

| ,---------------.           | ,---------------.
| |  SIDE B       |           | |  SIDE DDR     |
| |  (4) (8) (12) |           | | (Sel)    (St) |
| |               |           | |               |
| |  (3) (7) (11) |    ____   | |  (X) (U) (O)  |
`-+               |    ____   `-+               |
  |  (2) (6) (10) |             |  (L)     (R)  |
  |               |             |               |
  |  (1) (5) (9)  |             |      (D)      |
  |               |             |               |
  `---------------'             `---------------'

[edit] Hardware interface

[edit] Input ($4016 write)

7  bit  0
---- ----
xxxx xxxS
        |
        +- Controller shift register strobe

Writing 1 to this bit will record the state of each button. Writing 0 afterwards will allow the buttons to be read back, two at a time.

[edit] Output ($4016/$4017 read)

7  bit  0
---- ----
xxxH Lxxx
   | |
   | +---- Serial data from buttons 2, 1, 5, 9, 6, 10, 11, 7
   +------ Serial data from buttons 4, 3, 12, 8 (following 4 bits read as H=1)

The first 8 reads will indicate which buttons are pressed (1 if pressed, 0 if not pressed); all subsequent reads will return H=1 and L=1.

Remember to save both bits that you get from each read.

Personal tools