Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
171 lines (153 loc) · 5.02 KB

SDL_sysjoystick.c

File metadata and controls

171 lines (153 loc) · 5.02 KB
 
Apr 8, 2011
Apr 8, 2011
2
3
Simple DirectMedia Layer
Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org>
Apr 8, 2011
Apr 8, 2011
5
6
7
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Apr 8, 2011
Apr 8, 2011
9
10
11
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
Apr 8, 2011
Apr 8, 2011
13
14
15
16
17
18
19
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
20
21
22
23
24
25
26
27
28
29
30
31
32
*/
#include "SDL_config.h"
#ifdef SDL_JOYSTICK_NDS
/* This is the system specific header for the SDL joystick API */
#include <nds.h>
#include <stdio.h> /* For the definition of NULL */
#include "SDL_error.h"
#include "SDL_events.h"
#include "SDL_joystick.h"
Feb 16, 2011
Feb 16, 2011
33
34
#include "../SDL_sysjoystick.h"
#include "../SDL_joystick_c.h"
35
36
37
38
39
40
41
42
43
44
45
#include "../../video/nds/SDL_ndsevents_c.h"
/* Function to scan the system for joysticks.
* This function should set SDL_numjoysticks to the number of available
* joysticks. Joystick 0 should be the system default joystick.
* It should return 0, or -1 on an unrecoverable fatal error.
*/
int
SDL_SYS_JoystickInit(void)
{
Sep 6, 2008
Sep 6, 2008
46
SDL_numjoysticks = 1;
Aug 22, 2010
Aug 22, 2010
47
return (1);
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
}
/* Function to get the device-dependent name of a joystick */
const char *
SDL_SYS_JoystickName(int index)
{
if (!index)
return "NDS builtin joypad";
SDL_SetError("No joystick available with that index");
return (NULL);
}
/* Function to open a joystick for use.
The joystick to open is specified by the index field of the joystick.
This should fill the nbuttons and naxes fields of the joystick structure.
It returns 0, or -1 if there is an error.
*/
int
SDL_SYS_JoystickOpen(SDL_Joystick * joystick)
{
joystick->nbuttons = 8;
joystick->nhats = 0;
joystick->nballs = 0;
joystick->naxes = 2;
return 0;
}
Aug 22, 2010
Aug 22, 2010
75
76
77
78
79
80
/* Function to update the state of a joystick - called as a device poll.
* This function shouldn't update the joystick structure directly,
* but instead should call SDL_PrivateJoystick*() to deliver events
* and update joystick device state.
*/
Sep 6, 2008
Sep 6, 2008
81
void
82
83
84
85
SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
{
u32 keysd, keysu;
int magnitude = 16384;
Aug 22, 2010
Aug 22, 2010
86
87
/*scanKeys(); - this is done in PumpEvents, because touch uses it too */
Sep 6, 2008
Sep 6, 2008
88
keysd = keysDown();
89
90
91
92
93
94
95
96
97
98
99
100
101
102
keysu = keysUp();
if ((keysd & KEY_UP)) {
SDL_PrivateJoystickAxis(joystick, 1, -magnitude);
}
if ((keysd & KEY_DOWN)) {
SDL_PrivateJoystickAxis(joystick, 1, magnitude);
}
if ((keysd & KEY_LEFT)) {
SDL_PrivateJoystickAxis(joystick, 0, -magnitude);
}
if ((keysd & KEY_RIGHT)) {
SDL_PrivateJoystickAxis(joystick, 0, magnitude);
}
Aug 22, 2010
Aug 22, 2010
103
if ((keysu & (KEY_UP | KEY_DOWN))) {
104
105
SDL_PrivateJoystickAxis(joystick, 1, 0);
}
Aug 22, 2010
Aug 22, 2010
106
if ((keysu & (KEY_LEFT | KEY_RIGHT))) {
107
108
SDL_PrivateJoystickAxis(joystick, 0, 0);
}
Aug 22, 2010
Aug 22, 2010
109
if ((keysd & KEY_A)) {
110
111
SDL_PrivateJoystickButton(joystick, 0, SDL_PRESSED);
}
Aug 22, 2010
Aug 22, 2010
112
if ((keysd & KEY_B)) {
113
114
SDL_PrivateJoystickButton(joystick, 1, SDL_PRESSED);
}
Aug 22, 2010
Aug 22, 2010
115
if ((keysd & KEY_X)) {
116
117
SDL_PrivateJoystickButton(joystick, 2, SDL_PRESSED);
}
Aug 22, 2010
Aug 22, 2010
118
if ((keysd & KEY_Y)) {
119
120
SDL_PrivateJoystickButton(joystick, 3, SDL_PRESSED);
}
Aug 22, 2010
Aug 22, 2010
121
if ((keysd & KEY_L)) {
122
123
SDL_PrivateJoystickButton(joystick, 4, SDL_PRESSED);
}
Aug 22, 2010
Aug 22, 2010
124
if ((keysd & KEY_R)) {
125
126
SDL_PrivateJoystickButton(joystick, 5, SDL_PRESSED);
}
Aug 22, 2010
Aug 22, 2010
127
if ((keysd & KEY_SELECT)) {
128
129
SDL_PrivateJoystickButton(joystick, 6, SDL_PRESSED);
}
Aug 22, 2010
Aug 22, 2010
130
if ((keysd & KEY_START)) {
131
132
SDL_PrivateJoystickButton(joystick, 7, SDL_PRESSED);
}
Aug 22, 2010
Aug 22, 2010
133
if ((keysu & KEY_A)) {
134
135
SDL_PrivateJoystickButton(joystick, 0, SDL_RELEASED);
}
Aug 22, 2010
Aug 22, 2010
136
if ((keysu & KEY_B)) {
137
138
SDL_PrivateJoystickButton(joystick, 1, SDL_RELEASED);
}
Aug 22, 2010
Aug 22, 2010
139
if ((keysu & KEY_X)) {
140
141
SDL_PrivateJoystickButton(joystick, 2, SDL_RELEASED);
}
Aug 22, 2010
Aug 22, 2010
142
if ((keysu & KEY_Y)) {
143
144
SDL_PrivateJoystickButton(joystick, 3, SDL_RELEASED);
}
Aug 22, 2010
Aug 22, 2010
145
if ((keysu & KEY_L)) {
146
147
SDL_PrivateJoystickButton(joystick, 4, SDL_RELEASED);
}
Aug 22, 2010
Aug 22, 2010
148
if ((keysu & KEY_R)) {
149
150
SDL_PrivateJoystickButton(joystick, 5, SDL_RELEASED);
}
Aug 22, 2010
Aug 22, 2010
151
if ((keysu & KEY_SELECT)) {
152
153
SDL_PrivateJoystickButton(joystick, 6, SDL_RELEASED);
}
Aug 22, 2010
Aug 22, 2010
154
if ((keysu & KEY_START)) {
155
156
SDL_PrivateJoystickButton(joystick, 7, SDL_RELEASED);
}
Aug 22, 2010
Aug 22, 2010
157
}
158
159
160
161
162
163
164
165
166
167
168
169
170
171
/* Function to close a joystick after use */
void
SDL_SYS_JoystickClose(SDL_Joystick * joystick)
{
}
/* Function to perform any system-specific joystick related cleanup */
void
SDL_SYS_JoystickQuit(void)
{
}
#endif /* SDL_JOYSTICK_NDS */