Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
si.h
Go to the documentation of this file.
1#ifndef _DOLPHIN_SI_H_
2#define _DOLPHIN_SI_H_
3
4#ifdef __REVOLUTION_SDK__
5#include <revolution/si.h>
6#else
7#include <dolphin/os.h>
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13#define SI_MAX_CHAN 4
14#define SI_MAX_TYPE 4
15
16#define SI_COMCSR_IDX 13
17#define SI_STATUS_IDX 14
18
19#define SI_COMCSR_TCINT_MASK (1 << 31)
20#define SI_COMCSR_TCINTMSK_MASK (1 << 30)
21#define SI_COMCSR_COMERR_MASK (1 << 29)
22#define SI_COMCSR_RDSTINT_MASK (1 << 28)
23#define SI_COMCSR_RDSTINTMSK_MASK (1 << 27)
24
25// 4 bits of padding
26#define SI_COMCSR_OUTLNGTH_MASK (1 << 22) \
27 | (1 << 21) \
28 | (1 << 20) \
29 | (1 << 19) \
30 | (1 << 18) \
31 | (1 << 17) \
32 | (1 << 16)
33
34// 1 bit of padding
35#define SI_COMCSR_INLNGTH_MASK (1 << 14) \
36 | (1 << 13) \
37 | (1 << 12) \
38 | (1 << 11) \
39 | (1 << 10) \
40 | (1 << 9) \
41 | (1 << 8)
42
43// 5 bits of padding
44#define SI_COMCSR_CHANNEL_MASK (1 << 2) \
45 | (1 << 1)
46
47#define SI_COMCSR_TSTART_MASK (1 << 0)
48
49#define SI_ERROR_UNDER_RUN 0x0001
50#define SI_ERROR_OVER_RUN 0x0002
51#define SI_ERROR_COLLISION 0x0004
52#define SI_ERROR_NO_RESPONSE 0x0008
53#define SI_ERROR_WRST 0x0010
54#define SI_ERROR_RDST 0x0020
55#define SI_ERROR_UNKNOWN 0x0040
56#define SI_ERROR_BUSY 0x0080
57
58#define SI_TYPE_MASK 0x18000000u
59#define SI_TYPE_N64 0x00000000u
60#define SI_TYPE_DOLPHIN 0x08000000u
61#define SI_TYPE_GC SI_TYPE_DOLPHIN
62#define SI_GC_WIRELESS 0x80000000
63#define SI_GC_NOMOTOR 0x20000000
64#define SI_GC_STANDARD 0x01000000
65#define SI_WIRELESS_RECEIVED 0x40000000
66#define SI_WIRELESS_IR 0x04000000
67#define SI_WIRELESS_STATE 0x02000000
68#define SI_WIRELESS_ORIGIN 0x00200000
69#define SI_WIRELESS_FIX_ID 0x00100000
70#define SI_WIRELESS_TYPE 0x000f0000
71#define SI_WIRELESS_LITE_MASK 0x000c0000
72#define SI_WIRELESS_LITE 0x00040000
73#define SI_WIRELESS_CONT_MASK 0x00080000
74#define SI_WIRELESS_CONT 0x00000000
75#define SI_WIRELESS_ID 0x00c0ff00
76#define SI_WIRELESS_TYPE_ID (SI_WIRELESS_TYPE | SI_WIRELESS_ID)
77#define SI_N64_CONTROLLER (SI_TYPE_N64 | 0x05000000)
78#define SI_N64_MIC (SI_TYPE_N64 | 0x00010000)
79#define SI_N64_KEYBOARD (SI_TYPE_N64 | 0x00020000)
80#define SI_N64_MOUSE (SI_TYPE_N64 | 0x02000000)
81#define SI_GBA (SI_TYPE_N64 | 0x00040000)
82#define SI_GC_CONTROLLER (SI_TYPE_GC | SI_GC_STANDARD)
83#define SI_GC_RECEIVER (SI_TYPE_GC | SI_GC_WIRELESS)
84#define SI_GC_WAVEBIRD (SI_TYPE_GC | SI_GC_WIRELESS | SI_GC_STANDARD | SI_WIRELESS_STATE | SI_WIRELESS_FIX_ID)
85#define SI_GC_KEYBOARD (SI_TYPE_GC | 0x00200000)
86#define SI_GC_STEERING (SI_TYPE_GC | 0x00000000)
87
88typedef void (*SICallback)(s32 chan, u32 sr, OSContext *context);
89typedef void (*SITypeCallback)(s32 chan, u32 type);
90
98
108
109// SIBios
110BOOL SIBusy(void);
111BOOL SIIsChanBusy(s32 chan);
114void SIInit(void);
115u32 SISync(void);
116u32 SIGetStatus(s32 chan);
117void SISetCommand(s32 chan, u32 command);
118u32 SIGetCommand(s32 chan);
119void SITransferCommands(void);
120u32 SISetXY(u32 x, u32 y);
123BOOL SIGetResponse(s32 chan, void* data);
124BOOL SITransfer(s32 chan, void* output, u32 outputBytes, void* input, u32 inputBytes, SICallback callback, OSTime delay);
125u32 SIGetType(s32 chan);
127u32 SIDecodeType(u32 type);
128u32 SIProbe(s32 chan);
129char* SIGetTypeString(u32 type);
130
131extern u32 __PADFixBits;
132
133// SISamplingRate
134void SISetSamplingRate(u32 msec);
135void SIRefreshSamplingRate(void);
136
137// SISteering
138typedef void (*SISteeringCallback)(s32 chan, s32);
139
150
161
165
166void SIInitSteering(void);
169
172void SIControlSteering(s32 chan, u32 control, s32 level);
173
174#ifdef __cplusplus
175}
176#endif
177
178#endif
179#endif // _DOLPHIN_SI_H_
static OSContext context
Definition JUTException.cpp:157
void(* __OSInterruptHandler)(__OSInterrupt interrupt, OSContext *context)
Definition OSInterrupt.h:100
s64 OSTime
Definition os.h:19
char * SIGetTypeString(u32 type)
Definition SIBios.c:768
s32 SIReadSteering(s32 chan, SISteeringStatus *status)
Definition SISteeringAuto.c:31
BOOL SIGetResponse(s32 chan, void *data)
Definition SIBios.c:479
BOOL SIRegisterPollingHandler(__OSInterruptHandler handler)
Definition SIBios.c:222
void SIRefreshSamplingRate(void)
Definition SISamplingRate.c:78
u32 __PADFixBits
Definition SIBios.c:33
u32 SISetXY(u32 x, u32 y)
Definition SIBios.c:402
u32 SIDecodeType(u32 type)
Definition SIBios.c:701
void SIInit(void)
Definition SIBios.c:275
void SIControlSteering(s32 chan, u32 control, s32 level)
Definition SISteeringAuto.c:103
BOOL SITransfer(s32 chan, void *output, u32 outputBytes, void *input, u32 inputBytes, SICallback callback, OSTime delay)
Definition SIBios.c:515
u32 SIEnablePolling(u32 poll)
Definition SIBios.c:421
u32 SIDisablePolling(u32 poll)
Definition SIBios.c:446
u32 SIProbe(s32 chan)
Definition SIBios.c:764
void(* SICallback)(s32 chan, u32 sr, OSContext *context)
Definition si.h:88
void(* SISteeringCallback)(s32 chan, s32)
Definition si.h:138
void SISetSamplingRate(u32 msec)
Definition SISamplingRate.c:45
u32 SIGetStatus(s32 chan)
Definition SIBios.c:368
s32 SIResetSteering(s32 chan)
Definition SISteering.c:79
u32 SIGetTypeAsync(s32 chan, SITypeCallback callback)
Definition SIBios.c:672
u32 SIGetType(s32 chan)
Definition SIBios.c:635
s32 SIResetSteeringAsync(s32 chan, SISteeringCallback callback)
Definition SISteering.c:65
BOOL SIUnregisterPollingHandler(__OSInterruptHandler handler)
Definition SIBios.c:247
void(* SITypeCallback)(s32 chan, u32 type)
Definition si.h:89
BOOL SIIsChanBusy(s32 chan)
Definition SIBios.c:48
BOOL SIBusy(void)
Definition SIBios.c:44
void SISetCommand(s32 chan, u32 command)
Definition SIBios.c:388
u32 SISync(void)
Definition SIBios.c:355
void SITransferCommands(void)
Definition SIBios.c:398
u32 SIGetCommand(s32 chan)
Definition SIBios.c:393
int BOOL
Definition types.h:33
signed char s8
Definition types.h:7
unsigned long u32
Definition types.h:12
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
double x double x
Definition e_atan2.c:58
double x double y
Definition e_atan2.c:58
static u32 status
Definition fstload.c:9
static void callback(u32 param_0)
Definition OSExec.c:308
void(*)() SISetSteeringSamplingCallback(void(*callback)())
Definition si.h:168
void SIInitSteering(void)
Definition SISteering.c:17
BOOL __SIResetSteering
Definition SISteering.c:13
u32 __SISteeringEnableBits
Definition SISteeringAuto.c:5
SISteeringControl __SISteering[4]
Definition SISteering.c:12
Definition OSContext.h:140
Definition OSThread.h:22
Definition si.h:91
u32 poll
Definition si.h:93
void * input
Definition si.h:95
s32 chan
Definition si.h:92
SICallback callback
Definition si.h:96
u32 inputBytes
Definition si.h:94
Definition si.h:99
OSTime fire
Definition si.h:106
void * input
Definition si.h:103
SICallback callback
Definition si.h:105
void * output
Definition si.h:101
s32 chan
Definition si.h:100
u32 outputBytes
Definition si.h:102
u32 inputBytes
Definition si.h:104
Definition si.h:140
u32 inputBytes
Definition si.h:144
SISteeringCallback callback
Definition si.h:145
s32 ret
Definition si.h:146
u32 outputBytes
Definition si.h:143
OSThreadQueue threadQueue
Definition si.h:147
Definition si.h:151
u8 misc
Definition si.h:153
s8 steering
Definition si.h:154
u8 right
Definition si.h:158
u16 button
Definition si.h:152
u8 left
Definition si.h:157
u8 brake
Definition si.h:156
u8 gas
Definition si.h:155
s8 err
Definition si.h:159