RetroBytes
Entre para ver sus mensajes privados
Allegro en la GP2X

 
Publicar nuevo tema   Responder al tema    Foros de discusión » Programación » C/C++/Cdiv
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Alx
Boss

Boss

Registrado: 22 Mar 2006
Mensajes: 6926
Ubicación: Barcelona
Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5
votos: 26
Sexo:Este usuario es un Hombre

MensajePublicado: Jue Dic 07, 2006 15:51 pm    Asunto: Responder citando
Ey! Ben amor! que vas a portar lo que yo me sé a la GP2X Yujuuuu..... !!!!???
_________________
Ver perfil de usuario Enviar mensaje privado Enviar email
Alx
Boss

Boss

Registrado: 22 Mar 2006
Mensajes: 6926
Ubicación: Barcelona
Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5
votos: 26
Sexo:Este usuario es un Hombre

MensajePublicado: Jue Dic 07, 2006 17:39 pm    Asunto: Responder citando
YUJUUUUUUUU!!!!!!!!!!

Ola
_________________
Ver perfil de usuario Enviar mensaje privado Enviar email
zemman
Boss

Boss

Registrado: 08 Ago 2006
Mensajes: 2684
Ubicación: Sevilla
Reputación: 65.3Reputación: 65.3Reputación: 65.3Reputación: 65.3Reputación: 65.3Reputación: 65.3Reputación: 65.3
votos: 14


MensajePublicado: Jue Dic 07, 2006 17:40 pm    Asunto: Responder citando
Alx escribió:
YUJUUUUUUUU!!!!!!!!!!

Ola


QUOTAZO !!!
_________________
www.zemman.wordpress.com
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
traperic
Mega Byte

Mega Byte

Registrado: 30 Jul 2006
Mensajes: 226

Reputación: 33.7Reputación: 33.7Reputación: 33.7
votos: 1


MensajePublicado: Jue Dic 07, 2006 22:41 pm    Asunto: Responder citando
Hola Benway, si portas el Capitán Sevilla a esta consola no veas la alegría que
vas a dar a mas de uno, igual haces una killer app y haces que se disparen las ventas
de la consola, quien sabe Wink.

Lo de crack me queda algo grande comparado con la gente que hay en este mundillo, pero
aquí tienes lo que sé.

Yo en un principio tenía multitud de problemas al portar los juegos, esto era porque
el procesador ARM trataba los char en los que no especificabas signed o unsigned de
manera distinta al PC, por ello, el primer paso si no especificas en el código si
es signed o unsigned es usar el parámetro -fsigned-char en el gcc al compilar.

Prohibido absolutamente usar las funciones del ratón, ni siquiera init_mouse(), a mi
me da un lindo seg fault, con versiones viejas del firmware, creo recordar la 1.4 o
así incluso daba fallos de segmentación al usar las funciones de teclado, te recomiendo
usar un #define GP2X 1 o similar en alguna cabecera cuando vayas a compilar para la consola
y luego poner estas funciones entre #ifndef GP2X tal #else tal #endif o algo similar.

Desde luego, tienes que preparar todo el juego para que se pueda usar con un joystick y
si, como bien dices, tienes que tener en cuenta que la GP2X usa 320x240 pixels de resolución
con 8 o 16 bits de profundidad de color, quizás necesites una función de escalado en el blit
principal; si estás usando esa resolución y luego la escalas a 640x480 para que se vean
los pixels simplemente quitando el escalado tendría que funcionar.

El port de Allegro para la GP2X dispone de aceleración por hardware para algunas cosas,
aquí tienes un ejemplillo de como usar la aceleración, este código funciona perfectamente en
la GP: (mírate la documentacion de show_video_bitmap y las funciones relacionadas).

Código:

#include <allegro>

volatile int fps = 0;
volatile int frames_this_second = 0;
int page=1;
int x=0;
void fps_timer(void);


void fps_timer(void)
{
   fps = frames_this_second;
   frames_this_second = 0;
}


