#include <revolution/wpad.h>
#define WPAD_DPD_MAX_OBJECTS 4
#define WPAD_BUTTON_LEFT 0x0001
#define WPAD_BUTTON_RIGHT 0x0002
#define WPAD_BUTTON_DOWN 0x0004
#define WPAD_BUTTON_UP 0x0008
#define WPAD_BUTTON_PLUS 0x0010
#define WPAD_BUTTON_2 0x0100
#define WPAD_BUTTON_1 0x0200
#define WPAD_BUTTON_B 0x0400
#define WPAD_BUTTON_A 0x0800
#define WPAD_BUTTON_MINUS 0x1000
#define WPAD_BUTTON_HOME 0x8000
// for FreeStyle
#define WPAD_BUTTON_Z 0x2000
#define WPAD_BUTTON_C 0x4000
// for ClassicStyle
#define WPAD_CL_BUTTON_UP 0x0001
#define WPAD_CL_BUTTON_LEFT 0x0002
#define WPAD_CL_TRIGGER_ZR 0x0004
#define WPAD_CL_BUTTON_X 0x0008
#define WPAD_CL_BUTTON_A 0x0010
#define WPAD_CL_BUTTON_Y 0x0020
#define WPAD_CL_BUTTON_B 0x0040
#define WPAD_CL_TRIGGER_ZL 0x0080
#define WPAD_CL_RESERVED 0x0100
#define WPAD_CL_TRIGGER_R 0x0200
#define WPAD_CL_BUTTON_PLUS 0x0400
#define WPAD_CL_BUTTON_HOME 0x0800
#define WPAD_CL_BUTTON_MINUS 0x1000
#define WPAD_CL_TRIGGER_L 0x2000
#define WPAD_CL_BUTTON_DOWN 0x4000
#define WPAD_CL_BUTTON_RIGHT 0x8000
// for compatibility
#define WPAD_BUTTON_SELECT WPAD_BUTTON_MINUS
#define WPAD_BUTTON_START WPAD_BUTTON_PLUS
#define WPAD_BUTTON_SMALL_B WPAD_BUTTON_2
#define WPAD_BUTTON_SMALL_A WPAD_BUTTON_1
#define WPAD_BUTTON_Z1 WPAD_BUTTON_Z
#define WPAD_BUTTON_Z2 WPAD_BUTTON_C
typedef struct WPADStatus
{
u16 button;
s16 accX;
s16 accY;
s16 accZ;
DPDObject obj[WPAD_DPD_MAX_OBJECTS];
u8 dev;
s8 err;
} WPADStatus;
typedef struct DPDObject
{
s16 x;
s16 y;
u16 size;
u8 traceId;
} DPDObject;
button |
When a button is pressed, the corresponding bit (WPAD_BUTTON_*) is set to 1. |
accX |
Output of the motion sensor's x-component. The resolution is 1024. A value of 0 corresponds to 0G (outputs in the range of -512 <= accX < 512). |
accY |
Output of the motion sensor's y-component. The resolution is the same as for accX. |
accZ |
Output of the motion sensor's z-component. The resolution is the same as for accX. |
obj[].x |
The x-coordinate of the center of mass for the object obtained with the pointer. The resolution is 1024. |
obj[].y |
The y-coordinate of the center of mass for the object obtained with the pointer. The resolution is 768. |
obj[].size |
The size of the object obtained with the pointer. The resolution is 128*96. |
obj[].traceId |
The trace ID of the object obtained with the pointer. |
dev |
The controller type. |
err |
The controller error status. |
The WPADStatus structure represents the status of the Wii Remote.
The maximum number of Wii Remotes that can connect is defined as a macro constant.
WPAD_MAX_CONTROLLERSThe maximum number of Wii Remotes that can connect.
Button inputs are defined with the following macro constants. The Wii Remote is equipped with + Control Pad, A, B, 1, 2, MINUS, PLUS, and HOME digital buttons.
WPAD_BUTTON_UP+Control Pad UP is being pressed. WPAD_BUTTON_DOWN+Control Pad DOWN is being pressed. WPAD_BUTTON_LEFT+Control Pad LEFT is being pressed. WPAD_BUTTON_RIGHT+Control Pad RIGHT is being pressed. WPAD_BUTTON_AThe A Button is being pressed. WPAD_BUTTON_BThe B Button is being pressed. WPAD_BUTTON_1The 1 Button is being pressed. WPAD_BUTTON_2The 2 Button is being pressed. WPAD_BUTTON_MINUSThe MINUS button is being pressed. WPAD_BUTTON_PLUSThe PLUS button is being pressed. WPAD_BUTTON_HOMEHOME is being pressed.
The pointer specifications are defined as macro constants.
WPAD_DPD_MAX_OBJECTSThe maximum number of objects that the pointer can detect simultaneously. WPAD_DPD_ANGLEThe pointer view angle (in degrees). WPAD_DPD_IMG_RESO_WXPointer resolution along the x-axis. WPAD_DPD_IMG_RESO_WYPointer resolution along the y-axis. Object data items are stored in the obj[] array in the order that they are detected by the pointer. The pointer scans the image captured by sensor internally from top left to bottom right and outputs object data in the order detected. At the same time, trace ID(s) are assigned in the order that the objects are detected.
The trace ID helps to judge whether previously obtained data is the same as the currently obtained data. Consider a case where objects A (trace ID=0) and B (trace ID=1) are detected as A and B, respectively, by the previous scan, and then they are detected as B and A, respectively, after the pointer is moved. The output order for the current scan is the reverse of the previous one. However, the trace IDs are in the order of B (using the previously assigned trace ID of 1) and A (using the previously assigned trace ID of 0), and the fact that the data is the same is preserved.
The motion sensor specifications are defined as macro constants.
WPAD_ACC_RESOThe motion sensor's resolution.
Controller types are defined with the following macro constants.
WPAD_DEV_COREWii Remote. WPAD_DEV_FREESTYLENunchuk Style. WPAD_DEV_CLASSICClassic Style. WPAD_DEV_UNKNOWNUnknown device.
Error statuses are defined with the following macro constants.
WPAD_ERR_NONEIndicates the Wii Remote is connected. The WPADStatusstructure contains valid data.WPAD_ERR_NO_CONTROLLERIndicates the Wii Remote is not connected. The WPADStatusstructure does not contain valid data. (Members other thanerrare undefined.)WPAD_ERR_BUSYProcessing is being carried out for the Wii Remote. Only button information is valid for the WPADStatusstructure.
WPAD_ERR_TRANSFERIndicates a problem occurred during communications. The WPADStatusstructure does not contain valid data. (Members other thanerrare undefined.)WPAD_ERR_INVALIDThe data format of data received from the Wii Remote differs from that set by the WPADSetDataFormatfunction. (Structure members other than err are undefined.)
08/15/2006 Revised the description of WPAD_ERR_INVALID
2006/06/19 Added define, changed the name of the External Extension Controller, changed the names of buttons, revised the description of WPAD_DEV_DOLPHIN. 10/27/2005 Changed the resolution for acceleration from 2048 to 1024. Changed the interface from EXI to SI.
09/27/2005 Changed the abbreviation to DPD. Deleted the note regarding the DPDObject members size and traceID; Changed the description related to DPD.
08/30/2005 Revised the description of buttons; added a note that the member variables of the structure DPDObject will change.
08/01/2005 Initial version.
CONFIDENTIAL