Mercurial > sdl-ios-xcode
diff test/nds-test-progs/general/source/main.c @ 2735:204be4fc2726
Final merge of Google Summer of Code 2008 work...
Port SDL 1.3 to the Nintendo DS
by Darren Alton, mentored by Sam Lantinga
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Wed, 27 Aug 2008 15:10:03 +0000 |
parents | |
children | 7aba0406c273 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/nds-test-progs/general/source/main.c Wed Aug 27 15:10:03 2008 +0000 @@ -0,0 +1,96 @@ + +#include <SDL/SDL.h> +#if defined(NDS) || defined(__NDS__) || defined (__NDS) +#include <nds.h> +#include <fat.h> +#else +#define swiWaitForVBlank() +#define consoleDemoInit() +#define fatInitDefault() +#define RGB15(r,g,b) SDL_MapRGB(screen->format,((r)<<3),((g)<<3),((b)<<3)) +#endif + void +splash(SDL_Surface * screen, int s) +{ + SDL_Surface *logo; + SDL_Rect area = { 0, 0, 256, 192 }; + + logo = SDL_LoadBMP("sdl.bmp"); + if (!logo) { + printf("Couldn't splash.\n"); + return; + } + /*logo->flags &= ~SDL_PREALLOC; */ + SDL_BlitSurface(logo, NULL, screen, &area); + SDL_Flip(screen); + while (s-- > 0) { + int i = 60; + while (--i) + swiWaitForVBlank(); + } +} + + int +main(void) +{ + SDL_Surface *screen; + SDL_Joystick *stick; + SDL_Event event; + SDL_Rect rect = { 0, 0, 256, 192 }; + int i; + + consoleDemoInit(); + puts("Hello world! Initializing FAT..."); + fatInitDefault(); + if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) { + puts("# error initializing SDL"); + puts(SDL_GetError()); + return 1; + } + puts("* initialized SDL"); + screen = SDL_SetVideoMode(256, 192, 15, SDL_SWSURFACE); + if (!screen) { + puts("# error setting video mode"); + puts(SDL_GetError()); + return 2; + } + screen->flags &= ~SDL_PREALLOC; + puts("* set video mode"); + stick = SDL_JoystickOpen(0); + if (stick == NULL) { + puts("# error opening joystick"); + puts(SDL_GetError()); +// return 3; + } + puts("* opened joystick"); + + /*splash(screen, 3); */ + + SDL_FillRect(screen, &rect, RGB15(0, 0, 31) | 0x8000); + SDL_Flip(screen); + + while (1) + while (SDL_PollEvent(&event)) + switch (event.type) { + case SDL_JOYBUTTONDOWN: + SDL_FillRect(screen, &rect, (u16) rand() | 0x8000); + SDL_Flip(screen); + if (rect.w > 8) { + rect.x += 4; + rect.y += 3; + rect.w -= 8; + rect.h -= 6; + } + printf("button %d pressed at %d ticks\n", + event.jbutton.which, SDL_GetTicks()); + break; + case SDL_QUIT: + SDL_Quit(); + return 0; + default: + break; + } + return 0; + } + +