int main(int argc, char **argv)
{
BITMAP *virt[2];
BITMAP *spr;

   allegro_init();
   install_timer();
   install_keyboard();
   set_color_depth(16);
   set_gfx_mode(GFX_AUTODETECT,320,240,640,480);
   install_int (fps_timer, 1000);
   install_joystick(JOY_TYPE_AUTODETECT);
   virt[0]=create_video_bitmap(320,240);
   virt[1]=create_video_bitmap(320,240);
   clear_to_color(virt[0],makecol(0,0,0));
   clear_to_color(virt[1],makecol(0,0,0));
   spr=create_video_bitmap(56,56);
   spr=load_bitmap("im.bmp",NULL);
   
   while(!key[KEY_ESC])
   {
      poll_joystick();
      clear_to_color(virt[page],makecol(20,20,20));
      blit(spr,virt[page],0,0,x,40,spr->w,spr->h);
      x++;
      if (x==300) x=0;
      textprintf_ex (virt[page], font, 0, 0, makecol(255,255,255), -1, "FPS: %d", fps);
      if (gfx_capabilities & GFX_HW_VRAM_BLIT)
      {
         textprintf_ex (virt[page], font, 0, 20, makecol(255,255,255), -1, "Blit acelerado por hardware");
      }
      show_video_bitmap(virt[page]);
      page=1-page;
      ++frames_this_second;   
      if (joy[0].button[1].b) break;
   }
   
   destroy_bitmap(virt[0]);
   destroy_bitmap(virt[1]);
   destroy_bitmap(spr);
   return 0;
}
END_OF_MAIN();


Otra cosa curiosa que a mi al principio me extrañaba y creía que era un fallo de memoria es que si no usas
un script para lanzar el juego y que luego vuelva al menú de la consola, al salir del programa se quedaba
como colgado (en negro), para que esto no suceda necesitas un script similar a este:

Código:

#!/bin/sh

./tuprograma
sync
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu


Este script tiene que tener la extensión .gpe para que el menú de la consola lo reconozca como un ejecutable,
si además quieres que salga un icono con el logo de tu juego en vez de el feo icono que pone el gp2xmenu por defecto simplemente pon un png con el mismo nombre,ej: tuprograma.png

El port de Allegro de gfoot tiene algunos problemas con el joystick (no reconoce las teclas de volumen ni el start ni el select), para subsanar este error debes aplicar a los fuentes de allegro 4.2.0 para la GP2X recién descomprimidos ( http://www.glost.eclipse.co.uk/gfoot/gp2x/allegro.html ) este parche:
http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,19,1739

Otra cosa importante es que al compilar Allegro tienes que desactivar el ensamblador en el configure.

Por el momento no recuerdo nada mas importante, bueno, que pongas que tu programa necesita la última versión
del firmware (2.1.1) ya que Allegro daba muchos problemas con versiones anteriores a este firmware, con algunas máquinas funcionaban los programas y con otras no.

De momento esto es todo lo que se me ocurre, si necesitas algo más o hacer alguna prueba, ya sabes que estaré
encantado de ayudarte en todo lo que pueda ;-)

Saludos.
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
traperic
Mega Byte

Mega Byte

Registrado: 30 Jul 2006
Mensajes: 226

Reputación: 33.7Reputación: 33.7Reputación: 33.7
votos: 1


MensajePublicado: Vie Dic 08, 2006 06:22 am    Asunto: Responder citando
Algunas neuronas mías han resucitado al dormir un poco,
aquí tienes algo más:

He recordado que tampoco debes usar las funciones set_window_title
y cosas de ese tipo, al igual que tampoco puedes usar el modo
GFX_AUTODETECT_WINDOWED, ya que dará otro bonito fallo.

Sobre lo de la aceleración, efectivamente, al usarlo en un PC con
una tarjeta gráfica que no soporta esa operación te irá mas lento,
en mis pruebas en la consola el aumento de frames es aproximadamente
del 50%, de todos modos a lo mejor te interese una opción de activar/
desactivar las transparencias y esas cosillas, (al menos hasta que
aprendamos a usar el segundo procesador de la negrita Yujuuuu..... ). Si el
programa no te funciona... ¿has puesto un archivo llamado im.bmp
en el directorio del programa? Fíjate que hay por ahí una llamada
a load_bitmap(..), quizás sea eso lo que te ocurre, a mi me va perfectamente,
si el programa no te pone Blit acelerado por hardware es porque la tarjeta
gráfica no lo soporta, en la GP2X va bien.

Acerca de lo del joystick no tiene nada, lo instalas con install_joystick(JOY_TYPE_AUTODETECT);
luego cada vez que quieras leer los datos usas poll_joystick(); y acto seguido
if (joy[0].button[0].b) { Pulsado boton 0 }
if (joy[0].button[1].b) { Pulsado boton 1 }
y así, la correspondencia de los números con los botones de la GP2X no la recuerdo
bien (la tengo en mi ordenador que se le ha jodido la placa, ahora estoy con el portátil),
cuando la tenga te la posteo por aquí.

