Commit e5621bf1 authored by Darren Alton's avatar Darren Alton

Fixes to the NDS sprite2 test. Illustrates partially working texture-as-sprite functionality.

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%403203
parent a2947b88
...@@ -43,36 +43,35 @@ typedef struct ...@@ -43,36 +43,35 @@ typedef struct
} NDS_HapticData; } NDS_HapticData;
void
void NDS_EZF_OpenNorWrite() NDS_EZF_OpenNorWrite()
{ {
GBA_BUS[0x0FF0000] = 0xD200; GBA_BUS[0x0FF0000] = 0xD200;
GBA_BUS[0x0000000] = 0x1500; GBA_BUS[0x0000000] = 0x1500;
GBA_BUS[0x0010000] = 0xD200; GBA_BUS[0x0010000] = 0xD200;
GBA_BUS[0x0020000] = 0x1500; GBA_BUS[0x0020000] = 0x1500;
GBA_BUS[0x0E20000] = 0x1500; GBA_BUS[0x0E20000] = 0x1500;
GBA_BUS[0x0FE0000] = 0x1500; GBA_BUS[0x0FE0000] = 0x1500;
} } void
NDS_EZF_CloseNorWrite()
void NDS_EZF_CloseNorWrite() {
{ GBA_BUS[0x0FF0000] = 0xD200;
GBA_BUS[0x0FF0000] = 0xD200; GBA_BUS[0x0000000] = 0x1500;
GBA_BUS[0x0000000] = 0x1500; GBA_BUS[0x0010000] = 0xD200;
GBA_BUS[0x0010000] = 0xD200; GBA_BUS[0x0020000] = 0x1500;
GBA_BUS[0x0020000] = 0x1500; GBA_BUS[0x0E20000] = 0xD200;
GBA_BUS[0x0E20000] = 0xD200; GBA_BUS[0x0FE0000] = 0x1500;
GBA_BUS[0x0FE0000] = 0x1500; }
}
void NDS_EZF_ChipReset() void
{ NDS_EZF_ChipReset()
GBA_BUS[0x0000] = 0x00F0 ; {
GBA_BUS[0x1000] = 0x00F0 ; GBA_BUS[0x0000] = 0x00F0;
} GBA_BUS[0x1000] = 0x00F0;
uint32 NDS_EZF_IsPresent() } uint32 NDS_EZF_IsPresent()
{ {
vuint16 id1,id2; vuint16 id1, id2;
NDS_EZF_OpenNorWrite(); NDS_EZF_OpenNorWrite();
...@@ -82,41 +81,35 @@ uint32 NDS_EZF_IsPresent() ...@@ -82,41 +81,35 @@ uint32 NDS_EZF_IsPresent()
GBA_BUS[0x1555] = 0x00AA; GBA_BUS[0x1555] = 0x00AA;
GBA_BUS[0x12AA] = 0x0055; GBA_BUS[0x12AA] = 0x0055;
GBA_BUS[0x1555] = 0x0090; GBA_BUS[0x1555] = 0x0090;
id1 = GBA_BUS[0x0001];
id1 = GBA_BUS[0x0001]; id2 = GBA_BUS[0x1001];
id2 = GBA_BUS[0x1001]; if ((id1 != 0x227E) || (id2 != 0x227E)) {
NDS_EZF_CloseNorWrite();
if((id1!=0x227E)|| (id2!=0x227E)) { return 0;
NDS_EZF_CloseNorWrite(); }
return 0; id1 = GBA_BUS[0x000E];
} id2 = GBA_BUS[0x100E];
id1 = GBA_BUS[0x000E];
id2 = GBA_BUS[0x100E];
NDS_EZF_CloseNorWrite(); NDS_EZF_CloseNorWrite();
if (id1 == 0x2218 && id2 == 0x2218) {
if(id1==0x2218 && id2==0x2218) { return 1;
return 1;
} }
return 0;
return 0; }
} void
NDS_EZF_SetShake(u8 pos)
void NDS_EZF_SetShake(u8 pos)
{ {
u16 data = ((pos%3)|0x00F0); u16 data = ((pos % 3) | 0x00F0);
GBA_BUS[0x0FF0000] = 0xD200;
GBA_BUS[0x0FF0000] = 0xD200; GBA_BUS[0x0000000] = 0x1500;
GBA_BUS[0x0000000] = 0x1500; GBA_BUS[0x0010000] = 0xD200;
GBA_BUS[0x0010000] = 0xD200; GBA_BUS[0x0020000] = 0x1500;
GBA_BUS[0x0020000] = 0x1500; GBA_BUS[0x0F10000] = data;
GBA_BUS[0x0F10000] = data; GBA_BUS[0x0FE0000] = 0x1500;
GBA_BUS[0x0FE0000] = 0x1500;
GBA_BUS[0] = 0x0000; /* write any value for vibration. */
GBA_BUS[0] = 0x0000; /* write any value for vibration. */ GBA_BUS[0] = 0x0002;
GBA_BUS[0] = 0x0002; }
}
static int static int
SDL_SYS_LogicError(void) SDL_SYS_LogicError(void)
...@@ -130,11 +123,11 @@ int ...@@ -130,11 +123,11 @@ int
SDL_SYS_HapticInit(void) SDL_SYS_HapticInit(void)
{ {
int ret = 0; int ret = 0;
if(isRumbleInserted()) { if (isRumbleInserted()) {
/* official rumble pak is present. */ /* official rumble pak is present. */
ret = 1; ret = 1;
printf("debug: haptic present: nintendo\n"); printf("debug: haptic present: nintendo\n");
} else if(NDS_EZF_IsPresent()) { } else if (NDS_EZF_IsPresent()) {
/* ezflash 3-in-1 pak is present. */ /* ezflash 3-in-1 pak is present. */
ret = 1; ret = 1;
printf("debug: haptic present: ezf3in1\n"); printf("debug: haptic present: ezf3in1\n");
...@@ -150,11 +143,14 @@ SDL_SYS_HapticInit(void) ...@@ -150,11 +143,14 @@ SDL_SYS_HapticInit(void)
const char * const char *
SDL_SYS_HapticName(int index) SDL_SYS_HapticName(int index)
{ {
if(nds_haptic) { if (nds_haptic) {
switch(nds_haptic->hwdata->type) { switch (nds_haptic->hwdata->type) {
case OFFICIAL: return "Nintendo DS Rumble Pak"; case OFFICIAL:
case EZF3IN1: return "EZFlash 3-in-1 Rumble"; return "Nintendo DS Rumble Pak";
default: return NULL; case EZF3IN1:
return "EZFlash 3-in-1 Rumble";
default:
return NULL;
} }
} }
return NULL; return NULL;
...@@ -164,12 +160,12 @@ SDL_SYS_HapticName(int index) ...@@ -164,12 +160,12 @@ SDL_SYS_HapticName(int index)
int int
SDL_SYS_HapticOpen(SDL_Haptic * haptic) SDL_SYS_HapticOpen(SDL_Haptic * haptic)
{ {
if(!haptic) { if (!haptic) {
return -1; return -1;
} }
haptic->hwdata = SDL_malloc(sizeof(NDS_HapticData)); haptic->hwdata = SDL_malloc(sizeof(NDS_HapticData));
if(!haptic->hwdata) { if (!haptic->hwdata) {
SDL_OutOfMemory(); SDL_OutOfMemory();
return -1; return -1;
} }
...@@ -179,10 +175,10 @@ SDL_SYS_HapticOpen(SDL_Haptic * haptic) ...@@ -179,10 +175,10 @@ SDL_SYS_HapticOpen(SDL_Haptic * haptic)
/* determine what is here, if anything */ /* determine what is here, if anything */
haptic->hwdata->type = NONE; haptic->hwdata->type = NONE;
if(isRumbleInserted()) { if (isRumbleInserted()) {
/* official rumble pak is present. */ /* official rumble pak is present. */
haptic->hwdata->type = OFFICIAL; haptic->hwdata->type = OFFICIAL;
} else if(NDS_EZF_IsPresent()) { } else if (NDS_EZF_IsPresent()) {
/* ezflash 3-in-1 pak is present. */ /* ezflash 3-in-1 pak is present. */
haptic->hwdata->type = EZF3IN1; haptic->hwdata->type = EZF3IN1;
NDS_EZF_ChipReset(); NDS_EZF_ChipReset();
...@@ -213,7 +209,7 @@ SDL_SYS_JoystickIsHaptic(SDL_Joystick * joystick) ...@@ -213,7 +209,7 @@ SDL_SYS_JoystickIsHaptic(SDL_Joystick * joystick)
int int
SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick) SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick)
{ {
/*SDL_SYS_LogicError();*/ /*SDL_SYS_LogicError(); */
return -1; return -1;
} }
......
...@@ -44,7 +44,8 @@ ...@@ -44,7 +44,8 @@
int int
SDL_SYS_JoystickInit(void) SDL_SYS_JoystickInit(void)
{ {
SDL_numjoysticks = 1; return (1); SDL_numjoysticks = 1;
return (1);
} }
/* Function to get the device-dependent name of a joystick */ /* Function to get the device-dependent name of a joystick */
...@@ -78,14 +79,14 @@ SDL_SYS_JoystickOpen(SDL_Joystick * joystick) ...@@ -78,14 +79,14 @@ SDL_SYS_JoystickOpen(SDL_Joystick * joystick)
* but instead should call SDL_PrivateJoystick*() to deliver events * but instead should call SDL_PrivateJoystick*() to deliver events
* and update joystick device state. * and update joystick device state.
*/ */
void void
SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
{ {
u32 keysd, keysu; u32 keysd, keysu;
int magnitude = 16384; int magnitude = 16384;
/*scanKeys(); - this is done in PumpEvents, because touch uses it too */ /*scanKeys(); - this is done in PumpEvents, because touch uses it too */
keysd = keysDown(); keysd = keysDown();
keysu = keysUp(); keysu = keysUp();
if ((keysd & KEY_UP)) { if ((keysd & KEY_UP)) {
...@@ -100,58 +101,58 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) ...@@ -100,58 +101,58 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
if ((keysd & KEY_RIGHT)) { if ((keysd & KEY_RIGHT)) {
SDL_PrivateJoystickAxis(joystick, 0, magnitude); SDL_PrivateJoystickAxis(joystick, 0, magnitude);
} }
if ((keysu & (KEY_UP | KEY_DOWN))) { if ((keysu & (KEY_UP | KEY_DOWN))) {
SDL_PrivateJoystickAxis(joystick, 1, 0); SDL_PrivateJoystickAxis(joystick, 1, 0);
} }
if ((keysu & (KEY_LEFT | KEY_RIGHT))) { if ((keysu & (KEY_LEFT | KEY_RIGHT))) {
SDL_PrivateJoystickAxis(joystick, 0, 0); SDL_PrivateJoystickAxis(joystick, 0, 0);
} }
if ((keysd & KEY_A)) { if ((keysd & KEY_A)) {
SDL_PrivateJoystickButton(joystick, 0, SDL_PRESSED); SDL_PrivateJoystickButton(joystick, 0, SDL_PRESSED);
} }
if ((keysd & KEY_B)) { if ((keysd & KEY_B)) {
SDL_PrivateJoystickButton(joystick, 1, SDL_PRESSED); SDL_PrivateJoystickButton(joystick, 1, SDL_PRESSED);
} }
if ((keysd & KEY_X)) { if ((keysd & KEY_X)) {
SDL_PrivateJoystickButton(joystick, 2, SDL_PRESSED); SDL_PrivateJoystickButton(joystick, 2, SDL_PRESSED);
} }
if ((keysd & KEY_Y)) { if ((keysd & KEY_Y)) {
SDL_PrivateJoystickButton(joystick, 3, SDL_PRESSED); SDL_PrivateJoystickButton(joystick, 3, SDL_PRESSED);
} }
if ((keysd & KEY_L)) { if ((keysd & KEY_L)) {
SDL_PrivateJoystickButton(joystick, 4, SDL_PRESSED); SDL_PrivateJoystickButton(joystick, 4, SDL_PRESSED);
} }
if ((keysd & KEY_R)) { if ((keysd & KEY_R)) {
SDL_PrivateJoystickButton(joystick, 5, SDL_PRESSED); SDL_PrivateJoystickButton(joystick, 5, SDL_PRESSED);
} }
if ((keysd & KEY_SELECT)) { if ((keysd & KEY_SELECT)) {
SDL_PrivateJoystickButton(joystick, 6, SDL_PRESSED); SDL_PrivateJoystickButton(joystick, 6, SDL_PRESSED);
} }
if ((keysd & KEY_START)) { if ((keysd & KEY_START)) {
SDL_PrivateJoystickButton(joystick, 7, SDL_PRESSED); SDL_PrivateJoystickButton(joystick, 7, SDL_PRESSED);
} }
if ((keysu & KEY_A)) { if ((keysu & KEY_A)) {
SDL_PrivateJoystickButton(joystick, 0, SDL_RELEASED); SDL_PrivateJoystickButton(joystick, 0, SDL_RELEASED);
} }
if ((keysu & KEY_B)) { if ((keysu & KEY_B)) {
SDL_PrivateJoystickButton(joystick, 1, SDL_RELEASED); SDL_PrivateJoystickButton(joystick, 1, SDL_RELEASED);
} }
if ((keysu & KEY_X)) { if ((keysu & KEY_X)) {
SDL_PrivateJoystickButton(joystick, 2, SDL_RELEASED); SDL_PrivateJoystickButton(joystick, 2, SDL_RELEASED);
} }
if ((keysu & KEY_Y)) { if ((keysu & KEY_Y)) {
SDL_PrivateJoystickButton(joystick, 3, SDL_RELEASED); SDL_PrivateJoystickButton(joystick, 3, SDL_RELEASED);
} }
if ((keysu & KEY_L)) { if ((keysu & KEY_L)) {
SDL_PrivateJoystickButton(joystick, 4, SDL_RELEASED); SDL_PrivateJoystickButton(joystick, 4, SDL_RELEASED);
} }
if ((keysu & KEY_R)) { if ((keysu & KEY_R)) {
SDL_PrivateJoystickButton(joystick, 5, SDL_RELEASED); SDL_PrivateJoystickButton(joystick, 5, SDL_RELEASED);
} }
if ((keysu & KEY_SELECT)) { if ((keysu & KEY_SELECT)) {
SDL_PrivateJoystickButton(joystick, 6, SDL_RELEASED); SDL_PrivateJoystickButton(joystick, 6, SDL_RELEASED);
} }
if ((keysu & KEY_START)) { if ((keysu & KEY_START)) {
SDL_PrivateJoystickButton(joystick, 7, SDL_RELEASED); SDL_PrivateJoystickButton(joystick, 7, SDL_RELEASED);
} }
} }
...@@ -169,4 +170,3 @@ SDL_SYS_JoystickQuit(void) ...@@ -169,4 +170,3 @@ SDL_SYS_JoystickQuit(void)
} }
#endif /* SDL_JOYSTICK_NDS */ #endif /* SDL_JOYSTICK_NDS */
......
...@@ -47,8 +47,8 @@ NDS_PumpEvents(_THIS) ...@@ -47,8 +47,8 @@ NDS_PumpEvents(_THIS)
} }
if (keysHeld() & KEY_TOUCH) { if (keysHeld() & KEY_TOUCH) {
touchPosition t = touchReadXY(); touchPosition t = touchReadXY();
SDL_SendMouseMotion(0, 0, t.px, t.py, 1); /* last arg is pressure, SDL_SendMouseMotion(0, 0, t.px, t.py, 1); /* last arg is pressure,
hardcoded 1 for now */ hardcoded 1 for now */
} }
} }
......
...@@ -7,8 +7,6 @@ ...@@ -7,8 +7,6 @@
#include <fat.h> #include <fat.h>
#include "common.h" #include "common.h"
#include "icon_bmp_bin.h"
#define NUM_SPRITES 10 #define NUM_SPRITES 10
#define MAX_SPEED 1 #define MAX_SPEED 1
...@@ -184,66 +182,7 @@ main(int argc, char *argv[]) ...@@ -184,66 +182,7 @@ main(int argc, char *argv[])
if (!state) { if (!state) {
return 1; return 1;
} }
for (i = 1; i < argc;) {
int consumed;
consumed = CommonArg(state, i);
if (consumed == 0) {
consumed = -1;
if (SDL_strcasecmp(argv[i], "--blend") == 0) {
if (argv[i + 1]) {
if (SDL_strcasecmp(argv[i + 1], "none") == 0) {
blendMode = SDL_TEXTUREBLENDMODE_NONE;
consumed = 2;
} else if (SDL_strcasecmp(argv[i + 1], "mask") == 0) {
blendMode = SDL_TEXTUREBLENDMODE_MASK;
consumed = 2;
} else if (SDL_strcasecmp(argv[i + 1], "blend") == 0) {
blendMode = SDL_TEXTUREBLENDMODE_BLEND;
consumed = 2;
} else if (SDL_strcasecmp(argv[i + 1], "add") == 0) {
blendMode = SDL_TEXTUREBLENDMODE_ADD;
consumed = 2;
} else if (SDL_strcasecmp(argv[i + 1], "mod") == 0) {
blendMode = SDL_TEXTUREBLENDMODE_MOD;
consumed = 2;
}
}
} else if (SDL_strcasecmp(argv[i], "--scale") == 0) {
if (argv[i + 1]) {
if (SDL_strcasecmp(argv[i + 1], "none") == 0) {
scaleMode = SDL_TEXTURESCALEMODE_NONE;
consumed = 2;
} else if (SDL_strcasecmp(argv[i + 1], "fast") == 0) {
scaleMode = SDL_TEXTURESCALEMODE_FAST;
consumed = 2;
} else if (SDL_strcasecmp(argv[i + 1], "slow") == 0) {
scaleMode = SDL_TEXTURESCALEMODE_SLOW;
consumed = 2;
} else if (SDL_strcasecmp(argv[i + 1], "best") == 0) {
scaleMode = SDL_TEXTURESCALEMODE_BEST;
consumed = 2;
}
}
} else if (SDL_strcasecmp(argv[i], "--cyclecolor") == 0) {
cycle_color = SDL_TRUE;
consumed = 1;
} else if (SDL_strcasecmp(argv[i], "--cyclealpha") == 0) {
cycle_alpha = SDL_TRUE;
consumed = 1;
} else if (SDL_isdigit(*argv[i])) {
num_sprites = SDL_atoi(argv[i]);
consumed = 1;
}
}
if (consumed < 0) {
fprintf(stderr,
"Usage: %s %s [--blend none|mask|blend|add|mod] [--scale none|fast|slow|best] [--cyclecolor] [--cyclealpha]\n",
argv[0], CommonUsage(state));
quit(1);
}
i += consumed;
}
if (!CommonInit(state)) { if (!CommonInit(state)) {
quit(2); quit(2);
} }
...@@ -259,8 +198,9 @@ main(int argc, char *argv[]) ...@@ -259,8 +198,9 @@ main(int argc, char *argv[])
SDL_SelectRenderer(state->windows[i]); SDL_SelectRenderer(state->windows[i]);
SDL_RenderFill(0xA0, 0xA0, 0xA0, 0xFF, NULL); SDL_RenderFill(0xA0, 0xA0, 0xA0, 0xFF, NULL);
} }
if (LoadSprite2(icon_bmp_bin, icon_bmp_bin_size) < 0) { if (LoadSprite("icon.bmp") < 0) {
printf("errored.\n"); printf("\nerrored.\n");
while (1);
quit(2); quit(2);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment