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

Fixes to the NDS sprite2 test. Illustrates partially working texture-…

…as-sprite functionality.
  • Loading branch information
Darren Alton
Darren Alton committed Sep 6, 2008
1 parent 25bb288 commit 46b0436d715a773d96d91f79a8c3d9c251db6ba0
@@ -43,36 +43,35 @@ typedef struct
} NDS_HapticData;



void NDS_EZF_OpenNorWrite()
{
GBA_BUS[0x0FF0000] = 0xD200;
GBA_BUS[0x0000000] = 0x1500;
GBA_BUS[0x0010000] = 0xD200;
GBA_BUS[0x0020000] = 0x1500;
GBA_BUS[0x0E20000] = 0x1500;
GBA_BUS[0x0FE0000] = 0x1500;
}


void NDS_EZF_CloseNorWrite()
{
GBA_BUS[0x0FF0000] = 0xD200;
GBA_BUS[0x0000000] = 0x1500;
GBA_BUS[0x0010000] = 0xD200;
GBA_BUS[0x0020000] = 0x1500;
GBA_BUS[0x0E20000] = 0xD200;
GBA_BUS[0x0FE0000] = 0x1500;
}
void
NDS_EZF_OpenNorWrite()
{
GBA_BUS[0x0FF0000] = 0xD200;
GBA_BUS[0x0000000] = 0x1500;
GBA_BUS[0x0010000] = 0xD200;
GBA_BUS[0x0020000] = 0x1500;
GBA_BUS[0x0E20000] = 0x1500;
GBA_BUS[0x0FE0000] = 0x1500;
} void

NDS_EZF_CloseNorWrite()
{
GBA_BUS[0x0FF0000] = 0xD200;
GBA_BUS[0x0000000] = 0x1500;
GBA_BUS[0x0010000] = 0xD200;
GBA_BUS[0x0020000] = 0x1500;
GBA_BUS[0x0E20000] = 0xD200;
GBA_BUS[0x0FE0000] = 0x1500;
}

void NDS_EZF_ChipReset()
{
GBA_BUS[0x0000] = 0x00F0 ;
GBA_BUS[0x1000] = 0x00F0 ;
}
uint32 NDS_EZF_IsPresent()
{
vuint16 id1,id2;
void
NDS_EZF_ChipReset()
{
GBA_BUS[0x0000] = 0x00F0;
GBA_BUS[0x1000] = 0x00F0;
} uint32 NDS_EZF_IsPresent()
{
vuint16 id1, id2;

NDS_EZF_OpenNorWrite();

@@ -82,41 +81,35 @@ uint32 NDS_EZF_IsPresent()
GBA_BUS[0x1555] = 0x00AA;
GBA_BUS[0x12AA] = 0x0055;
GBA_BUS[0x1555] = 0x0090;

id1 = GBA_BUS[0x0001];
id2 = GBA_BUS[0x1001];

if((id1!=0x227E)|| (id2!=0x227E)) {
NDS_EZF_CloseNorWrite();
return 0;
}

id1 = GBA_BUS[0x000E];
id2 = GBA_BUS[0x100E];
id1 = GBA_BUS[0x0001];
id2 = GBA_BUS[0x1001];
if ((id1 != 0x227E) || (id2 != 0x227E)) {
NDS_EZF_CloseNorWrite();
return 0;
}
id1 = GBA_BUS[0x000E];
id2 = GBA_BUS[0x100E];

NDS_EZF_CloseNorWrite();

if(id1==0x2218 && id2==0x2218) {
return 1;
if (id1 == 0x2218 && id2 == 0x2218) {
return 1;
}

return 0;
}

void NDS_EZF_SetShake(u8 pos)
return 0;
}
void
NDS_EZF_SetShake(u8 pos)
{
u16 data = ((pos%3)|0x00F0);

GBA_BUS[0x0FF0000] = 0xD200;
GBA_BUS[0x0000000] = 0x1500;
GBA_BUS[0x0010000] = 0xD200;
GBA_BUS[0x0020000] = 0x1500;
GBA_BUS[0x0F10000] = data;
GBA_BUS[0x0FE0000] = 0x1500;

GBA_BUS[0] = 0x0000; /* write any value for vibration. */
GBA_BUS[0] = 0x0002;
}
u16 data = ((pos % 3) | 0x00F0);
GBA_BUS[0x0FF0000] = 0xD200;
GBA_BUS[0x0000000] = 0x1500;
GBA_BUS[0x0010000] = 0xD200;
GBA_BUS[0x0020000] = 0x1500;
GBA_BUS[0x0F10000] = data;
GBA_BUS[0x0FE0000] = 0x1500;

GBA_BUS[0] = 0x0000; /* write any value for vibration. */
GBA_BUS[0] = 0x0002;
}

