Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

Cleaned up and added joypad support from 1.2.9 NDS port. Also some mi…

…nor video driver bugfixes.
  • Loading branch information
Darren Alton committed Jun 19, 2008
1 parent 90b3947 commit 3782e51f6562a4fce9275e8d93ee9142f88b9d2b
@@ -49,7 +49,7 @@ src/events/SDL_mouse.c \
src/events/SDL_quit.c \
src/events/SDL_windowevents.c \
src/file/SDL_rwops.c \
src/joystick/dummy/SDL_sysjoystick.c \
src/joystick/nds/SDL_sysjoystick.c \
src/joystick/SDL_joystick.c \
src/stdlib/SDL_getenv.c \
src/stdlib/SDL_iconv.c \
@@ -64,9 +64,6 @@ src/thread/nds/SDL_syssem.c \
src/thread/nds/SDL_systhread.c \
src/timer/dummy/SDL_systimer.c \
src/timer/SDL_timer.c \
src/video/dummy/SDL_nullevents.c \
src/video/dummy/SDL_nullrender.c \
src/video/dummy/SDL_nullvideo.c \
src/video/nds/SDL_ndsevents.c \
src/video/nds/SDL_ndsrender.c \
src/video/nds/SDL_ndsvideo.c \
@@ -130,6 +127,8 @@ $(TARGET): copy_config \

install: $(TARGET)
@cp libSDL.a $(DEVKITPRO)/libnds/lib/
@mkdir -p $(DEVKITPRO)/libnds/include/SDL/
@cp include/*.h $(DEVKITPRO)/libnds/include/SDL/

copy_config:
@cp include/SDL_config.h.default include/SDL_config.h
@@ -98,7 +98,7 @@ typedef unsigned __PTRDIFF_TYPE__ uintptr_t;
#define SDL_CDROM_DISABLED 1

/* Enable various input drivers */
#define SDL_JOYSTICK_DISABLED 1
#define SDL_JOYSTICK_NDS 1

/* DS has no dynamic linking afaik */
#define SDL_LOADSO_DISABLED 1
@@ -146,12 +146,18 @@ enum
SDL_PIXELFORMAT_RGB555 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
SDL_PACKEDLAYOUT_1555, 15, 2),
SDL_PIXELFORMAT_BGR555 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
SDL_PACKEDLAYOUT_1555, 15, 2),
SDL_PIXELFORMAT_ARGB4444 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
SDL_PACKEDLAYOUT_4444, 16, 2),
SDL_PIXELFORMAT_ARGB1555 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
SDL_PACKEDLAYOUT_1555, 16, 2),
SDL_PIXELFORMAT_ABGR1555 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
SDL_PACKEDLAYOUT_1555, 16, 2),
SDL_PIXELFORMAT_RGB565 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
SDL_PACKEDLAYOUT_565, 16, 2),
@@ -25,12 +25,17 @@ static char rcsid =
"@(#) $Id: SDL_sysjoystick.c,v 1.2 2001/04/26 16:50:17 hercules Exp $";
#endif

#include "SDL_config.h"

#ifdef SDL_JOYSTICK_NDS

/* This is the system specific header for the SDL joystick API */
#include <nds.h>
//#include <nds/registers_alt.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"
@@ -46,9 +51,8 @@ int
SDL_SYS_JoystickInit(void)
{
SDL_numjoysticks = 1;

//keysInit();
return (1);
/* keysInit();*/
return (1);
}

/* Function to get the device-dependent name of a joystick */
@@ -82,150 +86,71 @@ SDL_SYS_JoystickOpen(SDL_Joystick * joystick)
* but instead should call SDL_PrivateJoystick*() to deliver events
* and update joystick device state.
*/
int prevbutton = 0;
int prevkey = 0;

