From 46b0436d715a773d96d91f79a8c3d9c251db6ba0 Mon Sep 17 00:00:00 2001 From: Darren Alton Date: Sat, 6 Sep 2008 04:31:34 +0000 Subject: [PATCH] Fixes to the NDS sprite2 test. Illustrates partially working texture-as-sprite functionality. --- src/haptic/nds/SDL_syshaptic.c | 140 +++++++++--------- src/joystick/nds/SDL_sysjoystick.c | 46 +++--- src/video/nds/SDL_ndsevents.c | 4 +- test/nds-test-progs/sprite2/icon.bmp | Bin 0 -> 578 bytes .../sprite2/source/testsprite2.c | 66 +-------- 5 files changed, 96 insertions(+), 160 deletions(-) create mode 100644 test/nds-test-progs/sprite2/icon.bmp diff --git a/src/haptic/nds/SDL_syshaptic.c b/src/haptic/nds/SDL_syshaptic.c index d77b1bda6..6cf9518b2 100644 --- a/src/haptic/nds/SDL_syshaptic.c +++ b/src/haptic/nds/SDL_syshaptic.c @@ -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; } diff --git a/src/joystick/nds/SDL_sysjoystick.c b/src/joystick/nds/SDL_sysjoystick.c index 2604586c8..3c9906e2e 100644 --- a/src/joystick/nds/SDL_sysjoystick.c +++ b/src/joystick/nds/SDL_sysjoystick.c @@ -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 */ - diff --git a/src/video/nds/SDL_ndsevents.c b/src/video/nds/SDL_ndsevents.c index 68f7329cf..0f20fb211 100644 --- a/src/video/nds/SDL_ndsevents.c +++ b/src/video/nds/SDL_ndsevents.c @@ -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 */ } } diff --git a/test/nds-test-progs/sprite2/icon.bmp b/test/nds-test-progs/sprite2/icon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cc96356acb521c7f1518acdb2a3b5d59b8a061aa GIT binary patch literal 578 zcmcgoK@Nm42&C%Gi}VGyC*RS#Puc$;>j1^7i6@ht1lnN+#Fo7bq$tQ6Vr>y #include "common.h" -#include "icon_bmp_bin.h" - #define NUM_SPRITES 10 #define MAX_SPEED 1 @@ -184,66 +182,7 @@ main(int argc, char *argv[]) if (!state) { 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)) { quit(2); } @@ -259,8 +198,9 @@ main(int argc, char *argv[]) SDL_SelectRenderer(state->windows[i]); SDL_RenderFill(0xA0, 0xA0, 0xA0, 0xFF, NULL); } - if (LoadSprite2(icon_bmp_bin, icon_bmp_bin_size) < 0) { - printf("errored.\n"); + if (LoadSprite("icon.bmp") < 0) { + printf("\nerrored.\n"); + while (1); quit(2); }