A lo que me refería con lo de desactivar el ensamblador, es simplemente que te bajes el código fuente de Allegro,lo descomprimes, le metes el parche de gfoot, el otro para el joystick y lo compilas con algo
así (todo este rollo en Linux, en Win ni idea).:

LDFLAGS=-static ./configure --host arm-linux-gcc --without-x --enable-static --disable-shared --disable-asm --enable-lgp2x --disable-modules --prefix=/usr/local/devkitPro/devkitGP2X --enable-dbglib && make && make install

Cambiando la ruta donde tengas instalado el entorno de desarrollo en --prefix y / o el nombre del compilador en --host. Es importante que enlaces estáticamente con la librería ya que si no la gente se quejará de que hay que instalar Allegro y bla bla bla, para que luego ocupe menos le quitas la información de depurado con arm-linux-strip o el strip que corresponda y le comprimes con gpecomp y a rular. También para optimizar algo el código al compilar le puedes pasar la opción -mcpu=arm920t al gcc.

Lo que me preguntas de para que usarías eso en el juego, lo tienes que usar en lugar del blit principal pero sólo en la consola o cuando la tarjeta gráfica soporte el blit acelerado por hardware.

Espero no asustarte con todo este rollo, es que me explico fatal pero si tienes alguna duda más, ya sabes. Wink

Creo que ya sé que van a traer los reyes en la casa de Benway ;-).
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
anjuel
Invitado







MensajePublicado: Vie Dic 08, 2006 13:36 pm    Asunto: Responder citando
¿y para la gp32?

Crying or Very sad
Benway
Invitado







MensajePublicado: Vie Dic 08, 2006 14:07 pm    Asunto: Responder citando
anjuel escribió:
¿y para la gp32?

Crying or Very sad


El problema es que no hay Allegro para la gp32... o al menos que yo sepa...

¿Tú sabes algo, Traperic?
Alx
Boss

Boss

Registrado: 22 Mar 2006
Mensajes: 6926
Ubicación: Barcelona
Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5
votos: 26
Sexo:Este usuario es un Hombre

MensajePublicado: Vie Dic 08, 2006 20:29 pm    Asunto: Responder citando
Crying or Very sad
_________________
Ver perfil de usuario Enviar mensaje privado Enviar email
traperic
Mega Byte

Mega Byte

Registrado: 30 Jul 2006
Mensajes: 226

Reputación: 33.7Reputación: 33.7Reputación: 33.7
votos: 1


MensajePublicado: Vie Dic 08, 2006 20:55 pm    Asunto: Responder citando
Como ya le comenté a Anjuel en CEZ, no hay Allegro para la GP32 ni por el momento parece que haya gente dispuesta a currarse un port para esta consola Tristón . Ojala me equivoque y pronto tengamos otra plataforma más a la que portar. :wink:
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Alx
Boss

Boss

Registrado: 22 Mar 2006
Mensajes: 6926
Ubicación: Barcelona
Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5
votos: 26
Sexo:Este usuario es un Hombre

MensajePublicado: Vie Dic 08, 2006 22:40 pm    Asunto: Responder citando
Yo la verdad es que no me voy a hacer muchas ilusiones Crying or Very sad
_________________
Ver perfil de usuario Enviar mensaje privado Enviar email
anjuel
Invitado







MensajePublicado: Sab Dic 09, 2006 05:20 am    Asunto: Responder citando
traperic escribió:
Como ya le comenté a Anjuel en CEZ, no hay Allegro para la GP32 ni por el momento parece que haya gente dispuesta a currarse un port para esta consola Tristón . Ojala me equivoque y pronto tengamos otra plataforma más a la que portar. :wink:


Tenía que volver a intentarlo... Wink
traperic
Mega Byte

Mega Byte

Registrado: 30 Jul 2006
Mensajes: 226

Reputación: 33.7Reputación: 33.7Reputación: 33.7
votos: 1


MensajePublicado: Mar Dic 12, 2006 14:28 pm    Asunto: Responder citando
Disculpad la tardanza,

Cita:

