Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
wpad.h
Go to the documentation of this file.
1#ifndef _REVOLUTION_WPAD_H_
2#define _REVOLUTION_WPAD_H_
3
4#include <revolution/types.h>
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10#define WPAD_BUTTON_LEFT 0x0001
11#define WPAD_BUTTON_RIGHT 0x0002
12#define WPAD_BUTTON_DOWN 0x0004
13#define WPAD_BUTTON_UP 0x0008
14#define WPAD_BUTTON_PLUS 0x0010
15#define WPAD_BUTTON_2 0x0100
16#define WPAD_BUTTON_1 0x0200
17#define WPAD_BUTTON_B 0x0400
18#define WPAD_BUTTON_A 0x0800
19#define WPAD_BUTTON_MINUS 0x1000
20#define WPAD_BUTTON_Z 0x2000
21#define WPAD_BUTTON_C 0x4000
22#define WPAD_BUTTON_HOME 0x8000
23
24#define WPAD_MAX_DPD_OBJECTS 4
25
26#define WPAD_CHAN0 0
27#define WPAD_CHAN1 1
28#define WPAD_CHAN2 2
29#define WPAD_CHAN3 3
30#define WPAD_CHAN_INVALID -1
31
32#define WPAD_MAX_CONTROLLERS 4
33
45
46#define WPAD_ESUCCESS WPAD_ERR_OK
47#define WPAD_ENODEV WPAD_ERR_NO_CONTROLLER
48#define WPAD_EBUSY WPAD_ERR_BUSY
49#define WPAD_ETRANSFER WPAD_ERR_TRANSFER // I don't know what the POSIX equivalent is
50#define WPAD_EINVAL WPAD_ERR_INVALID
51#define WPAD_E5 WPAD_ERR_5
52#define WPAD_E6 WPAD_ERR_6
53#define WPAD_EBADE WPAD_ERR_CORRUPTED
54
55// apparently enum vs constant is a thing. cool
56#define WPAD_CESUCCESS (WPAD_ESUCCESS + 0)
57#define WPAD_CENODEV (WPAD_ENODEV + 0)
58#define WPAD_CEBUSY (WPAD_EBUSY + 0)
59#define WPAD_CETRANSFER (WPAD_ETRANSFER + 0)
60#define WPAD_CEINVAL (WPAD_EINVAL + 0)
61#define WPAD_CE5 (WPAD_E5 + 0)
62#define WPAD_CE6 (WPAD_E6 + 0)
63#define WPAD_CEBADE (WPAD_EBADE + 0)
64
65typedef void WPADInitFunc(void);
66typedef void WPADCallback(s32 chan, s32 result);
67typedef void WPADExtensionCallback(s32 chan, s32 devType);
68typedef void WPADSamplingCallback(s32 chan);
69typedef void WPADConnectCallback(s32 chan, s32 result);
70
71typedef struct DPDObject {
72 /* 0x00 */ s16 x;
73 /* 0x02 */ s16 y;
74 /* 0x04 */ u16 size;
75 /* 0x06 */ u8 traceId;
77
78typedef struct WPADStatus {
79 /* 0x00 */ u16 button;
80 /* 0x02 */ s16 accX;
81 /* 0x04 */ s16 accY;
82 /* 0x06 */ s16 accZ;
83 /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS];
84 /* 0x28 */ u8 dev;
85 /* 0x29 */ s8 err;
87
88typedef struct DPDObjEx {
89 /* 0x00 */ s16 range_x1;
90 /* 0x02 */ s16 range_y1;
91 /* 0x04 */ s16 range_x2;
92 /* 0x06 */ s16 range_y2;
93 /* 0x08 */ u16 pixel;
94 /* 0x0A */ s8 radius;
96
97typedef struct WPADStatusEx {
98 /* 0x00 */ u16 button;
99 /* 0x02 */ s16 accX;
100 /* 0x04 */ s16 accY;
101 /* 0x06 */ s16 accZ;
102 /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS];
103 /* 0x28 */ u8 dev;
104 /* 0x29 */ s8 err;
105 /* 0x2a */ DPDObjEx exp[WPAD_MAX_DPD_OBJECTS];
107
108typedef struct WPADFSStatus {
109 /* 0x00 */ u16 button;
110 /* 0x02 */ s16 accX;
111 /* 0x04 */ s16 accY;
112 /* 0x06 */ s16 accZ;
113 /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS];
114 /* 0x28 */ u8 dev;
115 /* 0x29 */ s8 err;
116 /* 0x2a */ s16 fsAccX;
117 /* 0x2c */ s16 fsAccY;
118 /* 0x2e */ s16 fsAccZ;
119 /* 0x30 */ s8 fsStickX;
120 /* 0x31 */ s8 fsStickY;
122
123typedef struct WPADCLStatus {
124 /* 0x00 */ u16 button;
125 /* 0x02 */ s16 accX;
126 /* 0x04 */ s16 accY;
127 /* 0x06 */ s16 accZ;
128 /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS];
129 /* 0x28 */ u8 dev;
130 /* 0x29 */ s8 err;
131 /* 0x2a */ u16 clButton;
132 /* 0x2c */ s16 clLStickX;
133 /* 0x2e */ s16 clLStickY;
134 /* 0x30 */ s16 clRStickX;
135 /* 0x32 */ s16 clRStickY;
136 /* 0x34 */ u8 clTriggerL;
137 /* 0x35 */ u8 clTriggerR;
139
140typedef struct WPADBKStatus {
141 /* 0x00 */ u16 button;
142 /* 0x02 */ s16 accX;
143 /* 0x04 */ s16 accY;
144 /* 0x06 */ s16 accZ;
145 /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS];
146 /* 0x28 */ u8 dev;
147 /* 0x29 */ s8 err;
148 /* 0x2a */ u8 bulk[21];
149 /* 0x3f */ u8 padding[1];
151
152typedef struct WPADTRStatus {
153 /* 0x00 */ u16 button;
154 /* 0x02 */ s16 accX;
155 /* 0x04 */ s16 accY;
156 /* 0x06 */ s16 accZ;
157 /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS];
158 /* 0x28 */ u8 dev;
159 /* 0x29 */ s8 err;
160 /* 0x2a */ u16 trButton;
161 /* 0x2c */ u8 brake;
162 /* 0x2d */ u8 mascon;
164
165typedef struct WPADVSStatus {
166 /* 0x00 */ u16 button;
167 /* 0x02 */ s16 accX;
168 /* 0x04 */ s16 accY;
169 /* 0x06 */ s16 accZ;
170 /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS];
171 /* 0x28 */ u8 dev;
172 /* 0x29 */ s8 err;
173 /* 0x2a */ u16 at_0x2a[5];
174 /* 0x34 */ u8 at_0x34;
175 /* 0x36 */ u16 at_0x36[5];
176 /* 0x40 */ u8 at_0x40;
177 /* 0x42 */ u16 at_0x42;
178 /* 0x44 */ u8 at_0x44;
180
181typedef struct WPADMPStatus {
182 /* 0x00 */ u16 button;
183 /* 0x02 */ s16 accX;
184 /* 0x04 */ s16 accY;
185 /* 0x06 */ s16 accZ;
186 /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS];
187 /* 0x28 */ u8 dev;
188 /* 0x29 */ s8 err;
189 union {
190 struct {
191 /* 0x00 */ s16 fsAccX;
192 /* 0x02 */ s16 fsAccY;
193 /* 0x04 */ s16 fsAccZ;
194 /* 0x06 */ s8 fsStickX;
195 /* 0x07 */ s8 fsStickY;
196 } fs;
197 struct {
198 /* 0x00 */ u16 clButton;
199 /* 0x02 */ s16 clLStickX;
200 /* 0x04 */ s16 clLStickY;
201 /* 0x06 */ s16 clRStickX;
202 /* 0x08 */ s16 clRStickY;
203 /* 0x0a */ u8 clTriggerL;
204 /* 0x0b */ u8 clTriggerR;
205 } cl;
207 /* 0x36 */ u8 stat;
208 /* 0x37 */ u8 reserved;
209 /* 0x38 */ s16 pitch;
210 /* 0x3a */ s16 yaw;
211 /* 0x3c */ s16 roll;
213
214typedef struct WPADBLStatus {
215 /* 0x00 */ u16 button;
216 /* 0x02 */ s16 accX;
217 /* 0x04 */ s16 accY;
218 /* 0x06 */ s16 accZ;
219 /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS];
220 /* 0x28 */ u8 dev;
221 /* 0x29 */ s8 err;
222 /* 0x2a */ u16 press[4];
223 /* 0x32 */ s8 temp;
224 /* 0x33 */ u8 battery;
226
227typedef struct WPADInfo {
228 /* 0x00 */ BOOL dpd;
229 /* 0x04 */ BOOL speaker;
230 /* 0x08 */ BOOL attach;
231 /* 0x0C */ BOOL lowBat;
232 /* 0x10 */ BOOL nearempty;
233 /* 0x14 */ u8 battery;
234 /* 0x15 */ u8 led;
235 /* 0x16 */ u8 protocol;
236 /* 0x17 */ u8 firmware;
238
239#define WPAD_FMT_CORE_BTN 0
240#define WPAD_FMT_CORE_BTN_ACC 1
241#define WPAD_FMT_CORE_BTN_ACC_DPD 2
242#define WPAD_FMT_FS_BTN 3
243#define WPAD_FMT_FS_BTN_ACC 4
244#define WPAD_FMT_FS_BTN_ACC_DPD 5
245#define WPAD_FMT_CLASSIC_BTN 6
246#define WPAD_FMT_CLASSIC_BTN_ACC 7
247#define WPAD_FMT_CLASSIC_BTN_ACC_DPD 8
248#define WPAD_FMT_BTN_ACC_DPD_EXTENDED 9
249// extensions
250#define WPAD_FMT_TRAIN 10
251#define WPAD_FMT_GUITAR 11
252#define WPAD_FMT_BALANCE_CHECKER 12
253#define WPAD_FMT_VSM 13
254#define WPAD_FMT_DRUM 15
255#define WPAD_FMT_MOTION_PLUS 16
256#define WPAD_FMT_TAIKO 17
257#define WPAD_FMT_TURNTABLE 18
258#define WPAD_FMT_BULK 19
259
260#define WPAD_SPEAKER_DISABLE 0
261#define WPAD_SPEAKER_ENABLE 1 // might be ON? see HBMRemoteSpk.cpp
262#define WPAD_SPEAKER_MUTE 2
263#define WPAD_SPEAKER_UNMUTE 3
264#define WPAD_SPEAKER_PLAY 4
265#define WPAD_SPEAKER_CMD_05 5 // does the same thing as ENABLE? unless i'm missing something. not used so i don't know the context
266
267s32 WPADProbe(s32 chan, u32* devType);
269void WPADRead(s32 chan, WPADStatus* status);
272s32 WPADSendStreamData(s32 chan, void* p_buf, u16 len);
273
275
276#ifdef __cplusplus
277}
278#endif
279
280#endif // _REVOLUTION_WPAD_H_
int BOOL
Definition types.h:33
signed char s8
Definition types.h:7
unsigned long u32
Definition types.h:12
signed short int s16
Definition types.h:9
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
static u32 status
Definition fstload.c:9
static void cb(s32 result, DVDCommandBlock *block)
Definition fstload.c:16
Definition wpad.h:88
s16 range_y1
Definition wpad.h:90
s16 range_x1
Definition wpad.h:89
s16 range_y2
Definition wpad.h:92
s8 radius
Definition wpad.h:94
u16 pixel
Definition wpad.h:93
s16 range_x2
Definition wpad.h:91
Definition wpad.h:71
s16 y
Definition wpad.h:73
s16 x
Definition wpad.h:72
u16 size
Definition wpad.h:74
u8 traceId
Definition wpad.h:75
Definition wpad.h:140
s8 err
Definition wpad.h:147
s16 accY
Definition wpad.h:143
u8 bulk[21]
Definition wpad.h:148
u8 dev
Definition wpad.h:146
DPDObject obj[WPAD_MAX_DPD_OBJECTS]
Definition wpad.h:145
s16 accZ
Definition wpad.h:144
u16 button
Definition wpad.h:141
u8 padding[1]
Definition wpad.h:149
s16 accX
Definition wpad.h:142
Definition wpad.h:214
s16 accZ
Definition wpad.h:218
s16 accX
Definition wpad.h:216
s16 accY
Definition wpad.h:217
u8 dev
Definition wpad.h:220
s8 temp
Definition wpad.h:223
u8 battery
Definition wpad.h:224
DPDObject obj[WPAD_MAX_DPD_OBJECTS]
Definition wpad.h:219
u16 press[4]
Definition wpad.h:222
u16 button
Definition wpad.h:215
s8 err
Definition wpad.h:221
Definition wpad.h:123
s16 accZ
Definition wpad.h:127
s16 accX
Definition wpad.h:125
DPDObject obj[WPAD_MAX_DPD_OBJECTS]
Definition wpad.h:128
s16 accY
Definition wpad.h:126
u8 clTriggerR
Definition wpad.h:137
s16 clRStickX
Definition wpad.h:134
s16 clLStickY
Definition wpad.h:133
u8 clTriggerL
Definition wpad.h:136
s16 clRStickY
Definition wpad.h:135
s8 err
Definition wpad.h:130
u16 button
Definition wpad.h:124
u8 dev
Definition wpad.h:129
u16 clButton
Definition wpad.h:131
s16 clLStickX
Definition wpad.h:132
Definition wpad.h:108
u16 button
Definition wpad.h:109
s16 fsAccX
Definition wpad.h:116
s16 accZ
Definition wpad.h:112
u8 dev
Definition wpad.h:114
s8 fsStickY
Definition wpad.h:120
s16 accY
Definition wpad.h:111
s8 fsStickX
Definition wpad.h:119
s8 err
Definition wpad.h:115
s16 fsAccY
Definition wpad.h:117
s16 accX
Definition wpad.h:110
s16 fsAccZ
Definition wpad.h:118
DPDObject obj[WPAD_MAX_DPD_OBJECTS]
Definition wpad.h:113
Definition wpad.h:227
u8 battery
Definition wpad.h:233
u8 led
Definition wpad.h:234
u8 protocol
Definition wpad.h:235
BOOL nearempty
Definition wpad.h:232
BOOL attach
Definition wpad.h:230
BOOL lowBat
Definition wpad.h:231
u8 firmware
Definition wpad.h:236
BOOL dpd
Definition wpad.h:228
BOOL speaker
Definition wpad.h:229
Definition wpad.h:181
s16 clLStickX
Definition wpad.h:199
s16 roll
Definition wpad.h:211
s16 fsAccX
Definition wpad.h:191
s8 err
Definition wpad.h:188
u8 clTriggerL
Definition wpad.h:203
s8 fsStickY
Definition wpad.h:195
s16 yaw
Definition wpad.h:210
DPDObject obj[WPAD_MAX_DPD_OBJECTS]
Definition wpad.h:186
struct WPADMPStatus::@185::@186 fs
s8 fsStickX
Definition wpad.h:194
s16 accY
Definition wpad.h:184
u16 button
Definition wpad.h:182
s16 clLStickY
Definition wpad.h:200
s16 fsAccZ
Definition wpad.h:193
u8 clTriggerR
Definition wpad.h:204
u8 stat
Definition wpad.h:207
s16 clRStickX
Definition wpad.h:201
union WPADMPStatus::@185 ext
s16 accX
Definition wpad.h:183
s16 accZ
Definition wpad.h:185
u8 reserved
Definition wpad.h:208
s16 pitch
Definition wpad.h:209
u8 dev
Definition wpad.h:187
struct WPADMPStatus::@185::@187 cl
s16 clRStickY
Definition wpad.h:202
u16 clButton
Definition wpad.h:198
s16 fsAccY
Definition wpad.h:192
Definition wpad.h:97
s16 accZ
Definition wpad.h:101
s16 accY
Definition wpad.h:100
DPDObjEx exp[WPAD_MAX_DPD_OBJECTS]
Definition wpad.h:105
u16 button
Definition wpad.h:98
u8 dev
Definition wpad.h:103
s16 accX
Definition wpad.h:99
s8 err
Definition wpad.h:104
DPDObject obj[WPAD_MAX_DPD_OBJECTS]
Definition wpad.h:102
Definition wpad.h:78
DPDObject obj[WPAD_MAX_DPD_OBJECTS]
Definition wpad.h:83
s8 err
Definition wpad.h:85
u8 dev
Definition wpad.h:84
s16 accX
Definition wpad.h:80
s16 accZ
Definition wpad.h:82
u16 button
Definition wpad.h:79
s16 accY
Definition wpad.h:81
Definition wpad.h:152
u16 button
Definition wpad.h:153
s8 err
Definition wpad.h:159
u8 brake
Definition wpad.h:161
s16 accY
Definition wpad.h:155
s16 accX
Definition wpad.h:154
u8 mascon
Definition wpad.h:162
DPDObject obj[WPAD_MAX_DPD_OBJECTS]
Definition wpad.h:157
u8 dev
Definition wpad.h:158
u16 trButton
Definition wpad.h:160
s16 accZ
Definition wpad.h:156
Definition wpad.h:165
u8 dev
Definition wpad.h:171
u16 at_0x36[5]
Definition wpad.h:175
s8 err
Definition wpad.h:172
s16 accY
Definition wpad.h:168
u8 at_0x40
Definition wpad.h:176
DPDObject obj[WPAD_MAX_DPD_OBJECTS]
Definition wpad.h:170
s16 accX
Definition wpad.h:167
u8 at_0x34
Definition wpad.h:174
s16 accZ
Definition wpad.h:169
u8 at_0x44
Definition wpad.h:178
u16 at_0x2a[5]
Definition wpad.h:173
u16 at_0x42
Definition wpad.h:177
u16 button
Definition wpad.h:166
void WPADConnectCallback(s32 chan, s32 result)
Definition wpad.h:69
void WPADCallback(s32 chan, s32 result)
Definition wpad.h:66
void WPADSamplingCallback(s32 chan)
Definition wpad.h:68
struct WPADStatus WPADStatus
struct WPADTRStatus WPADTRStatus
void WPADExtensionCallback(s32 chan, s32 devType)
Definition wpad.h:67
void WPADInitFunc(void)
Definition wpad.h:65
struct WPADStatusEx WPADStatusEx
struct WPADInfo WPADInfo
struct WPADCLStatus WPADCLStatus
u8 WPADGetRadioSensitivity(s32 chan)
Definition WPAD.c:69
s32 WPADControlSpeaker(s32 chan, u32 command, WPADCallback *cb)
Definition WPAD.c:113
struct WPADFSStatus WPADFSStatus
BOOL WPADIsSpeakerEnabled(s32 chan)
Definition WPAD.c:102
WPADResult_et
Definition wpad.h:34
@ WPAD_ERR_6
Definition wpad.h:42
@ WPAD_ERR_TRANSFER
Definition wpad.h:39
@ WPAD_ERR_OK
Definition wpad.h:35
@ WPAD_ERR_5
Definition wpad.h:41
@ WPAD_ERR_BUSY
Definition wpad.h:38
@ WPAD_ERR_CORRUPTED
Definition wpad.h:43
@ WPAD_ERR_NO_CONTROLLER
Definition wpad.h:37
@ WPAD_ERR_INVALID
Definition wpad.h:40
WPADExtensionCallback * WPADSetExtensionCallback(s32 chan, WPADExtensionCallback *cb)
struct WPADMPStatus WPADMPStatus
struct WPADBKStatus WPADBKStatus
struct DPDObject DPDObject
void WPADRead(s32 chan, WPADStatus *status)
Definition WPAD.c:78
s32 WPADProbe(s32 chan, u32 *devType)
struct WPADVSStatus WPADVSStatus
struct WPADBLStatus WPADBLStatus
s32 WPADSendStreamData(s32 chan, void *p_buf, u16 len)
Definition WPAD.c:253
struct DPDObjEx DPDObjEx