Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
m_Re_controller_pad.h
Go to the documentation of this file.
1#ifndef M_RE_CONTROLLER_PAD_H
2#define M_RE_CONTROLLER_PAD_H
3
4#include <revolution/mtx.h>
5#include <revolution/kpad.h>
6
7class mReCPd {
8public:
9 struct Pad {
10 struct Acc {
11 void clean();
12 void changeStts(u32, bool);
13 void calcSwingVec();
14 void calcSttsRem();
15 void calcSttsFs();
16
17 /* 0x000 */ Vec field_0x0[120];
18 /* 0x5A0 */ Vec field_0x5a0[120];
19 /* 0xB40 */ int field_0xb40;
20 /* 0xB44 */ int m_swing;
21 /* 0xB48 */ Vec2 m_swingVec;
22 /* 0xB50 */ u8 field_0xb50;
23 /* 0xB51 */ u8 field_0xb51;
24 /* 0xB54 */ f32 field_0xb54;
25 /* 0xB58 */ u8 field_0xB58[0xB68 - 0xB58];
26 /* 0xB68 */ Mtx field_0xb68;
27 /* 0xB98 */ f32 field_0xb98;
28 /* 0xB9C */ int field_0xb9c;
29 /* 0xBA0 */ f32 field_0xba0;
30 /* 0xBA4 */ f32 field_0xba4;
31 /* 0xBA8 */ u8 field_0xBA8[0xBAC - 0xBA8];
32 /* 0xBAC */ int field_0xbac;
33 /* 0xBB0 */ f32 field_0xbb0;
34 /* 0xBB4 */ f32 field_0xbb4;
35 /* 0xBB8 */ u8 field_0xBB8[0xBBC - 0xBB8];
36 /* 0xBBC */ int field_0xbbc;
37 /* 0xBC0 */ int field_0xbc0;
38 };
39
40 void clean();
41 void cleanOneTime();
42 void copyRemAcc();
43 void copyFSAcc();
44 void cleanTrig();
45 void cleanHold();
46 void cleanRelease();
47 void clearUpDown();
48 void calcDpdBox(Vec2*, Vec2*, f32, f32);
49 void calcDpdOld();
50 void calcDpd2DPos();
51 void calcDpdRatioPos();
52 void calcDpdPlayCirPos();
53 void calcDpdPlayBoxPos();
54
55 /* 0x0000 */ u32 field_0x0;
56 /* 0x0004 */ KPADStatus field_0x4[10];
57 /* 0x0554 */ int field_0x554;
58 /* 0x0558 */ KPADStatus field_0x558;
59 /* 0x05E0 */ Acc m_remAcc;
60 /* 0x11A4 */ Acc m_FSAcc;
61 /* 0x1D68 */ f32 m_stick3D;
62 /* 0x1D6C */ f32 field_0x1d6c;
63 /* 0x1D70 */ f32 m_stickValue;
64 /* 0x1D74 */ s16 m_stickAngle;
65 /* 0x1D76 */ s16 m_stick3DAngle;
66 /* 0x1D78 */ Vec2 field_0x1d78;
67 /* 0x1D80 */ Vec2 field_0x1d80;
68 /* 0x1D88 */ f32 field_0x1d88;
69 /* 0x1D8C */ f32 field_0x1d8c;
70 /* 0x1D90 */ f32 field_0x1d90;
71 /* 0x1D94 */ f32 field_0x1d94;
72 /* 0x1D98 */ f32 field_0x1d98;
73 /* 0x1D9C */ f32 field_0x1d9c;
74 /* 0x1DA0 */ f32 field_0x1da0;
75 /* 0x1DA4 */ f32 field_0x1da4;
76 /* 0x1DA8 */ Vec2 field_0x1da8;
77 /* 0x1DB0 */ Vec2 field_0x1db0;
78 /* 0x1DB8 */ f32 field_0x1db8;
79 /* 0x1DBC */ f32 field_0x1dbc;
80 /* 0x1DC0 */ f32 field_0x1dc0;
81 /* 0x1DC4 */ int field_0x1dc4;
82 /* 0x1DC8 */ int field_0x1dc8;
83 /* 0x1DCC */ int m_swingBlock;
84 /* 0x1DD0 */ int field_0x1dd0;
85 /* 0x1DD4 */ u8 field_0x1dd4;
86 /* 0x1DD8 */ int field_0x1dd8;
87 /* 0x1DDC */ u8 field_0x1ddc;
88 /* 0x1DDD */ u8 field_0x1ddd;
89 /* 0x1DE0 */ int field_0x1de0;
90 /* 0x1DE4 */ int field_0x1de4;
91 /* 0x1DE8 */ u8 field_0x1de8;
92 /* 0x1DEC */ int field_0x1dec;
93 /* 0x1DF0 */ u8 field_0x1df0;
94 /* 0x1DF4 */ int field_0x1df4;
95 /* 0x1DF8 */ u32 field_0x1df8;
96 /* 0x1DFC */ u32 field_0x1dfc;
97 /* 0x1E00 */ int field_0x1e00;
98 /* 0x1E04 */ u8 field_0x1e04;
99 /* 0x1E05 */ u8 field_0x1e05;
100 };
101
108
109 static void enableDpd(u32);
110 static void disableDpd(u32);
111 static void onConnect(u32);
112 static void setExtensionCallback();
113 static void onGetInfoAsync(u32);
114 static void create();
115 static void startMoterWave(motorWave_t*, u8*, bool);
116 static void startMoterWave(int, u8*, bool);
117 static void stopMoterWave(motorWave_t*);
118 static void stopMoterWave(int);
119 static void updateMoterWave();
120 static void stopMoter();
121 static void getLowBat(u32);
122 static void setLowBat(u32, int);
123 static void onLowBatChk(u32);
124 static void procNoData(u32);
125 static void read();
126 static void calibrateDist(int);
127 static void getDpd2DPos(u32);
128 static void getDpdRatioPos(u32);
129 static void getDpdRatioBoxPos(u32);
130 static void chkDpdOk(u32);
131 static void chkDpdValid(u32);
132 static void chkDpdPosIn(u32);
133 static void getKPADAcc(u32, Vec*, int);
134 static void getAngleXy(u32);
135 static void getAngleZy(u32);
136 static void getKPADAccValue(u32, int);
137 static void getKPADAccValueMax(u32);
138 static void getKPADAccSpeed(u32, int);
139 static void getKPADAccSpeedMax(u32);
140 static void getKPADFsAccValue(u32, int);
141 static void getKPADFsAccValueMax(u32);
143 static void calcUnderVec(Pad::Acc*, f32);
144
145 static u32 getHoldB(u32);
146 static u32 getHoldMinus(u32);
147 static u32 getHoldPlus(u32);
148 static u32 getHoldZ1(u32);
149 static u32 getTrigB(u32);
150 static u32 getTrigMinus(u32);
151 static u32 getTrigHome(u32);
152 static u32 getTrigPlus(u32);
153 static u32 getTrigZ1(u32);
154 static u32 chkSwingBlock(u32);
155 static u32 getTrigSwing(u32);
156 static Vec2& getSwingVec(u32);
157 static u32 chkSimpleProbe(u32);
158 static BOOL chkDevTypeValid(u32);
159 static u32 getFSTrigSwing(u32);
160
161 static void plusCalValue();
162 static void minusCalValue();
163
164 // made up, copying concepts from m_Do_controller_pad
165 static WPADInfo& getPadInfo(u32 i_pad) { return m_pad_info[i_pad]; }
166 static Pad& getPad(u32 i_pad) { return m_pad[i_pad]; }
167 static u32 getTrig(u32 i_pad) { return getPad(i_pad).field_0x4[0].trig; }
168 static u32 getHold(u32 i_pad) { return getPad(i_pad).field_0x4[0].hold; }
169
170 static u32 getHoldA(u32 i_pad) { return getHold(i_pad) & WPAD_BUTTON_A; }
171 static u32 getHoldRight(u32 i_pad) { return getHold(i_pad) & WPAD_BUTTON_RIGHT; }
172 static u32 getHoldLeft(u32 i_pad) { return getHold(i_pad) & WPAD_BUTTON_LEFT; }
173 static u32 getHoldUp(u32 i_pad) { return getHold(i_pad) & WPAD_BUTTON_UP; }
174 static u32 getTrigA(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_A; }
175 static u32 getTrigRight(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_RIGHT; }
176 static u32 getTrigLeft(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_LEFT; }
177
178 static u32 getTrigUp(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_UP; }
179 static u32 getTrigStart(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_PLUS; }
180
182 static Pad m_pad[4];
183 static int m_cal_value;
184};
185
186#endif /* M_RE_CONTROLLER_PAD_H */
Definition m_Re_controller_pad.h:7
static u32 getTrigPlus(u32)
Definition m_Re_controller_pad.cpp:284
static s16 getFSStickAngle3DRev(u32)
Definition m_Re_controller_pad.cpp:232
static u32 getTrigMinus(u32)
Definition m_Re_controller_pad.cpp:268
static u32 getFSTrigSwing(u32)
Definition m_Re_controller_pad.cpp:332
static void getAngleZy(u32)
Definition m_Re_controller_pad.cpp:204
static void chkDpdOk(u32)
Definition m_Re_controller_pad.cpp:184
static void read()
Definition m_Re_controller_pad.cpp:164
static void getDpd2DPos(u32)
Definition m_Re_controller_pad.cpp:172
static void procNoData(u32)
Definition m_Re_controller_pad.cpp:160
static void getKPADAccValue(u32, int)
Definition m_Re_controller_pad.cpp:208
static void onLowBatChk(u32)
Definition m_Re_controller_pad.cpp:156
static void setLowBat(u32, int)
Definition m_Re_controller_pad.cpp:152
static u32 getTrigRight(u32 i_pad)
Definition m_Re_controller_pad.h:175
static void disableDpd(u32)
Definition m_Re_controller_pad.cpp:80
static void getKPADFsAccValueMax(u32)
Definition m_Re_controller_pad.cpp:228
static u32 getTrigStart(u32 i_pad)
Definition m_Re_controller_pad.h:179
static WPADInfo & getPadInfo(u32 i_pad)
Definition m_Re_controller_pad.h:165
static u32 getTrigSwing(u32)
Definition m_Re_controller_pad.cpp:300
static u32 getTrigUp(u32 i_pad)
Definition m_Re_controller_pad.h:178
static void calcUnderVec(Pad::Acc *, f32)
Definition m_Re_controller_pad.cpp:236
static u32 getHoldA(u32 i_pad)
Definition m_Re_controller_pad.h:170
static Pad & getPad(u32 i_pad)
Definition m_Re_controller_pad.h:166
static u32 getHoldB(u32)
Definition m_Re_controller_pad.cpp:240
static void chkDpdValid(u32)
Definition m_Re_controller_pad.cpp:188
static void stopMoterWave(motorWave_t *)
Definition m_Re_controller_pad.cpp:132
static int m_cal_value
Definition m_Re_controller_pad.h:183
static void startMoterWave(motorWave_t *, u8 *, bool)
Definition m_Re_controller_pad.cpp:124
static void getDpdRatioPos(u32)
Definition m_Re_controller_pad.cpp:176
static void getKPADAcc(u32, Vec *, int)
Definition m_Re_controller_pad.cpp:196
static void updateMoterWave()
Definition m_Re_controller_pad.cpp:140
static u32 getTrigA(u32 i_pad)
Definition m_Re_controller_pad.h:174
static u32 getHoldZ1(u32)
Definition m_Re_controller_pad.cpp:260
static void onGetInfoAsync(u32)
Definition m_Re_controller_pad.cpp:115
static u32 getHoldPlus(u32)
Definition m_Re_controller_pad.cpp:252
static u32 getHoldRight(u32 i_pad)
Definition m_Re_controller_pad.h:171
static void setExtensionCallback()
Definition m_Re_controller_pad.cpp:111
static void getKPADFsAccValue(u32, int)
Definition m_Re_controller_pad.cpp:224
static void getKPADAccValueMax(u32)
Definition m_Re_controller_pad.cpp:212
static void stopMoter()
Definition m_Re_controller_pad.cpp:144
static u32 getHoldUp(u32 i_pad)
Definition m_Re_controller_pad.h:173
static u32 getHold(u32 i_pad)
Definition m_Re_controller_pad.h:168
static void onConnect(u32)
Definition m_Re_controller_pad.cpp:100
static u32 getTrigB(u32)
Definition m_Re_controller_pad.cpp:264
static void getAngleXy(u32)
Definition m_Re_controller_pad.cpp:200
static u32 getTrig(u32 i_pad)
Definition m_Re_controller_pad.h:167
static u32 getTrigLeft(u32 i_pad)
Definition m_Re_controller_pad.h:176
static void getKPADAccSpeed(u32, int)
Definition m_Re_controller_pad.cpp:216
static void getDpdRatioBoxPos(u32)
Definition m_Re_controller_pad.cpp:180
static Vec2 & getSwingVec(u32)
Definition m_Re_controller_pad.cpp:304
static u32 getHoldLeft(u32 i_pad)
Definition m_Re_controller_pad.h:172
static u32 getHoldMinus(u32)
Definition m_Re_controller_pad.cpp:244
static u32 chkSwingBlock(u32)
Definition m_Re_controller_pad.cpp:296
static void enableDpd(u32)
Definition m_Re_controller_pad.cpp:76
static WPADInfo m_pad_info[4]
Definition m_Re_controller_pad.h:181
static Pad m_pad[4]
Definition m_Re_controller_pad.h:182
static void minusCalValue()
Definition m_Re_controller_pad.cpp:345
static void create()
Definition m_Re_controller_pad.cpp:120
static u32 getTrigHome(u32)
Definition m_Re_controller_pad.cpp:276
static u32 chkSimpleProbe(u32)
Definition m_Re_controller_pad.cpp:308
static void plusCalValue()
Definition m_Re_controller_pad.cpp:338
static BOOL chkDevTypeValid(u32)
Definition m_Re_controller_pad.cpp:320
static void getLowBat(u32)
Definition m_Re_controller_pad.cpp:148
static u32 getTrigZ1(u32)
Definition m_Re_controller_pad.cpp:292
static void calibrateDist(int)
Definition m_Re_controller_pad.cpp:168
static void chkDpdPosIn(u32)
Definition m_Re_controller_pad.cpp:192
static void getKPADAccSpeedMax(u32)
Definition m_Re_controller_pad.cpp:220
f32 Mtx[3][4]
Definition mtx.h:25
int BOOL
Definition types.h:33
unsigned long u32
Definition types.h:12
signed short int s16
Definition types.h:9
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
unsigned char u8
Definition types.h:8
Definition kpad.h:36
u32 hold
Definition kpad.h:37
u32 trig
Definition kpad.h:38
Definition kpad.h:11
Definition mtx.h:13
Definition wpad.h:227
Definition m_Re_controller_pad.h:10
u8 field_0xb50
Definition m_Re_controller_pad.h:22
f32 field_0xbb0
Definition m_Re_controller_pad.h:33
int field_0xbc0
Definition m_Re_controller_pad.h:37
Vec2 m_swingVec
Definition m_Re_controller_pad.h:21
Mtx field_0xb68
Definition m_Re_controller_pad.h:26
int field_0xb9c
Definition m_Re_controller_pad.h:28
int field_0xb40
Definition m_Re_controller_pad.h:19
u8 field_0xb51
Definition m_Re_controller_pad.h:23
u8 field_0xBB8[0xBBC - 0xBB8]
Definition m_Re_controller_pad.h:35
void calcSwingVec()
Definition m_Re_controller_pad.cpp:15
int field_0xbac
Definition m_Re_controller_pad.h:32
void changeStts(u32, bool)
Definition m_Re_controller_pad.cpp:11
f32 field_0xba0
Definition m_Re_controller_pad.h:29
Vec field_0x0[120]
Definition m_Re_controller_pad.h:17
u8 field_0xB58[0xB68 - 0xB58]
Definition m_Re_controller_pad.h:25
void calcSttsRem()
Definition m_Re_controller_pad.cpp:19
f32 field_0xb98
Definition m_Re_controller_pad.h:27
int field_0xbbc
Definition m_Re_controller_pad.h:36
Vec field_0x5a0[120]
Definition m_Re_controller_pad.h:18
u8 field_0xBA8[0xBAC - 0xBA8]
Definition m_Re_controller_pad.h:31
void calcSttsFs()
Definition m_Re_controller_pad.cpp:23
f32 field_0xbb4
Definition m_Re_controller_pad.h:34
f32 field_0xb54
Definition m_Re_controller_pad.h:24
int m_swing
Definition m_Re_controller_pad.h:20
f32 field_0xba4
Definition m_Re_controller_pad.h:30
void clean()
Definition m_Re_controller_pad.cpp:7
Definition m_Re_controller_pad.h:9
void calcDpdPlayBoxPos()
Definition m_Re_controller_pad.cpp:96
void clean()
Definition m_Re_controller_pad.cpp:27
void calcDpd2DPos()
Definition m_Re_controller_pad.cpp:84
void clearUpDown()
Definition m_Re_controller_pad.cpp:64
f32 m_stick3D
Definition m_Re_controller_pad.h:61
u8 field_0x1ddc
Definition m_Re_controller_pad.h:87
Vec2 field_0x1d78
Definition m_Re_controller_pad.h:66
int field_0x1de0
Definition m_Re_controller_pad.h:89
f32 field_0x1dc0
Definition m_Re_controller_pad.h:80
f32 field_0x1d90
Definition m_Re_controller_pad.h:70
f32 field_0x1d98
Definition m_Re_controller_pad.h:72
s16 m_stick3DAngle
Definition m_Re_controller_pad.h:65
int field_0x1dd0
Definition m_Re_controller_pad.h:84
int m_swingBlock
Definition m_Re_controller_pad.h:83
f32 field_0x1db8
Definition m_Re_controller_pad.h:78
KPADStatus field_0x558
Definition m_Re_controller_pad.h:58
f32 field_0x1d88
Definition m_Re_controller_pad.h:68
void calcDpdBox(Vec2 *, Vec2 *, f32, f32)
Definition m_Re_controller_pad.cpp:68
u8 field_0x1ddd
Definition m_Re_controller_pad.h:88
int field_0x1dd8
Definition m_Re_controller_pad.h:86
f32 field_0x1da0
Definition m_Re_controller_pad.h:74
int field_0x1dc4
Definition m_Re_controller_pad.h:81
u8 field_0x1e04
Definition m_Re_controller_pad.h:98
f32 m_stickValue
Definition m_Re_controller_pad.h:63
void calcDpdPlayCirPos()
Definition m_Re_controller_pad.cpp:92
f32 field_0x1d94
Definition m_Re_controller_pad.h:71
f32 field_0x1d8c
Definition m_Re_controller_pad.h:69
int field_0x1de4
Definition m_Re_controller_pad.h:90
void cleanTrig()
Definition m_Re_controller_pad.cpp:43
Acc m_FSAcc
Definition m_Re_controller_pad.h:60
u8 field_0x1de8
Definition m_Re_controller_pad.h:91
Vec2 field_0x1d80
Definition m_Re_controller_pad.h:67
void calcDpdRatioPos()
Definition m_Re_controller_pad.cpp:88
u32 field_0x1df8
Definition m_Re_controller_pad.h:95
f32 field_0x1dbc
Definition m_Re_controller_pad.h:79
s16 m_stickAngle
Definition m_Re_controller_pad.h:64
void copyRemAcc()
Definition m_Re_controller_pad.cpp:35
f32 field_0x1d6c
Definition m_Re_controller_pad.h:62
Vec2 field_0x1db0
Definition m_Re_controller_pad.h:77
u8 field_0x1dd4
Definition m_Re_controller_pad.h:85
u32 field_0x0
Definition m_Re_controller_pad.h:55
Vec2 field_0x1da8
Definition m_Re_controller_pad.h:76
int field_0x1dc8
Definition m_Re_controller_pad.h:82
u8 field_0x1e05
Definition m_Re_controller_pad.h:99
Acc m_remAcc
Definition m_Re_controller_pad.h:59
u32 field_0x1dfc
Definition m_Re_controller_pad.h:96
KPADStatus field_0x4[10]
Definition m_Re_controller_pad.h:56
void cleanHold()
Definition m_Re_controller_pad.cpp:52
void cleanOneTime()
Definition m_Re_controller_pad.cpp:31
void calcDpdOld()
Definition m_Re_controller_pad.cpp:72
f32 field_0x1d9c
Definition m_Re_controller_pad.h:73
void copyFSAcc()
Definition m_Re_controller_pad.cpp:39
int field_0x554
Definition m_Re_controller_pad.h:57
int field_0x1dec
Definition m_Re_controller_pad.h:92
u8 field_0x1df0
Definition m_Re_controller_pad.h:93
int field_0x1e00
Definition m_Re_controller_pad.h:97
f32 field_0x1da4
Definition m_Re_controller_pad.h:75
void cleanRelease()
Definition m_Re_controller_pad.cpp:58
int field_0x1df4
Definition m_Re_controller_pad.h:94
Definition m_Re_controller_pad.h:102
u8 * field_0x0
Definition m_Re_controller_pad.h:103
u8 field_0x8
Definition m_Re_controller_pad.h:106
u16 field_0x6
Definition m_Re_controller_pad.h:105
u16 field_0x4
Definition m_Re_controller_pad.h:104