int dc = NULL;
int ldc = 0;
u32 keysd, keysu = NULL;
void
SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
{

//dc=keysd;
//if (dc != NULL)
//{
//fprintf(stderr,"heartbeat= %d\n",REG_VCOUNT);
//swiWaitForVBlank();
//scanKeys();
//keysd = keysDown();
//keysu = keysUp();
//ldc=keysd;

//}
/*if (prevkey !=NULL && prevbutton !=NULL)
{
scanKeys();
}
*/

//scanKeys();
keysd = keysDown();
keysu = keysUp();
short ax = 0, v = 0, h = 0;
u32 keysd, keysu;
int magnitude = 16384;
scanKeys();
keysd = keysDown();
keysu = keysUp();

if ((keysd & KEY_UP)) {
ax = 1;
v = -10;
SDL_PrivateJoystickAxis(joystick, ax, v);
prevkey = KEY_UP;
} //fprintf(stderr,"KEY_UP\n");}
SDL_PrivateJoystickAxis(joystick, 1, -magnitude);
}
if ((keysd & KEY_DOWN)) {
ax = 1;
v = 10;
SDL_PrivateJoystickAxis(joystick, ax, v);
prevkey = KEY_DOWN;
} //fprintf(stderr,"KEY_DOWN\n");}
SDL_PrivateJoystickAxis(joystick, 1, magnitude);
}
if ((keysd & KEY_LEFT)) {
ax = 0;
h = -10;
SDL_PrivateJoystickAxis(joystick, ax, h);
prevkey = KEY_LEFT;
} //fprintf(stderr,"KEY_LEFT\n");}
SDL_PrivateJoystickAxis(joystick, 0, -magnitude);
}
if ((keysd & KEY_RIGHT)) {
ax = 0;
h = 10;
SDL_PrivateJoystickAxis(joystick, ax, h);
prevkey = KEY_RIGHT;
} //fprintf(stderr,"KEY_RIGHT\n");}
if ((keysu & KEY_UP)) {
ax = 1;
v = 0;
SDL_PrivateJoystickAxis(joystick, ax, v);
prevkey = NULL;
} //fprintf(stderr,"KEY_UP\n");}
if ((keysu & KEY_DOWN)) {
ax = 1;
v = 0;
SDL_PrivateJoystickAxis(joystick, ax, v);
prevkey = NULL;
} //fprintf(stderr,"KEY_DOWN\n");}
if ((keysu & KEY_LEFT)) {
ax = 0;
h = 0;
SDL_PrivateJoystickAxis(joystick, ax, h);
prevkey = NULL;
} //fprintf(stderr,"KEY_LEFT\n");}
if ((keysu & KEY_RIGHT)) {
ax = 0;
h = 0;
SDL_PrivateJoystickAxis(joystick, ax, h);
prevkey = NULL;
} //fprintf(stderr,"KEY_RIGHT\n");}
if ((keysd & KEY_A)) {
SDL_PrivateJoystickButton(joystick, 0, SDL_PRESSED);
prevbutton = KEY_A;
SDL_PrivateJoystickAxis(joystick, 0, magnitude);
}
if ((keysd & KEY_B)) {
SDL_PrivateJoystickButton(joystick, 1, SDL_PRESSED);
prevbutton = KEY_B;
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_X)) {
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);
prevbutton = KEY_X;
}
if ((keysd & KEY_Y)) {
} if ((keysd & KEY_Y)) {
SDL_PrivateJoystickButton(joystick, 3, SDL_PRESSED);
prevbutton = KEY_Y;
}
if ((keysd & KEY_SELECT)) {
SDL_PrivateJoystickButton(joystick, 6, SDL_PRESSED);
prevbutton = KEY_SELECT;
}
if ((keysd & KEY_START)) {
SDL_PrivateJoystickButton(joystick, 7, SDL_PRESSED);
prevbutton = KEY_START;
}
if ((keysd & KEY_L)) {
if ((keysd & KEY_L)) {
SDL_PrivateJoystickButton(joystick, 4, SDL_PRESSED);
prevbutton = KEY_L;
}
if ((keysd & KEY_R)) {
} if ((keysd & KEY_R)) {
SDL_PrivateJoystickButton(joystick, 5, SDL_PRESSED);
prevbutton = KEY_R;
}
if ((keysu & KEY_A)) {
SDL_PrivateJoystickButton(joystick, 0, SDL_RELEASED);
prevbutton = NULL;
if ((keysd & KEY_SELECT)) {
SDL_PrivateJoystickButton(joystick, 6, SDL_PRESSED);
} if ((keysd & KEY_START)) {
SDL_PrivateJoystickButton(joystick, 7, SDL_PRESSED);
}
if ((keysu & KEY_B)) {
if ((keysu & KEY_A)) {
SDL_PrivateJoystickButton(joystick, 0, SDL_RELEASED);
} if ((keysu & KEY_B)) {
SDL_PrivateJoystickButton(joystick, 1, SDL_RELEASED);
prevbutton = NULL;
}
if ((keysu & KEY_X)) {
} if ((keysu & KEY_X)) {
SDL_PrivateJoystickButton(joystick, 2, SDL_RELEASED);
prevbutton = NULL;
}
if ((keysu & KEY_Y)) {
} if ((keysu & KEY_Y)) {
SDL_PrivateJoystickButton(joystick, 3, SDL_RELEASED);
prevbutton = NULL;
}
if ((keysu & KEY_SELECT)) {
SDL_PrivateJoystickButton(joystick, 6, SDL_RELEASED);
prevbutton = NULL;
}
if ((keysu & KEY_START)) {
SDL_PrivateJoystickButton(joystick, 7, SDL_RELEASED);
prevbutton = NULL;
}
if ((keysu & KEY_L)) {
if ((keysu & KEY_L)) {
SDL_PrivateJoystickButton(joystick, 4, SDL_RELEASED);
prevbutton = NULL;
}
if ((keysu & KEY_R)) {
} if ((keysu & KEY_R)) {
SDL_PrivateJoystickButton(joystick, 5, SDL_RELEASED);
prevbutton = NULL;
}
}
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
@@ -238,3 +163,5 @@ void
SDL_SYS_JoystickQuit(void)
{
}
#endif /* SDL_JOYSTICK_NDS */

@@ -168,12 +168,16 @@ SDL_MasksToPixelFormatEnum(int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask,
break;
case 15:
switch (Rmask) {
case 0x001F:
return SDL_PIXELFORMAT_BGR555;
case 0x7C00:
return SDL_PIXELFORMAT_RGB555;
}
break;
case 16:
switch (Rmask) {
case 0x001F:
return SDL_PIXELFORMAT_ABGR1555;
case 0x0F00:
return SDL_PIXELFORMAT_ARGB4444;
case 0x7C00:
@@ -181,11 +181,11 @@ SDL_DUMMY_RenderPresent(SDL_Renderer * renderer)
SDL_SaveBMP(data->screens[data->current_screen], file);
}
/*{
int i;
for (i = 0; i < 256 * 192; ++i)
((Uint16 *)0x6800000)[i]
= ((Uint16 *)(data->screens[data->current_screen]->pixels))[i];
}*/
int i;
for (i = 0; i < 256 * 192; ++i)
((Uint16 *)0x6800000)[i]
= ((Uint16 *)(data->screens[data->current_screen]->pixels))[i];
} */

/* Update the flipping chain, if any */
if (renderer->info.flags & SDL_RENDERER_PRESENTFLIP2) {

0 comments on commit 3782e51

Please sign in to comment.