The Power Pad brand dance 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:
| |
,---------+---------. ,---------+---------.
| 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) |
| | | |
`---------------' `---------------'
Hardware interface
The following assumes familiarity with NES programming, especially the contents of my writeup in 2A03.
To read the Power Pad, first write 1 then 0 to $4016 (as for joypads).
Then:
$4016 (read): Player 1 Power Pad (rare)
76543210
||
|+---- Button state, in order 2, 1, 5, 9, 6, 10, 11, 7
+----- Button state, in order 4, 3, 12, 8
$4017 (read): Player 2 Power Pad (most common)
76543210
||
|+---- Button state, in order 2, 1, 5, 9, 6, 10, 11, 7
+----- Button state, in order 4, 3, 12, 8
Remember to save BOTH bits that you get from each read.
But if you actually do try to make a dance game for the NES, you'll have to put in a special mode for emulators because of the unavoidable audio latency that Microsoft Windows imposes. For example, on my system, FCE Ultra delays audio by 100 milliseconds; to compensate, delay the spawning of arrows by six frames.