Pues se supone que la tarjeta debería poder hacer eso por hardware: Es una GeForce 6600, y, sobre todo, si chequeo el bit GFX_HW_VRAM_BLIT está "seteado" (A no ser que lo "lea" mal, pero el resultado de esto:

Bueno, también depende de los drivers y ese rollo... yo también tengo una GeForce majeta y en windows no puedo poner el modo 320x200 a pantalla completa, mientras que en linux no tengo problemas. (Seguro que la culpa es mía pero para las 4 veces al año contadas que uso el windows paso de ponerme a configurar nada).

Cita:
Lo que comentas de usar la aceleración gráfica para el blit principal: Entonces habría que definir el bitmap que se usa como búfer como video_bitmap, ¿no? y luego volcarlo con show_video_bitmap, ¿verdad? Eso lo puedo definir también fácilmente usando el preprocesador (eso que cuando empecé con esto del C pensaba que no servía para nada, y ahora estoy empezando a usar por doquier Laughing)


Si, pero fíjate que los sprites que quieres volcar en la pantalla también hay que crearlos con create_video_bitmap o la función equivalente.

A mi el preprocesador me parece un poco guarrete, yo quizás he abusado un poco de el en el código del Phantomas, para el próximo remake, lo que haré será como una capa por encima de las funciones en las que se use el preprocesador para tenerlas todas juntas y no por ahí danzando entre trozos de ifs y fors. Yujuuuu.....

Un saludo y mucho ánimo, ya sabes que si necesitas algo o quieres probar algo solo tienes que decírmelo.

Cita:
Cervezas_que_le_debo_a_Traperic++;

P.D: El otro día estuve en Madrid en un conciertillo, podíamos haber decrementado alguna de esas cervecitas..., para la próxima... :wink:
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
traperic
Mega Byte

Mega Byte

Registrado: 30 Jul 2006
Mensajes: 226

Reputación: 33.7Reputación: 33.7Reputación: 33.7
votos: 1


MensajePublicado: Dom Dic 24, 2006 05:26 am    Asunto: Responder citando
Cita:
Lo del Joystick: Muchas gracias!!! Ya me dirás esa correspondencia wink

Mas vale tarde que nunca, aquí tienes:

joy[0].button[0].b -> B
joy[0].button[1].b -> X
joy[0].button[2].b -> Y
joy[0].button[3].b -> A
joy[0].button[4].b -> R
joy[0].button[5].b -> L
joy[0].button[6].b -> Select
joy[0].button[7].b -> Start
joy[0].button[8].b -> Vol. down
joy[0].button[9].b -> Vol. up
joy[0].button[10].b -> Click

Sobre lo que me preguntas de las primitivas gráficas, la verdad es que no sé si están aceleradas por
hardware, (creo que si, pero sólo creo, lo tendría que mirar), de todos modos, nada te impide hacer un sprite de un rectángulo magenta y usarlo en lugar de rectfill y compañía.

Cita:
No... si como hubiera sido en el Palacio de los Deportes es para matarte, porque vivo a 400 m o así Razz

Fué en la Macumba, encima de la estación de Chamartín.
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Alx
Boss

Boss

Registrado: 22 Mar 2006
Mensajes: 6926
Ubicación: Barcelona
Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5Reputación: 73.5
votos: 26
Sexo:Este usuario es un Hombre

MensajePublicado: Dom Ene 28, 2007 11:32 am    Asunto: Responder citando
Benway escribió:
...y... ¡¡JOER COMO MOLA LA GP2X!!


:wink:
_________________
Ver perfil de usuario Enviar mensaje privado Enviar email
traperic
Mega Byte

Mega Byte

Registrado: 30 Jul 2006
Mensajes: 226

Reputación: 33.7Reputación: 33.7Reputación: 33.7
votos: 1


MensajePublicado: Lun Ene 29, 2007 15:58 pm    Asunto: Responder citando
Buenas,

Cita:
Los juegos que has compilado con Allegro (Profanation, Luces glaurung, etc...) me funcionan bien con el firmware 2.1.1 peeeeeeeeero, si los ejecuto nada más encender la consola, no van. Se queda bloqueada con la pantalla en negro. Sin embargo, si ejecuto un segundín cualquier otra cosa, y luego intento el juego, funciona sin problema. Confused ¿Por qué puede pasar eso?


N.P.I, es un fallo conocido desde el primer juego que porté pero no lo puedo reproducir en mi GP2X de ninguna manera, a algunas personas les funciona quitar el script que yo meto y renombrar el ejecutable con la extensión .gpe, si no quieres hacer esto, hay otros que lanzan los juegos desde gmenu2x, otros hacen como tú, primero ponen un emulador (por ejemplo el rage2x) y luego el juego, y finalmente, mi grupo, a los que nos funciona sin hacer nada ;-).

