diff src/joystick/nds/SDL_sysjoystick.c @ 2673:24a6b3588eac gsoc2008_nds

Cleaned up and added joypad support from 1.2.9 NDS port. Also some minor video driver bugfixes.
author Darren Alton <dalton@stevens.edu>
date Thu, 19 Jun 2008 07:11:35 +0000
parents c3e7c0698cbb
children 082cc3ffd7d8
line wrap: on
line diff
--- a/src/joystick/nds/SDL_sysjoystick.c	Tue Jun 17 08:26:36 2008 +0000
+++ b/src/joystick/nds/SDL_sysjoystick.c	Thu Jun 19 07:11:35 2008 +0000
@@ -25,12 +25,17 @@
     "@(#) $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 @@
 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 @@
  * 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_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);
-        prevbutton = KEY_A;
-    }
-    
if ((keysd & KEY_B)) {
+    }
    if ((keysd & KEY_B)) {
         SDL_PrivateJoystickButton(joystick, 1, SDL_PRESSED);
-        prevbutton = KEY_B;
-    }
-    
if ((keysd & KEY_X)) {
+    }
    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)) {
+
    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);
-        prevbutton = KEY_SELECT;
-    }
-    
if ((keysd & KEY_START)) {
+    }
    if ((keysd & KEY_START)) {
         SDL_PrivateJoystickButton(joystick, 7, SDL_PRESSED);
-        prevbutton = KEY_START;
-    }
-    
if ((keysd & KEY_L)) {
-        SDL_PrivateJoystickButton(joystick, 4, SDL_PRESSED);
-        prevbutton = KEY_L;
     }
-    
if ((keysd & KEY_R)) {
-        SDL_PrivateJoystickButton(joystick, 5, SDL_PRESSED);
-        prevbutton = KEY_R;
-    }
-    

if ((keysu & KEY_A)) {
+
    if ((keysu & KEY_A)) {
         SDL_PrivateJoystickButton(joystick, 0, SDL_RELEASED);
-        prevbutton = NULL;
-    }
-    
if ((keysu & KEY_B)) {
+    }
    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)) {
+
    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);
-        prevbutton = NULL;
-    }
-    
if ((keysu & KEY_START)) {
+    }
    if ((keysu & KEY_START)) {
         SDL_PrivateJoystickButton(joystick, 7, SDL_RELEASED);
-        prevbutton = NULL;
-    }
-    
if ((keysu & KEY_L)) {
-        SDL_PrivateJoystickButton(joystick, 4, SDL_RELEASED);
-        prevbutton = NULL;
-    }
-    
if ((keysu & KEY_R)) {
-        SDL_PrivateJoystickButton(joystick, 5, SDL_RELEASED);
-        prevbutton = NULL;
-    }
-

}
+    }
}
 
 /* Function to close a joystick after use */
 void
@@ -238,3 +163,5 @@
 SDL_SYS_JoystickQuit(void)
 {
 }
+#endif /* SDL_JOYSTICK_NDS */
+