The following patch fixes some of the bitrot for the Nintendo DS port. The support is still basic at the moment, but it allows to run the "general" test under the current head of tree (parent: 5269:11bd1585efb5 tip). Most of the patch is mine, but I integrated a couple changes that John Magnotti posted on Feb 1st.
96 lines
2.3 KiB
C
Executable file
96 lines
2.3 KiB
C
Executable file
|
|
#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.button, SDL_GetTicks());
|
|
break;
|
|
case SDL_QUIT:
|
|
SDL_Quit();
|
|
return 0;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|