Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
kpad.h
Go to the documentation of this file.
1#ifndef _REVOLUTION_KPAD_H_
2#define _REVOLUTION_KPAD_H_
3
4#include <revolution/mtx.h>
5#include <revolution/wpad.h>
6#include "types.h"
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12#define KPAD_BUTTON_MASK 0x0000ffff
13#define KPAD_BUTTON_RPT 0x80000000
14
15#define KPAD_BTN_RPT_TIME_MAX 20000
16#define KPAD_BTN_NO_RPT_DELAY 40000
17
18#define KPAD_CMOS_RESO_WX 128
19#define KPAD_CMOS_RESO_WY 96
20#define KPAD_CMOS_RESO_CX (KPAD_CMOS_RESO_WX / 2)
21#define KPAD_CMOS_RESO_CY (KPAD_CMOS_RESO_WY / 2)
22
23#define KPAD_DPD_RESO_WX WPAD_DPD_IMG_RESO_WX
24#define KPAD_DPD_RESO_WY WPAD_DPD_IMG_RESO_WY
25#define KPAD_DPD_RESO_CX (KPAD_DPD_RESO_WX / 2)
26#define KPAD_DPD_RESO_CY (KPAD_DPD_RESO_WY / 2)
27
28#define KPAD_USE_OBJECTS 2
29
30typedef struct Vec2 {
33
35
37
56
57typedef struct KPADStatus {
58 /* 0x00 */ u32 hold;
59 /* 0x04 */ u32 trig;
60 /* 0x08 */ u32 release;
61 /* 0x0C */ Vec acc;
62 /* 0x18 */ f32 acc_value;
63 /* 0x1C */ f32 acc_speed;
64 /* 0x20 */ Vec2 pos;
65 /* 0x28 */ Vec2 vec;
66 /* 0x30 */ f32 speed;
67 /* 0x34 */ Vec2 horizon;
68 /* 0x3C */ Vec2 hori_vec;
69 /* 0x44 */ f32 hori_speed;
70 /* 0x48 */ f32 dist;
71 /* 0x4C */ f32 dist_vec;
72 /* 0x50 */ f32 dist_speed;
73 /* 0x54 */ Vec2 acc_vertical;
74#if PLATFORM_SHIELD
75 /* 0x5C */ u8 dev_type;
76 /* 0x5D */ s8 wpad_err;
77 /* 0x5E */ s8 dpd_valid_fg;
78 /* 0x5F */ u8 data_format;
80 /* 0x84 */ u8 unk_shield_0x86[0xf0 - 0x84];
81#else
82 /* 0x5C */ u32 dev_type;
83 /* 0x60 */ KPADEXStatus ex_status;
84 /* 0x84 */ s8 dpd_valid_fg;
85 /* 0x85 */ s8 wpad_err;
86#endif
87#if PLATFORM_SHIELD
88#endif
89} KPADStatus; // size 0x88
90
98
106
111
112typedef void (*KPADControlDpdCallback)(s32 chan, s32 reason);
115
116typedef struct {
117 /* 0x000 */ KPADStatus status;
118 /* 0x088 */ f32 pos_play_radius;
119 /* 0x08C */ f32 pos_sensitivity;
124 /* 0x0A0 */ f32 acc_play_radius;
125 /* 0x0A4 */ f32 acc_sensitivity;
126 /* 0x0A8 */ f32 dist_org;
127 /* 0x0AC */ Vec2 accXY_nrm_hori;
128 /* 0x0B4 */ Vec2 sec_nrm_hori;
129 /* 0x0BC */ Vec2 center_org;
130 /* 0x0C4 */ f32 dpd2pos_scale;
131 /* 0x0C8 */ KPADObject kobj_sample[4];
132 /* 0x0F8 */ KPADObject kobj_regular[2];
133 /* 0x110 */ s16 valid_objs;
134 /* 0x112 */ u16 repeat_count;
135 /* 0x114 */ s16 active_chan;
136 /* 0x116 */ s16 unk_0x116;
137 /* 0x118 */ KPADUnifiedWpadStatus uniRingBuf[12];
138 /* 0x3A0 */ f32 sec_length;
139 /* 0x3A4 */ Vec2 sec_nrm;
140 /* 0x3AC */ f32 sec_dist;
142 /* 0x3B4 */ Vec hard_acc;
143 /* 0x3C0 */ Vec2 obj_horizon;
144 /* 0x3C8 */ Vec2 acc_horizon;
145 /* 0x3D0 */ Vec2 ah_circle_pos;
146 /* 0x3D8 */ u16 ah_circle_ct;
147 /* 0x3DA */ u8 dpd_valid2_ct;
148 /* 0x3DC */ u16 btn_repeat_time;
149 /* 0x3DE */ u16 btn_repeat_next;
156 /* 0x3EC */ BOOL is_dpd_enabled;
157 /* 0x3F0 */ BOOL unk_0x3f0;
158 /* 0x3F4 */ BOOL unk_0x3f4;
160 /* 0x3FC */ BOOL unk_0x3fc;
162
163void KPADInit();
164
165void KPADSetFSStickClamp(s8 min, s8 max);
166void KPADSetBtnRepeat(s32 chan, f32 delay_sec, f32 pulse_sec);
167void KPADSetObjInterval(f32 interval);
168void KPADSetPosParam(s32 chan, f32 play_radius, f32 sensitivity);
169void KPADSetHoriParam(s32 chan, f32 play_radius, f32 sensitivity);
170void KPADSetDistParam(s32 chan, f32 play_radius, f32 sensitivity);
171void KPADSetAccParam(s32 chan, f32 play_radius, f32 sensitivity);
172void KPADSetSensorHeight(s32 chan, f32 level);
173
174
175void KPADReset(void);
176s32 KPADRead(s32 chan, KPADStatus* sampling_bufs, s32 length);
177
180
182
183#ifdef __cplusplus
184}
185#endif
186
187#endif // _REVOLUTION_KPAD_H_
static int min(int a, int b)
Definition JHIComm.cpp:155
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
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
void KPADSetBtnRepeat(s32 chan, f32 delay_sec, f32 pulse_sec)
Definition KPAD.c:61
union KPADEXStatus KPADEXStatus
struct KPADStatus KPADStatus
s32 KPADRead(s32 chan, KPADStatus *sampling_bufs, s32 length)
Definition KPAD.c:1304
void KPADSetDistParam(s32 chan, f32 play_radius, f32 sensitivity)
Definition KPAD.c:96
void KPADInit()
KPADInsideStatus inside_kpads[]
Definition KPAD.c:48
KPADPlayMode
Definition kpad.h:34
@ KPAD_PLAY_MODE_LOOSE
Definition kpad.h:34
@ KPAD_PLAY_MODE_TIGHT
Definition kpad.h:34
s32 KPADResult
Definition kpad.h:36
void(* KPADControlDpdCallback)(s32 chan, s32 reason)
Definition kpad.h:112
void KPADSetPosParam(s32 chan, f32 play_radius, f32 sensitivity)
Definition KPAD.c:86
void KPADSetAccParam(s32 chan, f32 play_radius, f32 sensitivity)
Definition KPAD.c:101
void KPADDisableDPD(s32 chan)
void KPADSetObjInterval(f32 interval)
Definition KPAD.c:77
void KPADSetHoriParam(s32 chan, f32 play_radius, f32 sensitivity)
Definition KPAD.c:91
void KPADSetSensorHeight(s32 chan, f32 level)
Definition KPAD.c:220
WPADCallback KPADCallback
Definition kpad.h:113
struct KPADUnifiedWpadStatus KPADUnifiedWpadStatus
void KPADEnableDPD(s32 chan)
void KPADSetFSStickClamp(s8 min, s8 max)
Definition KPAD.c:55
WPADChannel KPADChannel
Definition kpad.h:114
void KPADReset(void)
struct Vec2 Vec2
Definition kpad.h:116
Vec hard_acc
Definition kpad.h:142
f32 dist_play_radius
Definition kpad.h:122
BOOL unk_0x3fc
Definition kpad.h:160
f32 acc_play_radius
Definition kpad.h:124
s16 active_chan
Definition kpad.h:135
f32 dist_sensitivity
Definition kpad.h:123
Vec2 sec_nrm
Definition kpad.h:139
BOOL unk_0x3f0
Definition kpad.h:157
u16 btn_cl_repeat_pulse
Definition kpad.h:155
f32 sec_dist
Definition kpad.h:140
u16 repeat_count
Definition kpad.h:134
KPADControlDpdCallback dpd_ctrl_callback
Definition kpad.h:159
s16 unk_0x116
Definition kpad.h:136
f32 trust_sec_length
Definition kpad.h:141
Vec2 ah_circle_pos
Definition kpad.h:145
f32 dist_org
Definition kpad.h:126
s16 valid_objs
Definition kpad.h:133
f32 hori_play_radius
Definition kpad.h:120
f32 pos_sensitivity
Definition kpad.h:119
f32 pos_play_radius
Definition kpad.h:118
u16 btn_repeat_next
Definition kpad.h:149
f32 hori_sensitivity
Definition kpad.h:121
u16 btn_repeat_time
Definition kpad.h:148
f32 sec_length
Definition kpad.h:138
Vec2 center_org
Definition kpad.h:129
u16 btn_repeat_delay
Definition kpad.h:150
u16 btn_repeat_pulse
Definition kpad.h:151
Vec2 obj_horizon
Definition kpad.h:143
f32 dpd2pos_scale
Definition kpad.h:130
u16 btn_cl_repeat_delay
Definition kpad.h:154
KPADStatus status
Definition kpad.h:117
Vec2 accXY_nrm_hori
Definition kpad.h:127
BOOL unk_0x3f4
Definition kpad.h:158
u8 dpd_valid2_ct
Definition kpad.h:147
f32 acc_sensitivity
Definition kpad.h:125
u16 btn_cl_repeat_time
Definition kpad.h:152
u16 btn_cl_repeat_next
Definition kpad.h:153
Vec2 sec_nrm_hori
Definition kpad.h:128
Vec2 acc_horizon
Definition kpad.h:144
BOOL is_dpd_enabled
Definition kpad.h:156
u16 ah_circle_ct
Definition kpad.h:146
Definition kpad.h:99
s8 _fg_2
Definition kpad.h:104
s8 _fg_1
Definition kpad.h:103
Vec2 center
Definition kpad.h:100
s8 error_fg
Definition kpad.h:101
s8 state_fg
Definition kpad.h:102
Definition kpad.h:57
u8 dev_type
Definition kpad.h:75
Vec2 hori_vec
Definition kpad.h:68
f32 speed
Definition kpad.h:66
f32 hori_speed
Definition kpad.h:69
s8 dpd_valid_fg
Definition kpad.h:77
Vec2 acc_vertical
Definition kpad.h:73
s8 wpad_err
Definition kpad.h:76
u8 unk_shield_0x86[0xf0 - 0x84]
Definition kpad.h:80
u32 hold
Definition kpad.h:58
u32 trig
Definition kpad.h:59
f32 dist_speed
Definition kpad.h:72
f32 dist
Definition kpad.h:70
KPADEXStatus ex_status
Definition kpad.h:79
f32 acc_value
Definition kpad.h:62
u32 dev_type
Definition kpad.h:82
u8 data_format
Definition kpad.h:78
Vec2 pos
Definition kpad.h:64
Vec2 vec
Definition kpad.h:65
Vec acc
Definition kpad.h:61
f32 acc_speed
Definition kpad.h:63
Vec2 horizon
Definition kpad.h:67
f32 dist_vec
Definition kpad.h:71
u32 release
Definition kpad.h:60
Definition kpad.h:91
WPADCLStatus cl
Definition kpad.h:95
WPADStatus core
Definition kpad.h:93
union KPADUnifiedWpadStatus::@225 u
WPADFSStatus fs
Definition kpad.h:94
Definition kpad.h:30
f32 x
Definition kpad.h:31
f32 y
Definition kpad.h:31
Definition mtx.h:13
Definition wpad.h:217
Definition wpad.h:208
Definition wpad.h:184
Definition kpad.h:38
f32 ltrigger
Definition kpad.h:52
Vec2 rstick
Definition kpad.h:51
f32 rtrigger
Definition kpad.h:53
Vec2 lstick
Definition kpad.h:50
u32 release
Definition kpad.h:49
f32 acc_speed
Definition kpad.h:43
Vec2 stick
Definition kpad.h:40
u32 hold
Definition kpad.h:47
u32 trig
Definition kpad.h:48
struct KPADEXStatus::@219 fs
struct KPADEXStatus::@221 cl
Vec acc
Definition kpad.h:41
f32 acc_value
Definition kpad.h:42
Definition kpad.h:107
KPADStatus k
Definition kpad.h:108
KPADUnifiedWpadStatus w
Definition kpad.h:109
void(* WPADCallback)(s32 chan, s32 result)
Definition wpad.h:146
s32 WPADChannel
Definition wpad.h:157