Power Pad information --------------------- Version: 1.0 (09/23/99) ----------------------- *DISCLAIMER* Right now I don't have much time to reverse-engineer the thing, so the information in here might be correct or incorrect. Use at your own risk. However, you can be sure that this info will become (if it's not already) 100% accurate in the near future, and I will include schematics. **************** This is somewhat preliminary. Soon, I will add some reading code, a test program, schematics, and some other goodies. **************** What is a Power Pad ? --------------------- The Power Pad is a device conceived by Nintedo which serves as an "exercising fun center" for the whole family. It was made for both the Famicom and NES. The info in this file is in regards to the NES version. How does it work ? ------------------ Well, simply put, it's a vinyl mat with 12 touch-sensitive "switches" or "buttons" area drawn on the unit. It has 2 sides, of which the only difference resides on the pattern drawn on the mat. When you step on a "button", a bit is set in the data stream. You can simulteaneously detect the state of the 12 buttons. Data is sent using only ONE controller port, but is parallel: the pad is separated in 2 banks of 6 switches. Two 4021 shift registers (same thing as a regular joypad) record the state at the strobe. Both 4021's send their data on CP at the SAME time, using two different data lines: D3 and D4 (usually used by the Zapper). It doesn't affect D0, so you no game can detect it as being a regular joypad. Data Format ----------- __________ +---------/ \-----------+ | SIDE B | | __ __ __ __ | | / \ / \ / \ / \ | | | 1 | | 2 | | 3 | | 4 | | | \__/ \__/ \__/ \__/ | | __ __ __ __ | | / \ / \ / \ / \ | | | 5 | | 6 | | 7 | | 8 | | | \__/ \__/ \__/ \__/ | | __ __ __ __ | | / \ / \ / \ / \ | | | 9 | | 10 | | 11 | | 12 | | | \__/ \__/ \__/ \__/ | | | +--------------------------------+ __________ +---------/ \-----------+ | SIDE A | | __ __ | | / \ / \ | | |B 3 | |B 2 | | | \__/ \__/ | | __ __ __ __ | | / \ / \ / \ / \ | | |B 8 | |R 7 | |R 6 | |B 5 | | | \__/ \__/ \__/ \__/ | | __ __ | | / \ / \ | | |B 11| |B 10| | | \__/ \__/ | | | +--------------------------------+ (Numbers don't appear on side A of the pad on the real thing. They are there for reference. The "empty" spots still work as buttons by the way :) B= BLUE R= RED Use the following algorithm to read the pad: 1- Strobe the controller port on which the Power Pad is connected 2- Read D3 of port, store it in LSB of TEMP1 3- Read D4 of port, store it in LSB of TEMP2 4- Rotate TEMP1 and TEMP2 to the LEFT 5- Repeat 2,3,4 until 8 bits are read The result can be checked upon the following table: TEMP1 (D3) ========== MSB LSB +------+------+------+------+------+------+------+------+ BIT | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | +------+------+------+------+------+------+------+------+ Button | 4 | 3 | 12 | 8 | -- | -- | -- | -- | +------+------+------+------+------+------+------+------+ TEMP2 (D4) ========== MSB LSB +------+------+------+------+------+------+------+------+ BIT | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | +------+------+------+------+------+------+------+------+ Button | 2 | 1 | 5 | 9 | 6 | 10 | 11 | 7 | +------+------+------+------+------+------+------+------+ "--" means "Don't care", since those inputs are hardwired as '0' Contacts -------- Author: Tennessee Carmel-Veilleux (veilleux@ameth.org) Credits ------- Jeremy D. Chadwick (yoshi@parodius.com) for his excellent NES technical information archive (nestech.txt). Kevin Horton (khorton@iquest.net) for help on hardware and technical issues.