static int
SDL_SYS_LogicError(void)
@@ -130,11 +123,11 @@ int
SDL_SYS_HapticInit(void)
{
int ret = 0;
if(isRumbleInserted()) {
if (isRumbleInserted()) {
/* official rumble pak is present. */
ret = 1;
printf("debug: haptic present: nintendo\n");
} else if(NDS_EZF_IsPresent()) {
} else if (NDS_EZF_IsPresent()) {
/* ezflash 3-in-1 pak is present. */
ret = 1;
printf("debug: haptic present: ezf3in1\n");
@@ -150,11 +143,14 @@ SDL_SYS_HapticInit(void)
const char *
SDL_SYS_HapticName(int index)
{
if(nds_haptic) {
switch(nds_haptic->hwdata->type) {
case OFFICIAL: return "Nintendo DS Rumble Pak";
case EZF3IN1: return "EZFlash 3-in-1 Rumble";
default: return NULL;
if (nds_haptic) {
switch (nds_haptic->hwdata->type) {
case OFFICIAL:
return "Nintendo DS Rumble Pak";
case EZF3IN1:
return "EZFlash 3-in-1 Rumble";
default:
return NULL;
}
}
return NULL;
@@ -164,12 +160,12 @@ SDL_SYS_HapticName(int index)
int
SDL_SYS_HapticOpen(SDL_Haptic * haptic)
{
if(!haptic) {
if (!haptic) {
return -1;
}

haptic->hwdata = SDL_malloc(sizeof(NDS_HapticData));
if(!haptic->hwdata) {
if (!haptic->hwdata) {
SDL_OutOfMemory();
return -1;
}
@@ -179,10 +175,10 @@ SDL_SYS_HapticOpen(SDL_Haptic * haptic)

/* determine what is here, if anything */
haptic->hwdata->type = NONE;
if(isRumbleInserted()) {
if (isRumbleInserted()) {
/* official rumble pak is present. */
haptic->hwdata->type = OFFICIAL;
} else if(NDS_EZF_IsPresent()) {
} else if (NDS_EZF_IsPresent()) {
/* ezflash 3-in-1 pak is present. */
haptic->hwdata->type = EZF3IN1;
NDS_EZF_ChipReset();
@@ -213,7 +209,7 @@ SDL_SYS_JoystickIsHaptic(SDL_Joystick * joystick)
int
SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick)
{
/*SDL_SYS_LogicError();*/
/*SDL_SYS_LogicError(); */
return -1;
}

@@ -44,7 +44,8 @@
int
SDL_SYS_JoystickInit(void)
{
SDL_numjoysticks = 1; return (1);
SDL_numjoysticks = 1;
return (1);
}

/* Function to get the device-dependent name of a joystick */
@@ -78,14 +79,14 @@ SDL_SYS_JoystickOpen(SDL_Joystick * joystick)
* but instead should call SDL_PrivateJoystick*() to deliver events
* and update joystick device state.
*/
void
void
SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
{
u32 keysd, keysu;
int magnitude = 16384;

/*scanKeys(); - this is done in PumpEvents, because touch uses it too */
keysd = keysDown();
/*scanKeys(); - this is done in PumpEvents, because touch uses it too */
keysd = keysDown();
keysu = keysUp();

if ((keysd & KEY_UP)) {
@@ -100,58 +101,58 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
if ((keysd & KEY_RIGHT)) {
SDL_PrivateJoystickAxis(joystick, 0, magnitude);
}
if ((keysu & (KEY_UP | KEY_DOWN))) {
if ((keysu & (KEY_UP | KEY_DOWN))) {
SDL_PrivateJoystickAxis(joystick, 1, 0);
}
if ((keysu & (KEY_LEFT | KEY_RIGHT))) {
if ((keysu & (KEY_LEFT | KEY_RIGHT))) {
SDL_PrivateJoystickAxis(joystick, 0, 0);
}
if ((keysd & KEY_A)) {
if ((keysd & KEY_A)) {
SDL_PrivateJoystickButton(joystick, 0, SDL_PRESSED);
}
if ((keysd & KEY_B)) {
if ((keysd & KEY_B)) {
SDL_PrivateJoystickButton(joystick, 1, SDL_PRESSED);
}
if ((keysd & KEY_X)) {
if ((keysd & KEY_X)) {
SDL_PrivateJoystickButton(joystick, 2, SDL_PRESSED);
}
if ((keysd & KEY_Y)) {
if ((keysd & KEY_Y)) {
SDL_PrivateJoystickButton(joystick, 3, SDL_PRESSED);
}
if ((keysd & KEY_L)) {
if ((keysd & KEY_L)) {
SDL_PrivateJoystickButton(joystick, 4, SDL_PRESSED);
}
if ((keysd & KEY_R)) {
if ((keysd & KEY_R)) {
SDL_PrivateJoystickButton(joystick, 5, SDL_PRESSED);
}
if ((keysd & KEY_SELECT)) {
if ((keysd & KEY_SELECT)) {
SDL_PrivateJoystickButton(joystick, 6, SDL_PRESSED);
}
if ((keysd & KEY_START)) {
if ((keysd & KEY_START)) {
SDL_PrivateJoystickButton(joystick, 7, SDL_PRESSED);
}
if ((keysu & KEY_A)) {
if ((keysu & KEY_A)) {
SDL_PrivateJoystickButton(joystick, 0, SDL_RELEASED);
}
if ((keysu & KEY_B)) {
if ((keysu & KEY_B)) {
SDL_PrivateJoystickButton(joystick, 1, SDL_RELEASED);
}
if ((keysu & KEY_X)) {
if ((keysu & KEY_X)) {
SDL_PrivateJoystickButton(joystick, 2, SDL_RELEASED);
}
if ((keysu & KEY_Y)) {
if ((keysu & KEY_Y)) {
SDL_PrivateJoystickButton(joystick, 3, SDL_RELEASED);
}
if ((keysu & KEY_L)) {
if ((keysu & KEY_L)) {
SDL_PrivateJoystickButton(joystick, 4, SDL_RELEASED);
}
if ((keysu & KEY_R)) {
if ((keysu & KEY_R)) {
SDL_PrivateJoystickButton(joystick, 5, SDL_RELEASED);
}
if ((keysu & KEY_SELECT)) {
if ((keysu & KEY_SELECT)) {
SDL_PrivateJoystickButton(joystick, 6, SDL_RELEASED);
}
if ((keysu & KEY_START)) {
if ((keysu & KEY_START)) {
SDL_PrivateJoystickButton(joystick, 7, SDL_RELEASED);
}
}
@@ -169,4 +170,3 @@ SDL_SYS_JoystickQuit(void)
}

#endif /* SDL_JOYSTICK_NDS */

@@ -47,8 +47,8 @@ NDS_PumpEvents(_THIS)
}
if (keysHeld() & KEY_TOUCH) {
touchPosition t = touchReadXY();
SDL_SendMouseMotion(0, 0, t.px, t.py, 1); /* last arg is pressure,
hardcoded 1 for now */
SDL_SendMouseMotion(0, 0, t.px, t.py, 1); /* last arg is pressure,
hardcoded 1 for now */
}
}

Binary file not shown.

0 comments on commit 46b0436

Please sign in to comment.