view test/nds-test-progs/general/source/main.c @ 4573:6399178be313

Completed work on X11_CreateTexture. Added lots of safety features. These include support for drawing a texture using the core protocol while other textures are drawn using Xrender if Xrender does not support the color format of the said texture or any other fault with Xrender.
author Sunny Sachanandani <sunnysachanandani@gmail.com>
date Fri, 28 May 2010 20:40:09 +0530
parents 204be4fc2726
children 7aba0406c273
line wrap: on
line source


#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;

}