SSBM Decomp
Loading...
Searching...
No Matches
controller.h
Go to the documentation of this file.
1#ifndef _controller_h_
2#define _controller_h_
3
4#include <platform.h>
5
6#include "baselib/forward.h"
7
8#include <dolphin/pad.h>
9#include <baselib/rumble.h>
10
11typedef u32 HSD_Pad;
12
13#define HSD_PAD_DPADLEFT (1 << 0)
14#define HSD_PAD_DPADRIGHT (1 << 1)
15#define HSD_PAD_DPADDOWN (1 << 2)
16#define HSD_PAD_DPADUP (1 << 3)
17#define HSD_PAD_Z (1 << 4)
18#define HSD_PAD_R (1 << 5)
19#define HSD_PAD_L (1 << 6)
20#define HSD_PAD_7 (1 << 7)
21
23#define HSD_PAD_A (1 << 8)
24
25#define HSD_PAD_B (1 << 9)
26#define HSD_PAD_X (1 << 10)
27#define HSD_PAD_Y (1 << 11)
28#define HSD_PAD_START (1 << 12)
29
31#define HSD_PAD_LR (1 << 31)
32
33#define HSD_PAD_AB (HSD_PAD_A | HSD_PAD_B)
34#define HSD_PAD_XY (HSD_PAD_X | HSD_PAD_Y)
35
36#define PAD_ERR_NO_CONTROLLER -1
37
44
47};
48
75
76struct PadLibData {
77 /*0x00*/ u8 qnum;
78 /*0x01*/ u8 qread;
79 /*0x02*/ u8 qwrite;
80 /*0x03*/ u8 qcount;
81 /*0x04*/ u8 qtype;
82 /*0x08*/ HSD_PadData* queue;
83 /*0x0C*/ s32 repeat_start;
85 /*0x14*/ s8 adc_type;
86 /*0x15*/ s8 adc_th;
87 /*0x18*/ f32 adc_angle;
98 /*0x26*/ s8 scale_stick;
101 /*0x29*/ u8 cross_dir;
103 /*0x2B*/ u8 reset_switch;
104 /*0x2C*/ struct RumbleInfo rumble_info;
105};
106
110
111static inline float HSD_PadGetNmlStickY(u8 slot)
112{
113 return HSD_PadCopyStatus[slot].nml_stickY;
114}
115
116static inline float HSD_PadGetNmlSubStickY(u8 slot)
117{
118 return HSD_PadCopyStatus[slot].nml_subStickY;
119}
120
124void HSD_PadRenewRawStatus(bool);
125void HSD_PadRenewMasterStatus(void);
126void HSD_PadRenewCopyStatus(void);
127void HSD_PadRenewGameStatus(void);
128void HSD_PadRenewStatus(void);
129void HSD_PadReset(void);
131
132#endif
HSD_PadStatus HSD_PadMasterStatus[4]
Definition controller.c:19
HSD_PadStatus HSD_PadGameStatus[4]
Definition controller.c:21
void HSD_PadRenewCopyStatus(void)
Definition controller.c:472
static float HSD_PadGetNmlSubStickY(u8 slot)
Definition controller.h:116
static float HSD_PadGetNmlStickY(u8 slot)
Definition controller.h:111
HSD_FlushType
Definition controller.h:38
@ HSD_PAD_FLUSH_QUEUE_TERMINATE
Definition controller.h:42
@ HSD_PAD_FLUSH_QUEUE_THROWAWAY
Definition controller.h:40
@ HSD_PAD_FLUSH_QUEUE_LEAVE1
Definition controller.h:41
@ HSD_PAD_FLUSH_QUEUE_MERGE
Definition controller.h:39
void HSD_PadRenewRawStatus(bool)
Definition controller.c:59
u8 HSD_PadGetRawQueueCount(void)
Definition controller.c:25
void HSD_PadInit(u8, HSD_PadData *, u16, HSD_PadRumbleListData *)
Definition controller.c:581
u32 HSD_Pad
Definition controller.h:11
void HSD_PadReset(void)
Definition controller.c:559
void HSD_PadRenewGameStatus(void)
Definition controller.c:511
void HSD_PadFlushQueue(HSD_FlushType)
Definition controller.c:131
void HSD_PadRenewStatus(void)
Definition controller.c:551
void HSD_PadRenewMasterStatus(void)
Definition controller.c:353
s32 HSD_PadGetResetSwitch(void)
Definition controller.c:39
unsigned long u32
Definition types.h:9
float f32
Definition types.h:13
unsigned short int u16
Definition types.h:7
signed char s8
Definition hsd_3B2B.h:3
signed long s32
Definition hsd_3B2B.h:1
unsigned char u8
Definition hsd_3B2B.h:2
HSD_PadStatus HSD_PadCopyStatus[4]
Definition controller.c:20
Definition controller.h:45
PADStatus stat[4]
Definition controller.h:46
Definition rumble.h:34
Definition controller.h:49
u8 cross_dir
Definition controller.h:72
s32 repeat_count
Definition controller.h:55
s8 subStickY
Definition controller.h:59
u8 analogR
Definition controller.h:61
f32 nml_subStickY
Definition controller.h:67
u8 analogA
Definition controller.h:62
u32 trigger
Definition controller.h:52
u32 last_button
Definition controller.h:51
u32 button
Definition controller.h:50
s8 stickX
Definition controller.h:56
f32 nml_stickY
Definition controller.h:65
u32 release
Definition controller.h:54
u8 analogL
Definition controller.h:60
f32 nml_analogL
Definition controller.h:68
s8 err
Definition controller.h:73
f32 nml_subStickX
Definition controller.h:66
f32 nml_analogB
Definition controller.h:71
s8 subStickX
Definition controller.h:58
u32 repeat
Definition controller.h:53
f32 nml_stickX
Definition controller.h:64
f32 nml_analogR
Definition controller.h:69
f32 nml_analogA
Definition controller.h:70
u8 analogB
Definition controller.h:63
s8 stickY
Definition controller.h:57
Definition pad.h:62
Definition controller.h:76
u8 clamp_stickShift
Definition controller.h:89
s8 adc_type
Definition controller.h:85
u8 qcount
Definition controller.h:80
u8 clamp_analogABMax
Definition controller.h:96
s8 scale_stick
Definition controller.h:98
u8 scale_analogAB
Definition controller.h:100
HSD_PadData * queue
Definition controller.h:82
u8 clamp_analogABMin
Definition controller.h:97
s8 adc_th
Definition controller.h:86
u8 reset_switch
Definition controller.h:103
u8 clamp_analogLRShift
Definition controller.h:92
s32 repeat_interval
Definition controller.h:84
u8 qwrite
Definition controller.h:79
u8 scale_analogLR
Definition controller.h:99
u8 clamp_analogLRMin
Definition controller.h:94
u8 qtype
Definition controller.h:81
u8 qread
Definition controller.h:78
u8 reset_switch_status
Definition controller.h:102
s8 clamp_stickMin
Definition controller.h:91
s32 repeat_start
Definition controller.h:83
s8 clamp_stickMax
Definition controller.h:90
u8 clamp_analogABShift
Definition controller.h:95
f32 adc_angle
Definition controller.h:87
struct RumbleInfo rumble_info
Definition controller.h:104
u8 qnum
Definition controller.h:77
u8 clamp_analogLRMax
Definition controller.h:93
u8 clamp_stickType
Definition controller.h:88
u8 cross_dir
Definition controller.h:101
Definition rumble.h:28