Final merge of Google Summer of Code 2008 work...
Port SDL 1.3 to the Nintendo DS by Darren Alton, mentored by Sam Lantinga --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%403188
This commit is contained in:
parent
e6faee6b2a
commit
ede44c4b85
123 changed files with 6082 additions and 388 deletions
|
@ -149,8 +149,8 @@ HIDCreateOpenDeviceInterface(io_object_t hidDevice, recDevice * pDevice)
|
|||
(*ppPlugInInterface)->QueryInterface(ppPlugInInterface,
|
||||
CFUUIDGetUUIDBytes
|
||||
(kIOHIDDeviceInterfaceID),
|
||||
(void *) &(pDevice->
|
||||
interface));
|
||||
(void *)
|
||||
&(pDevice->interface));
|
||||
if (S_OK != plugInResult)
|
||||
HIDReportErrorNum
|
||||
("CouldnÕt query HID class device interface from plugInInterface",
|
||||
|
|
|
@ -89,6 +89,7 @@ struct joystick_logical_mapping
|
|||
static struct joystick_logical_mapping mp88xx_1_logical_axismap[] = {
|
||||
{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}
|
||||
};
|
||||
|
||||
static struct joystick_logical_mapping mp88xx_1_logical_buttonmap[] = {
|
||||
{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}, {0, 6}, {0, 7}, {0, 8},
|
||||
{0, 9}, {0, 10}, {0, 11}
|
||||
|
@ -98,6 +99,7 @@ static struct joystick_logical_mapping mp88xx_2_logical_axismap[] = {
|
|||
{0, 0}, {0, 1}, {0, 2}, {1, 0}, {1, 1}, {0, 3},
|
||||
{1, 2}, {1, 3}, {0, 4}, {0, 5}, {1, 4}, {1, 5}
|
||||
};
|
||||
|
||||
static struct joystick_logical_mapping mp88xx_2_logical_buttonmap[] = {
|
||||
{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}, {0, 6}, {0, 7}, {0, 8},
|
||||
{0, 9}, {0, 10}, {0, 11},
|
||||
|
@ -110,6 +112,7 @@ static struct joystick_logical_mapping mp88xx_3_logical_axismap[] = {
|
|||
{1, 2}, {1, 3}, {2, 0}, {2, 1}, {2, 2}, {2, 3},
|
||||
{0, 4}, {0, 5}, {1, 4}, {1, 5}, {2, 4}, {2, 5}
|
||||
};
|
||||
|
||||
static struct joystick_logical_mapping mp88xx_3_logical_buttonmap[] = {
|
||||
{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}, {0, 6}, {0, 7}, {0, 8},
|
||||
{0, 9}, {0, 10}, {0, 11},
|
||||
|
@ -125,6 +128,7 @@ static struct joystick_logical_mapping mp88xx_4_logical_axismap[] = {
|
|||
{3, 0}, {3, 1}, {3, 2}, {3, 3}, {0, 4}, {0, 5},
|
||||
{1, 4}, {1, 5}, {2, 4}, {2, 5}, {3, 4}, {3, 5}
|
||||
};
|
||||
|
||||
static struct joystick_logical_mapping mp88xx_4_logical_buttonmap[] = {
|
||||
{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}, {0, 6}, {0, 7}, {0, 8},
|
||||
{0, 9}, {0, 10}, {0, 11},
|
||||
|
@ -147,15 +151,18 @@ struct joystick_logical_layout
|
|||
static struct joystick_logical_layout mp88xx_1_logical_layout[] = {
|
||||
{6, 0, 0, 12}
|
||||
};
|
||||
|
||||
static struct joystick_logical_layout mp88xx_2_logical_layout[] = {
|
||||
{6, 0, 0, 12},
|
||||
{6, 0, 0, 12}
|
||||
};
|
||||
|
||||
static struct joystick_logical_layout mp88xx_3_logical_layout[] = {
|
||||
{6, 0, 0, 12},
|
||||
{6, 0, 0, 12},
|
||||
{6, 0, 0, 12}
|
||||
};
|
||||
|
||||
static struct joystick_logical_layout mp88xx_4_logical_layout[] = {
|
||||
{6, 0, 0, 12},
|
||||
{6, 0, 0, 12},
|
||||
|
@ -953,8 +960,8 @@ HandleHat(SDL_Joystick * stick, Uint8 hat, int axis, int value)
|
|||
#endif /* USE_LOGICAL_JOYSTICKS */
|
||||
|
||||
SDL_PrivateJoystickHat(stick, hat,
|
||||
position_map[the_hat->axis[1]][the_hat->
|
||||
axis[0]]);
|
||||
position_map[the_hat->
|
||||
axis[1]][the_hat->axis[0]]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1085,13 +1092,13 @@ EV_HandleEvents(SDL_Joystick * joystick)
|
|||
code -= BTN_MISC;
|
||||
#ifndef NO_LOGICAL_JOYSTICKS
|
||||
if (!LogicalJoystickButton(joystick,
|
||||
joystick->hwdata->
|
||||
key_map[code],
|
||||
joystick->
|
||||
hwdata->key_map[code],
|
||||
events[i].value))
|
||||
#endif
|
||||
SDL_PrivateJoystickButton(joystick,
|
||||
joystick->hwdata->
|
||||
key_map[code],
|
||||
joystick->
|
||||
hwdata->key_map[code],
|
||||
events[i].value);
|
||||
}
|
||||
break;
|
||||
|
@ -1113,12 +1120,12 @@ EV_HandleEvents(SDL_Joystick * joystick)
|
|||
EV_AxisCorrect(joystick, code, events[i].value);
|
||||
#ifndef NO_LOGICAL_JOYSTICKS
|
||||
if (!LogicalJoystickAxis(joystick,
|
||||
joystick->hwdata->
|
||||
abs_map[code], events[i].value))
|
||||
joystick->hwdata->abs_map[code],
|
||||
events[i].value))
|
||||
#endif
|
||||
SDL_PrivateJoystickAxis(joystick,
|
||||
joystick->hwdata->
|
||||
abs_map[code],
|
||||
joystick->
|
||||
hwdata->abs_map[code],
|
||||
events[i].value);
|
||||
break;
|
||||
}
|
||||
|
|
172
src/joystick/nds/SDL_sysjoystick.c
Normal file
172
src/joystick/nds/SDL_sysjoystick.c
Normal file
|
@ -0,0 +1,172 @@
|
|||
/*
|
||||
SDL - Simple DirectMedia Layer
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001 Sam Lantinga
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Sam Lantinga
|
||||
slouken@devolution.com
|
||||
*/
|
||||
|
||||
#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"
|
||||
#include "SDL_sysjoystick.h"
|
||||
#include "SDL_joystick_c.h"
|
||||
|
||||
#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)
|
||||
{
|
||||
SDL_numjoysticks = 1;
|
||||
return (1);
|
||||
}
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
|
||||
/* 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.
|
||||
*/
|
||||
void
|
||||
SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
|
||||
{
|
||||
u32 keysd, keysu;
|
||||
int magnitude = 16384;
|
||||
|
||||
/*scanKeys(); */
|
||||
keysd = keysDown();
|
||||
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);
|
||||
}
|
||||
if ((keysu & (KEY_UP | KEY_DOWN))) {
|
||||
SDL_PrivateJoystickAxis(joystick, 1, 0);
|
||||
}
|
||||
if ((keysu & (KEY_LEFT | KEY_RIGHT))) {
|
||||
SDL_PrivateJoystickAxis(joystick, 0, 0);
|
||||
}
|
||||
if ((keysd & KEY_A)) {
|
||||
SDL_PrivateJoystickButton(joystick, 0, SDL_PRESSED);
|
||||
}
|
||||
if ((keysd & KEY_B)) {
|
||||
SDL_PrivateJoystickButton(joystick, 1, SDL_PRESSED);
|
||||
}
|
||||
if ((keysd & KEY_X)) {
|
||||
SDL_PrivateJoystickButton(joystick, 2, SDL_PRESSED);
|
||||
}
|
||||
if ((keysd & KEY_Y)) {
|
||||
SDL_PrivateJoystickButton(joystick, 3, SDL_PRESSED);
|
||||
}
|
||||
if ((keysd & KEY_L)) {
|
||||
SDL_PrivateJoystickButton(joystick, 4, SDL_PRESSED);
|
||||
}
|
||||
if ((keysd & KEY_R)) {
|
||||
SDL_PrivateJoystickButton(joystick, 5, SDL_PRESSED);
|
||||
}
|
||||
if ((keysd & KEY_SELECT)) {
|
||||
SDL_PrivateJoystickButton(joystick, 6, SDL_PRESSED);
|
||||
}
|
||||
if ((keysd & KEY_START)) {
|
||||
SDL_PrivateJoystickButton(joystick, 7, SDL_PRESSED);
|
||||
}
|
||||
if ((keysu & KEY_A)) {
|
||||
SDL_PrivateJoystickButton(joystick, 0, SDL_RELEASED);
|
||||
}
|
||||
if ((keysu & KEY_B)) {
|
||||
SDL_PrivateJoystickButton(joystick, 1, SDL_RELEASED);
|
||||
}
|
||||
if ((keysu & KEY_X)) {
|
||||
SDL_PrivateJoystickButton(joystick, 2, SDL_RELEASED);
|
||||
}
|
||||
if ((keysu & KEY_Y)) {
|
||||
SDL_PrivateJoystickButton(joystick, 3, SDL_RELEASED);
|
||||
}
|
||||
if ((keysu & KEY_L)) {
|
||||
SDL_PrivateJoystickButton(joystick, 4, SDL_RELEASED);
|
||||
}
|
||||
if ((keysu & KEY_R)) {
|
||||
SDL_PrivateJoystickButton(joystick, 5, SDL_RELEASED);
|
||||
}
|
||||
if ((keysu & KEY_SELECT)) {
|
||||
SDL_PrivateJoystickButton(joystick, 6, SDL_RELEASED);
|
||||
}
|
||||
if ((keysu & KEY_START)) {
|
||||
SDL_PrivateJoystickButton(joystick, 7, SDL_RELEASED);
|
||||
}
|
||||
}
|
||||
|
||||
/* 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 */
|
Loading…
Add table
Add a link
Reference in a new issue