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
7#if PLATFORM_SHIELD
8#define RECPD_SAMPLING_BUF_COUNT 16
9#else
10#define RECPD_SAMPLING_BUF_COUNT 10
11#endif
12
13class mReCPd {
14public:
15 struct Pad {
16 struct Acc {
17 void clean();
18 void changeStts(u32, bool);
19 void calcSwingVec();
20 void calcSttsRem();
21 void calcSttsFs();
22
23 /* 0x000 */ Vec field_0x0[120];
24 /* 0x5A0 */ Vec field_0x5a0[120];
25 /* 0xB40 */ int field_0xb40;
26 /* 0xB44 */ int m_swing;
27 /* 0xB48 */ Vec2 m_swingVec;
28 /* 0xB50 */ u8 field_0xb50;
29 /* 0xB51 */ u8 field_0xb51;
30 /* 0xB54 */ f32 field_0xb54;
31 /* 0xB58 */ Vec field_0xb58;
32 /* 0xB64 */ u32 field_0xb64;
33 /* 0xB68 */ Mtx field_0xb68;
34 /* 0xB98 */ f32 field_0xb98;
35 /* 0xB9C */ int field_0xb9c;
36 /* 0xBA0 */ f32 field_0xba0;
37 /* 0xBA4 */ f32 field_0xba4;
38 /* 0xBA8 */ u8 field_0xba8[0xBAC - 0xBA8];
39 /* 0xBAC */ int field_0xbac;
40 /* 0xBB0 */ f32 field_0xbb0;
41 /* 0xBB4 */ f32 field_0xbb4;
42 /* 0xBB8 */ u8 field_0xbb8[0xBBC - 0xBB8];
43 /* 0xBBC */ int field_0xbbc;
44 /* 0xBC0 */ int field_0xbc0;
45 };
46
47 void clean();
48 void cleanOneTime();
49 void copyRemAcc();
50 void copyFSAcc();
51 void cleanTrig();
52 void cleanHold();
53 void cleanRelease();
54 void clearUpDown();
55 void calcDpdBox(Vec2*, Vec2*, f32, f32);
56 void calcDpdOld();
57 void calcDpd2DPos();
58 void calcDpdRatioPos();
59 void calcDpdPlayCirPos();
60 void calcDpdPlayBoxPos();
61
62 /* 0x0000 */ int field_0x0;
63#if PLATFORM_SHIELD
64 /* 0x0004 */ u8 unk_shield_0x04[0x8 - 0x4];
65#endif
66 /* 0x0004 */ KPADStatus field_0x4[RECPD_SAMPLING_BUF_COUNT];
67 /* 0x0554 */ int field_0x554;
68#if PLATFORM_SHIELD
69 /* 0x0558 */ u8 unk_shield_0x558[0x55c - 0x558];
70#endif
71 /* 0x0558 */ KPADStatus field_0x558;
72 /* 0x05E0 */ Acc m_remAcc;
73 /* 0x11A4 */ Acc m_FSAcc;
74 /* 0x1D68 */ Vec2 m_stick3D;
75 /* 0x1D70 */ f32 m_stickValue;
76 /* 0x1D74 */ s16 m_stickAngle;
77 /* 0x1D76 */ s16 m_stick3DAngle;
78 /* 0x1D78 */ Vec2 field_0x1d78;
79 /* 0x1D80 */ Vec2 field_0x1d80;
80 /* 0x1D88 */ Vec2 m_dpd_2d_pos;
81 /* 0x1D90 */ Vec2 m_dpd_ratio_pos;
82 /* 0x1D98 */ f32 field_0x1d98;
83 /* 0x1D9C */ f32 field_0x1d9c;
85 /* 0x1DA8 */ Vec2 field_0x1da8;
86 /* 0x1DB0 */ Vec2 field_0x1db0;
87 /* 0x1DB8 */ f32 field_0x1db8;
88 /* 0x1DBC */ f32 field_0x1dbc;
89 /* 0x1DC0 */ f32 field_0x1dc0;
90 /* 0x1DC4 */ int field_0x1dc4;
91 /* 0x1DC8 */ int field_0x1dc8;
92 /* 0x1DCC */ int m_swingBlock;
93 /* 0x1DD0 */ int field_0x1dd0;
94 /* 0x1DD4 */ u8 field_0x1dd4;
95 /* 0x1DD8 */ int field_0x1dd8;
96 /* 0x1DDC */ bool field_0x1ddc;
97 /* 0x1DDD */ u8 field_0x1ddd;
98 /* 0x1DE0 */ int field_0x1de0;
99 /* 0x1DE4 */ int field_0x1de4;
100 /* 0x1DE8 */ u8 field_0x1de8;
101 /* 0x1DEC */ int field_0x1dec;
102 /* 0x1DF0 */ u8 field_0x1df0;
103 /* 0x1DF4 */ int field_0x1df4;
104 /* 0x1DF8 */ u32 dev_type;
105 /* 0x1DFC */ u32 field_0x1dfc;
106 /* 0x1E00 */ int field_0x1e00;
107 /* 0x1E04 */ u8 field_0x1e04;
108 /* 0x1E05 */ u8 field_0x1e05;
109 };
110
117
118 static void enableDpd(u32);
119 static void disableDpd(u32);
120 static void onConnect(u32);
121 static void setExtensionCallback();
122 static void onGetInfoAsync(u32);
123 static void create();
124 static void startMoterWave(motorWave_t*, u8*, bool);
125 static void startMoterWave(int, u8*, bool);
126 static void stopMoterWave(motorWave_t*);
127 static void stopMoterWave(int);
128 static void updateMoterWave();
129 static void stopMoter();
130 static BOOL getLowBat(u32 chan);
131 static void setLowBat(u32 chan, BOOL low_bat);
132 static void onLowBatChk(u32 chan);
133 static void procNoData(u32 chan);
134 static void read();
135 static f32 calibrateDist(int);
136 static Vec2& getDpd2DPos(u32 chan);
137 static Vec2& getDpdRatioPos(u32 chan);
138 static Vec2& getDpdPlayBoxPos(u32 chan);
139 static BOOL chkDpdOk(u32 chan);
140 static BOOL chkDpdValid(u32 chan);
141 static BOOL chkDpdPosIn(u32 chan);
142 static void getKPADAcc(u32 chan, Vec*, int);
143 static s16 getAngleXy(u32 chan);
144 static s16 getAngleZy(u32 chan);
145 static f32 getKPADAccValue(u32 chan, int);
146 static f32 getKPADAccValueMax(u32 chan);
147 static f32 getKPADAccSpeed(u32 chan, int);
148 static f32 getKPADAccSpeedMax(u32 chan);
149 static f32 getKPADFSAccValue(u32 chan, int);
150 static f32 getKPADFSAccValueMax(u32 chan);
151 static s16 getFSStickAngle3DRev(u32 chan);
152 static void calcUnderVec(Pad::Acc* acc_p, f32);
153
154 static u32 getHoldB(u32);
155 static u32 getHoldMinus(u32);
156 static u32 getHoldPlus(u32);
157 static u32 getHoldZ1(u32);
158 static u32 getTrigB(u32);
159 static u32 getTrigMinus(u32);
160 static u32 getTrigHome(u32);
161 static u32 getTrigPlus(u32);
162 static u32 getTrigZ1(u32);
163 static u32 chkSwingBlock(u32);
164 static u32 getTrigSwing(u32);
165 static Vec2& getSwingVec(u32);
166 static u32 chkSimpleProbe(u32);
167 static BOOL chkDevTypeValid(u32);
168 static u32 getFSTrigSwing(u32);
169
170 static void plusCalValue();
171 static void minusCalValue();
172
173 // made up, copying concepts from m_Do_controller_pad
174 static WPADInfo& getPadInfo(u32 i_pad) { return m_pad_info[i_pad]; }
175 static Pad& getPad(u32 i_pad) { return m_pad[i_pad]; }
176 static u32 getTrig(u32 i_pad) { return getPad(i_pad).field_0x4[0].trig; }
177 static u32 getHold(u32 i_pad) { return getPad(i_pad).field_0x4[0].hold; }
178
179 static u32 getHoldA(u32 i_pad) { return getHold(i_pad) & WPAD_BUTTON_A; }
180 static u32 getHoldRight(u32 i_pad) { return getHold(i_pad) & WPAD_BUTTON_RIGHT; }
181 static u32 getHoldLeft(u32 i_pad) { return getHold(i_pad) & WPAD_BUTTON_LEFT; }
182 static u32 getHoldUp(u32 i_pad) { return getHold(i_pad) & WPAD_BUTTON_UP; }
183 static u32 getTrigA(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_A; }
184 static u32 getTrigRight(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_RIGHT; }
185 static u32 getTrigLeft(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_LEFT; }
186
187 static u32 getTrigUp(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_UP; }
188 static u32 getTrigStart(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_PLUS; }
189
190 static WPADInfo m_pad_info[WPAD_MAX_CONTROLLERS];
191 static Pad m_pad[WPAD_MAX_CONTROLLERS];
192 static motorWave_t m_motorWave[WPAD_MAX_CONTROLLERS];
193 static int m_cal_value;
194};
195
196#endif /* M_RE_CONTROLLER_PAD_H */
Definition m_Re_controller_pad.h:13
static u32 getTrigPlus(u32)
Definition m_Re_controller_pad.cpp:1725
static void calcUnderVec(Pad::Acc *acc_p, f32)
Definition m_Re_controller_pad.cpp:1647
static u32 getTrigMinus(u32)
Definition m_Re_controller_pad.cpp:1709
static u32 getFSTrigSwing(u32)
Definition m_Re_controller_pad.cpp:1784
static BOOL getLowBat(u32 chan)
Definition m_Re_controller_pad.cpp:1150
static void read()
Definition m_Re_controller_pad.cpp:1187
static BOOL chkDpdValid(u32 chan)
Definition m_Re_controller_pad.cpp:1469
static f32 getKPADAccSpeed(u32 chan, int)
Definition m_Re_controller_pad.cpp:1583
static f32 getKPADAccSpeedMax(u32 chan)
Definition m_Re_controller_pad.cpp:1597
static f32 getKPADAccValueMax(u32 chan)
Definition m_Re_controller_pad.cpp:1567
static u32 getTrigRight(u32 i_pad)
Definition m_Re_controller_pad.h:184
static void disableDpd(u32)
Definition m_Re_controller_pad.cpp:895
static u32 getTrigStart(u32 i_pad)
Definition m_Re_controller_pad.h:188
static WPADInfo & getPadInfo(u32 i_pad)
Definition m_Re_controller_pad.h:174
static u32 getTrigSwing(u32)
Definition m_Re_controller_pad.cpp:1745
static void getKPADAcc(u32 chan, Vec *, int)
Definition m_Re_controller_pad.cpp:1508
static u32 getTrigUp(u32 i_pad)
Definition m_Re_controller_pad.h:187
static u32 getHoldA(u32 i_pad)
Definition m_Re_controller_pad.h:179
static f32 getKPADFSAccValue(u32 chan, int)
Definition m_Re_controller_pad.cpp:1613
static Vec2 & getDpd2DPos(u32 chan)
Definition m_Re_controller_pad.cpp:1453
static Pad & getPad(u32 i_pad)
Definition m_Re_controller_pad.h:175
static u32 getHoldB(u32)
Definition m_Re_controller_pad.cpp:1681
static void stopMoterWave(motorWave_t *)
Definition m_Re_controller_pad.cpp:1105
static void onLowBatChk(u32 chan)
Definition m_Re_controller_pad.cpp:1158
static int m_cal_value
Definition m_Re_controller_pad.h:193
static void startMoterWave(motorWave_t *, u8 *, bool)
Definition m_Re_controller_pad.cpp:1094
static WPADInfo m_pad_info[WPAD_MAX_CONTROLLERS]
Definition m_Re_controller_pad.h:190
static f32 calibrateDist(int)
Definition m_Re_controller_pad.cpp:1427
static s16 getFSStickAngle3DRev(u32 chan)
Definition m_Re_controller_pad.cpp:1643
static void updateMoterWave()
Definition m_Re_controller_pad.cpp:1118
static f32 getKPADAccValue(u32 chan, int)
Definition m_Re_controller_pad.cpp:1553
static u32 getTrigA(u32 i_pad)
Definition m_Re_controller_pad.h:183
static u32 getHoldZ1(u32)
Definition m_Re_controller_pad.cpp:1701
static BOOL chkDpdOk(u32 chan)
Definition m_Re_controller_pad.cpp:1465
static void onGetInfoAsync(u32)
Definition m_Re_controller_pad.cpp:1028
static BOOL chkDpdPosIn(u32 chan)
Definition m_Re_controller_pad.cpp:1478
static u32 getHoldPlus(u32)
Definition m_Re_controller_pad.cpp:1693
static u32 getHoldRight(u32 i_pad)
Definition m_Re_controller_pad.h:180
static void setExtensionCallback()
Definition m_Re_controller_pad.cpp:1006
static motorWave_t m_motorWave[WPAD_MAX_CONTROLLERS]
Definition m_Re_controller_pad.h:192
static void stopMoter()
Definition m_Re_controller_pad.cpp:1144
static Vec2 & getDpdRatioPos(u32 chan)
Definition m_Re_controller_pad.cpp:1457
static u32 getHoldUp(u32 i_pad)
Definition m_Re_controller_pad.h:182
static u32 getHold(u32 i_pad)
Definition m_Re_controller_pad.h:177
static void onConnect(u32)
Definition m_Re_controller_pad.cpp:994
static u32 getTrigB(u32)
Definition m_Re_controller_pad.cpp:1705
static u32 getTrig(u32 i_pad)
Definition m_Re_controller_pad.h:176
static u32 getTrigLeft(u32 i_pad)
Definition m_Re_controller_pad.h:185
static s16 getAngleZy(u32 chan)
Definition m_Re_controller_pad.cpp:1537
static Vec2 & getSwingVec(u32)
Definition m_Re_controller_pad.cpp:1749
static u32 getHoldLeft(u32 i_pad)
Definition m_Re_controller_pad.h:181
static u32 getHoldMinus(u32)
Definition m_Re_controller_pad.cpp:1685
static u32 chkSwingBlock(u32)
Definition m_Re_controller_pad.cpp:1737
static void enableDpd(u32)
Definition m_Re_controller_pad.cpp:891
static void minusCalValue()
Definition m_Re_controller_pad.cpp:1795
static void create()
Definition m_Re_controller_pad.cpp:1060
static u32 getTrigHome(u32)
Definition m_Re_controller_pad.cpp:1717
static u32 chkSimpleProbe(u32)
Definition m_Re_controller_pad.cpp:1753
static void setLowBat(u32 chan, BOOL low_bat)
Definition m_Re_controller_pad.cpp:1154
static void plusCalValue()
Definition m_Re_controller_pad.cpp:1788
static BOOL chkDevTypeValid(u32)
Definition m_Re_controller_pad.cpp:1769
static f32 getKPADFSAccValueMax(u32 chan)
Definition m_Re_controller_pad.cpp:1627
static Vec2 & getDpdPlayBoxPos(u32 chan)
Definition m_Re_controller_pad.cpp:1461
static u32 getTrigZ1(u32)
Definition m_Re_controller_pad.cpp:1733
static Pad m_pad[WPAD_MAX_CONTROLLERS]
Definition m_Re_controller_pad.h:191
static void procNoData(u32 chan)
Definition m_Re_controller_pad.cpp:1166
static s16 getAngleXy(u32 chan)
Definition m_Re_controller_pad.cpp:1521
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:57
u32 hold
Definition kpad.h:58
u32 trig
Definition kpad.h:59
Definition kpad.h:30
Definition mtx.h:13
Definition wpad.h:159
Definition m_Re_controller_pad.h:16
Vec field_0xb58
Definition m_Re_controller_pad.h:31
u8 field_0xbb8[0xBBC - 0xBB8]
Definition m_Re_controller_pad.h:42
u32 field_0xb64
Definition m_Re_controller_pad.h:32
u8 field_0xb50
Definition m_Re_controller_pad.h:28
f32 field_0xbb0
Definition m_Re_controller_pad.h:40
int field_0xbc0
Definition m_Re_controller_pad.h:44
Vec2 m_swingVec
Definition m_Re_controller_pad.h:27
Mtx field_0xb68
Definition m_Re_controller_pad.h:33
int field_0xb9c
Definition m_Re_controller_pad.h:35
int field_0xb40
Definition m_Re_controller_pad.h:25
u8 field_0xb51
Definition m_Re_controller_pad.h:29
void calcSwingVec()
Definition m_Re_controller_pad.cpp:66
int field_0xbac
Definition m_Re_controller_pad.h:39
u8 field_0xba8[0xBAC - 0xBA8]
Definition m_Re_controller_pad.h:38
void changeStts(u32, bool)
Definition m_Re_controller_pad.cpp:49
f32 field_0xba0
Definition m_Re_controller_pad.h:36
Vec field_0x0[120]
Definition m_Re_controller_pad.h:23
void calcSttsRem()
Definition m_Re_controller_pad.cpp:103
f32 field_0xb98
Definition m_Re_controller_pad.h:34
int field_0xbbc
Definition m_Re_controller_pad.h:43
Vec field_0x5a0[120]
Definition m_Re_controller_pad.h:24
void calcSttsFs()
Definition m_Re_controller_pad.cpp:365
f32 field_0xbb4
Definition m_Re_controller_pad.h:41
f32 field_0xb54
Definition m_Re_controller_pad.h:30
int m_swing
Definition m_Re_controller_pad.h:26
f32 field_0xba4
Definition m_Re_controller_pad.h:37
void clean()
Definition m_Re_controller_pad.cpp:25
Definition m_Re_controller_pad.h:15
void calcDpdPlayBoxPos()
Definition m_Re_controller_pad.cpp:962
void clean()
Definition m_Re_controller_pad.cpp:675
void calcDpd2DPos()
Definition m_Re_controller_pad.cpp:899
KPADStatus field_0x4[RECPD_SAMPLING_BUF_COUNT]
Definition m_Re_controller_pad.h:66
void clearUpDown()
Definition m_Re_controller_pad.cpp:793
Vec2 field_0x1d78
Definition m_Re_controller_pad.h:78
int field_0x1de0
Definition m_Re_controller_pad.h:98
f32 field_0x1dc0
Definition m_Re_controller_pad.h:89
f32 field_0x1d98
Definition m_Re_controller_pad.h:82
s16 m_stick3DAngle
Definition m_Re_controller_pad.h:77
int field_0x1dd0
Definition m_Re_controller_pad.h:93
int m_swingBlock
Definition m_Re_controller_pad.h:92
f32 field_0x1db8
Definition m_Re_controller_pad.h:87
KPADStatus field_0x558
Definition m_Re_controller_pad.h:71
int field_0x0
Definition m_Re_controller_pad.h:62
void calcDpdBox(Vec2 *, Vec2 *, f32, f32)
Definition m_Re_controller_pad.cpp:801
u8 field_0x1ddd
Definition m_Re_controller_pad.h:97
int field_0x1dd8
Definition m_Re_controller_pad.h:95
bool field_0x1ddc
Definition m_Re_controller_pad.h:96
int field_0x1dc4
Definition m_Re_controller_pad.h:90
u8 field_0x1e04
Definition m_Re_controller_pad.h:107
f32 m_stickValue
Definition m_Re_controller_pad.h:75
void calcDpdPlayCirPos()
Definition m_Re_controller_pad.cpp:915
Vec2 m_stick3D
Definition m_Re_controller_pad.h:74
int field_0x1de4
Definition m_Re_controller_pad.h:99
void cleanTrig()
Definition m_Re_controller_pad.cpp:772
Vec2 m_dpd_ratio_pos
Definition m_Re_controller_pad.h:81
Acc m_FSAcc
Definition m_Re_controller_pad.h:73
u8 field_0x1de8
Definition m_Re_controller_pad.h:100
Vec2 field_0x1d80
Definition m_Re_controller_pad.h:79
void calcDpdRatioPos()
Definition m_Re_controller_pad.cpp:909
Vec2 m_dpd_2d_pos
Definition m_Re_controller_pad.h:80
f32 field_0x1dbc
Definition m_Re_controller_pad.h:88
s16 m_stickAngle
Definition m_Re_controller_pad.h:76
void copyRemAcc()
Definition m_Re_controller_pad.cpp:726
Vec2 field_0x1db0
Definition m_Re_controller_pad.h:86
u8 field_0x1dd4
Definition m_Re_controller_pad.h:94
u8 unk_shield_0x558[0x55c - 0x558]
Definition m_Re_controller_pad.h:69
Vec2 field_0x1da8
Definition m_Re_controller_pad.h:85
int field_0x1dc8
Definition m_Re_controller_pad.h:91
u8 field_0x1e05
Definition m_Re_controller_pad.h:108
Acc m_remAcc
Definition m_Re_controller_pad.h:72
u32 field_0x1dfc
Definition m_Re_controller_pad.h:105
void cleanHold()
Definition m_Re_controller_pad.cpp:781
void cleanOneTime()
Definition m_Re_controller_pad.cpp:712
void calcDpdOld()
Definition m_Re_controller_pad.cpp:855
f32 field_0x1d9c
Definition m_Re_controller_pad.h:83
void copyFSAcc()
Definition m_Re_controller_pad.cpp:749
int field_0x554
Definition m_Re_controller_pad.h:67
u8 unk_shield_0x04[0x8 - 0x4]
Definition m_Re_controller_pad.h:64
Vec2 m_dpd_play_box_pos
Definition m_Re_controller_pad.h:84
int field_0x1dec
Definition m_Re_controller_pad.h:101
u8 field_0x1df0
Definition m_Re_controller_pad.h:102
int field_0x1e00
Definition m_Re_controller_pad.h:106
u32 dev_type
Definition m_Re_controller_pad.h:104
void cleanRelease()
Definition m_Re_controller_pad.cpp:787
int field_0x1df4
Definition m_Re_controller_pad.h:103
Definition m_Re_controller_pad.h:111
u8 * field_0x0
Definition m_Re_controller_pad.h:112
u8 field_0x8
Definition m_Re_controller_pad.h:115
u16 field_0x6
Definition m_Re_controller_pad.h:114
u16 field_0x4
Definition m_Re_controller_pad.h:113