Iniciar sesión

Ver la versión completa : Compilar ejemplos SDL



LTK666
19/09/2004, 14:23
Me podria explicar alguien como puedo compilar unos simples ejemplos en SDL para windows? uqe deberia cambiar para que funcionase para la gp32?

#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>


int main(int argc, char *argv[]) {

SDL_Surface *image, *screen;
SDL_Rect dest;
SDL_Event event;
Sint16 joyx,joyy;
SDL_Joystick *joystick;
int done = 0;
int x,y,button;

atexit(SDL_Quit);

// Iniciar SDL
if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0) {
printf("No se pudo iniciar SDL: %s\n",SDL_GetError());
exit(1);
}

// Activamos modo de video
screen = SDL_SetVideoMode(640,480,24,SDL_HWSURFACE);
if (screen == NULL) {
printf("No se puede inicializar el modo gráfico: \n",SDL_GetError());
exit(1);
}


// Activa el Joystick
if (SDL_NumJoysticks() >= 1) {
joystick = SDL_JoystickOpen(0);
SDL_JoystickEventState(SDL_ENABLE);
}


// Cargamos gráfico
image = SDL_LoadBMP("nave.bmp");
if ( image == NULL ) {
printf("No pude cargar gráfico: %s\n", SDL_GetError());
exit(1);
}

// Definimos color para la transparencia
SDL_SetColorKey(image,SDL_SRCCOLORKEY|SDL_RLEACCEL ,SDL_MapRGB(image->format,255,0,0));


x = y = 100;
button = 0;



while(done == 0) {

// Borramos la pantalla
dest.x=0;
dest.y=0;
dest.w=640;
dest.h=480;
SDL_FillRect(screen,&dest,SDL_MapRGB(screen->format,0,0,0));

// Definimos donde dibujaremos el gráfico
// y lo copiamos a la pantalla.
dest.x = x;
dest.y = y;
dest.w = image->w;
dest.h = image->h;
SDL_BlitSurface(image, NULL, screen, &dest);

// Mostramos la pantalla
SDL_Flip(screen);

// lectura directa del joystick
joyx = SDL_JoystickGetAxis(joystick, 0);
joyy = SDL_JoystickGetAxis(joystick, 1);

if (joyy < -10) {y-=5;}
if (joyy > 10) {y+=5;}
if (joyx < -10) {x-=5;}
if (joyx > 10) {x+=5;}


// Lectura de eventos
while ( SDL_PollEvent(&event) ) {

// salir del programa si se pulsa el boton del joystick
if ( event.type == SDL_JOYBUTTONDOWN) {
done = 1;
}

// salir del programa si se pulsa una tecla
// o se cierra la ventana
if ( event.type == SDL_KEYDOWN || event.type == SDL_QUIT)
done = 1;
}
}

// liberar superficie
SDL_FreeSurface(image);

// cerramos el joystick
if (SDL_JoystickOpened(0)) {
SDL_JoystickClose(joystick);
}

return 0;
}

Locke
19/09/2004, 14:35
Que entorno usas? Si mal no recuerdo Linux + gcc, no? Yo para enterarme me lei estas instrucciones de Chui donde configuras un entorno y compilas un ejemplo con SDL (eso si, use las versiones mas recientes de gcc, binutils y newlib).

Despues use los makefiles del ejemplo y solo necesito cambiar el nombre de mi programa para que compile correctamente. Basta con hacer: make -f Makefile.gp32 (o make -f Makefile.pc).

Para que ese programa funcionase en GP creo que simplemente bastaria con cambiar la inicializacion de la pantalla a 320,240,16 ; cambiar el input por las teclas correspondientes a la gp y la cabecera de la funcion por: void GpMain(void *argv).

Ademas algunas lineas no serian necesarias, como los printf.

LTK666
19/09/2004, 14:54
Gracias Locke pero el tema es que queria probar el DCDev dado que tengo problemas en linux para compilar, de hecho el anterio ejemplo no lo consigo ejecutar correctamente, tras compilarse y ejecutarse se abre y se cierra de inmdiato,

Me podrias dar el link de Chui donde configuras un entorno y compilas un ejemplo con SDL?

Locke
19/09/2004, 15:09
Vaya, se me olvido poner el link... :miedo:

Yo con el DCFreeDev, aparte de que me costaba un monton configurarlo, al conpilar los colores de las imagenes me salian raros, como con un filtro amarillento y oscuro. Lo deje y me pase a gcc en linea de comandos. Es mas sencillo.

Si quieres hacerlo en windows prueba con el cygwin. Epieza siguiendo esta guia hasta instalar el gcc: http://www.abc21.dial.pipex.com/hand_building_a_gp32_gcc_tool.htm . Despues pasate a la de Chui desde el paso 9 hasta el final: http://sdl-gp32.sourceforge.net/making.html

Suerte, si tienes algun problema avisa (que puede que haya algun paso que tenga un fallo creo recordar...)

LTK666
20/09/2004, 07:48
Bueno ya he solucionado bastantes de los problemas que tenia para la compilacion en linux, por lo que me voy a dedicar al juego (bueno a ir apreondiendo), en Linux y luego lo compilare/adaptare para la GP32.

Las principales recomendaciones a seguir serían:

Usar resoluciones 320x240, 256 colores, solo lenguaje SDL. Que mas me podria venir bien?

Salustian
20/09/2004, 09:41
Creo que no deberias usar "SDL_INIT_JOYSTICK" al inicializar SDL. La cruceta de la GP32 se simula con los cursores (SDLK_UP, SDLK_RIGHT, etc)

Que alguien me corrija si me equivoco.

Un saludo.

Locke
20/09/2004, 11:15
Usa 16 bits es vez de 256 colores.

Salustian, estas en lo cierto, las pulsaciones de teclas de la yipi son eventos de teclado, asi que no haria falta iniciar el joystick.

LTK666
20/09/2004, 13:58
Ok muchas graccias, el tema del joystick es porque lo estoy haciend oprimero para pc y asi veo mejor como quedara en la GP32, pena de ese driver para usar la gp32 como joystic que no vaya en linux que seria una ayuda.

LTK666
20/09/2004, 17:04
Locke siento si te doy el coñazo, pero para contruirme el compilador para linux, que puedo usar los paso de los dos link que antes me diste, o conoces alguno mejor. Es que me da palo cargarme algo.

Locke
20/09/2004, 17:39
Con eso va perfecto, si los sigues como te dije (primero el de abc21 para compilar el gcc, las binutils y newlib) y despues el de chui desde el paso 9 para instalar las SDL de PC y GP. En principio eso es para el cygwin, pero haciendolo en linux no tendria que dar ningun fallo, excepto el b2fxec, que al ser un .exe lo mas probables es que lo tengas que usar con el wine.

Si te da algun fallo durante la instalacion comentalo por aqui, a mi no me molesta nada ayudar :)