Cita:
He conseguido compilar algo para ejecutarlo, pero desde windows (lo malo es que me manejo peor con las librerías de win que en linux), y usando solamente allegro. Guay! por lo menos es un comienzo, pero claro, para compilar el Capitán Sevilla, necesito compilar previamente Alfont y Fblend (y tener instaladas la libpng y la zlib de la que depende la libpng), así que imagino que la mejor manera será hacerlo desde linux, como tú dices, recompilando Allegro con los parches y luego recompilando las librerías en cuestión, pero... ¿cómo? Quiero decir:

Yo he conseguido compilar Allegro, Lua, Alfont, DUMB, Alogg (pero sus resultados reproduciendo música dejan que desear), libpng, zlib y algunas otras pero FBlend no he probado, no sé si funcionará correctamente o no.

Basicamente para hacerlo en todas hay que trastear los Makefiles, apuntando a la ruta de las librerías y los includes del compilador cruzado. Creo recordar que para las librerías pequeñas o libpng que me daba algún problema lo hice a mano.
Código:

arm-linux-gcc *.c -opciones que quieras
arm-linux-ar cru libloquesea.a *.o


Luego copias los *.a y los *.h pertinentes a /directorio donde esté devkitpro/lib y a /directorio donde este devkitpro/include
respectivamente.

Yo tengo Allegro ya parcheada preparada para ser compilada con el DevKitPro (si no has cambiado la ruta de instalación), si quieres te la paso y no te tienes que pegar con los parches ;-).

Allegro no será sustituido, ya que se instalará en prefix que según el comando que yo puse sería /usr/local/devkitPro/devkitGP2X, eso sí, luego cuando vayas a compilar para la consola tienes que añadir el -L/usr/local/devkitPro/devkitGP2X/lib al enlazar, al igual que tienes que añadir -I/usr/local/devkitPro/devkitGP2X/include al compilar.

Por cierto, te sugiero que te crees unos enlaces a /usr/local/devkitPro/devkitGP2X/bin/programa_que_suelas_usar en /usr/local/bin para que no te mueras de asco escribiendo todo el rato la ruta para ejecutar el compilador cruzado. Ejemplo:
Código:

ln -s /usr/local/devkitPro/devkitGP2X/bin/arm-linux-ar /usr/local/bin/arm-linux-ar


Tanto Alfont como las demás librerías que quieras usar deberás compilarlas con el compilador cruzado, enlazando a las librerías que tengas en el directorio del devkitpro.

El -mcpu=arm920t lo pones en los programas que tú hagas, es una opción del compilador, con lo que no creo que tenga mucho sentido ponerlo como un parámetro del script configure.

Lógicamente, no te servirán las librerías de Linux, ni la libpng, ni la zlib, aunque el sistema operativo sea el mismo no están en la misma arquitectura. La GP2X incluye estas 2 librerías entre otras pero yo preferí compilarlas por mi cuenta para enlazarlas estáticamente 'por si acaso'.

Bueno, no sé si me dejo algo, si necesitas que te pase Allegro me mandas un email y te la paso para que no tengas mas que descomprimir y compilar.

Saludos.
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
traperic
Mega Byte

Mega Byte

Registrado: 30 Jul 2006
Mensajes: 226

Reputación: 33.7Reputación: 33.7Reputación: 33.7
votos: 1


MensajePublicado: Mie Feb 07, 2007 13:19 pm    Asunto: Responder citando
Aquí dice lo que está acelerado: (Imagino que será lo que has mirado)

http://www.glost.eclipse.co.uk/gfoot/gp2x/allegro-accel.html

Efectivamente, sólo están aceleradas las operaciones básicas: rectfill, blit, draw_sprite, etc, cuando el origen y el destino son 'video bitmaps', que es lo que usa el ejemplo que posteé anteriormente.

En realidad, para programar en la GP2X lo mejor es SDL, pero claro, cualquiera cambia todo el código de una librería a otra. ;-).
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Publicar nuevo tema   Responder al tema    Foros de discusión » Programación » C/C++/Cdiv Todas las horas son GMT - 5 Horas
Página 1 de 1


 
Cambiar a:  
Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro


Powered by phpBB © 2001, 2002 phpBB Group
PlayStation by Scott Stubblefield


¿Quieres crear un foro gratis como este? foro gratis