NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
WPADHIDParser.h
1#ifndef RVL_SDK_WPAD_HID_PARSER_H
2#define RVL_SDK_WPAD_HID_PARSER_H
3#include <types.h>
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8#define RPT_REPORT_ID 0
9#define RPT_MAX_SIZE 21
10
11// Limits
12#define RPTID_OUT_LO RPTID_SET_RUMBLE
13#define RPTID_OUT_HI RPTID_SET_DPD_CSB
14
15#define RPTID_IN_LO RPTID_STATUS
16#define RPTID_IN_HI RPTID_DATA_BTN_ACC_DPD18_2
17
18// All outgoing reports
19#define RPT_OUT_FLAGS 1
20
21#define RPT_OUT_FLAG_ENABLE_FEATURE 2
22#define RPT_OUT_FLAG_REQUEST_ACK_RPT 1
23#define RPT_OUT_FLAG_RUMBLE 0
24
25// All incoming reports with Button data (all except 0x3d)
26#define RPT_BTN0 1
27#define RPT_BTN1 2
28
29// All incoming reports with Accelerometer (Standard) data (0x31, 0x33, 0x35,
30// 0x37)
31#define RPT_ACC_OFFSET 1
32#define RPT_ACC_SIZE 3
33
34/**
35 *
36 * Outgoing reports (from POV of the host)
37 *
38 */
39// Report 0x10: Set rumble status
40#define RPTID_SET_RUMBLE 0x10
41#define RPT10_SIZE 1
42
43#define RPT10_RUMBLE 0
44
45// Report 0x11: Set LED lights
46#define RPTID_SET_PORT 0x11 // internally called SetPort
47#define RPT11_SIZE 1
48
49#define RPT11_LED 0
50
51// Report 0x12: Set data reporting mode
52#define RPTID_SET_DATA_REPORT_MODE 0x12
53#define RPT12_SIZE 2
54
55#define RPT12_CONT_REPORT 0
56#define RPT12_DATA_REPORT_MODE 1
57
58// Report 0x13: Enable IR camera
59#define RPTID_ENABLE_DPD 0x13 // internally called the DPD
60#define RPT13_SIZE 1
61
62#define RPT13_DPD_ENABLE 0
63
64// Report 0x14: Enable IR camera
65#define RPTID_ENABLE_SPEAKER 0x14
66#define RPT14_SIZE 1
67
68#define RPT14_SPEAKER_ENABLE 0
69
70// Report 0x15: Request status report
71#define RPTID_REQUEST_STATUS 0x15
72#define RPT15_SIZE 1
73
74// Report 0x16: Write data
75#define RPTID_WRITE_DATA 0x16
76#define RPT16_SIZE RPT_MAX_SIZE
77
78#define RPT16_DATA_DST_ADDRESS 0
79#define RPT16_DATA_LENGTH 4
80#define RPT16_DATA 5
81
82// Report 0x17: Read data
83#define RPTID_READ_DATA 0x17
84#define RPT17_SIZE 6
85
86#define RPT17_DATA_SRC_ADDRESS 0
87#define RPT17_DATA_LENGTH 4
88
89// Report 0x18: Send speaker data
90#define RPTID_SEND_SPEAKER_DATA 0x18
91#define RPT18_SIZE RPT_MAX_SIZE
92
93#define RPT18_DATA_LENGTH 0
94#define RPT18_DATA 1
95
96// Report 0x19: Mute speaker
97#define RPTID_MUTE_SPEAKER 0x19
98#define RPT19_SIZE 1
99
100#define RPT19_SPEAKER_MUTE 0
101
102// Report 0x1A: WPADiSendDPDCSB (?)
103#define RPTID_SEND_DPD_CSB 0x1A
104#define RPT1A_SIZE 1
105
106#define RPT1A_DPD_CSB 0
107
108/**
109 *
110 * Incoming reports (from POV of the host)
111 *
112 */
113// Report 0x20: Status report
114#define RPTID_STATUS 0x20
115#define RPT20_FLAGS 3
116#define RPT20_PROTO_FW 5
117#define RPT20_BATTERY 6
118
119// Report 0x21: Read Wiimote data
120#define RPTID_DATA_READ 0x21
121#define RPT21_SIZE_ERR 3
122#define RPT21_ADDR0 4
123#define RPT21_ADDR1 5
124#define RPT21_DATA 6
125
126// Report 0x22: Acknowledgement and request result
127#define RPTID_ACK 0x22
128#define RPT22_ACKED_RPT_ID 3
129#define RPT22_ERR_CODE 4
130
131// Reports 0x23-0x2F: Unused
132
133// Report 0x30: Buttons
134#define RPTID_DATA_BTN 0x30
135
136// Report 0x31: Buttons, Accelerometer (Standard)
137#define RPTID_DATA_BTN_ACC 0x31
138
139// Report 0x32: Buttons, Extension (8 bytes)
140#define RPTID_DATA_BTN_EXT8 0x32
141#define RPT32_EXT_OFFSET 3
142#define RPT32_EXT_LENGTH 8
143
144/**
145 * Report 0x33: Buttons, Accelerometer (Standard), IR Camera (Standard, 12
146 * bytes)
147 */
148#define RPTID_DATA_BTN_ACC_DPD12 0x33
149#define RPT33_DPD_OFFSET 6
150#define RPT33_DPD_LENGTH 12
151
152// Report 0x34: Buttons, Extension (19 bytes)
153#define RPTID_DATA_BTN_EXT19 0x34
154#define RPT34_EXT_OFFSET 3
155#define RPT34_EXT_LENGTH 19
156
157// Report 0x35: Buttons, Accelerometer (Standard), Extension (16 bytes)
158#define RPTID_DATA_BTN_ACC_EXT16 0x35
159#define RPT35_EXT_OFFSET 6
160#define RPT35_EXT_LENGTH 16
161
162// Report 0x36: Buttons, IR Camera (Basic, 10 bytes), Extension (9 bytes)
163#define RPTID_DATA_BTN_DPD10_EXT9 0x36
164#define RPT36_DPD_OFFSET 3
165#define RPT36_DPD_LENGTH 10
166#define RPT36_EXT_OFFSET 13
167#define RPT36_EXT_LENGTH 9
168
169/**
170 * Report 0x37: Buttons, Accelerometer (Standard), IR Camera (Basic, 10 bytes),
171 * Extension (6 bytes)
172 */
173#define RPTID_DATA_BTN_ACC_DPD10_EXT9 0x37
174#define RPT37_DPD_OFFSET 6
175#define RPT37_DPD_LENGTH 10
176#define RPT37_EXT_OFFSET 16
177#define RPT37_EXT_LENGTH 6
178
179// Report 0x38-0x3C: Unused
180
181// Report 0x3D: Extension (21 bytes)
182#define RPTID_DATA_EXT21 0x3D
183#define RPT3D_EXT_OFFSET 1
184#define RPT3D_EXT_LENGTH 21
185
186/**
187 * Report 0x3E: Buttons, Accelerometer (Interleaved 1), IR Camera (Full 1, 18
188 * bytes)
189 */
190#define RPTID_DATA_BTN_ACC_DPD18_1 0x3E
191#define RPT3E_DPD0 0
192#define RPT3E_DPD0_OFFSET 4
193#define RPT3E_DPD1 1
194#define RPT3E_DPD1_OFFSET 13
195
196/**
197 * Report 0x3F: Buttons, Accelerometer (Interleaved 2), IR Camera (Full 2, 18
198 * bytes)
199 */
200#define RPTID_DATA_BTN_ACC_DPD18_2 0x3F
201#define RPT3F_DPD2 2
202#define RPT3F_DPD2_OFFSET 4
203#define RPT3F_DPD3 3
204#define RPT3F_DPD3_OFFSET 13
205
206s32 WPADiHIDParser(u8 port, u8* p_rpt);
207
208#ifdef __cplusplus
209}
210#endif
211#endif