| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Jue Dic 07, 2006 15:51 pm Asunto: |
|
|
Ey! Ben amor! que vas a portar lo que yo me sé a la GP2X !!!!??? _________________
 |
|
 |
|
 |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Jue Dic 07, 2006 17:39 pm Asunto: |
|
|
YUJUUUUUUUU!!!!!!!!!!
 _________________
 |
|
 |
|
 |
zemman Boss

 Registrado: 08 Ago 2006 Mensajes: 2684 Ubicación: Sevilla
        votos: 14
|
Publicado: Jue Dic 07, 2006 17:40 pm Asunto: |
|
|
| Alx escribió: |
YUJUUUUUUUU!!!!!!!!!!
 |
QUOTAZO !!! _________________ www.zemman.wordpress.com |
|
 |
|
 |
traperic Mega Byte

 Registrado: 30 Jul 2006 Mensajes: 226
    votos: 1
|
Publicado: Jue Dic 07, 2006 22:41 pm Asunto: |
|
|
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 .
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. |
|
 |
|
 |
traperic Mega Byte

 Registrado: 30 Jul 2006 Mensajes: 226
    votos: 1
|
Publicado: Vie Dic 08, 2006 06:22 am Asunto: |
|
|
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 ). 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.
Creo que ya sé que van a traer los reyes en la casa de Benway ;-). |
|
 |
|
 |
anjuel Invitado
|
Publicado: Vie Dic 08, 2006 13:36 pm Asunto: |
|
|
¿y para la gp32?
 |
|
 |
|
 |
Benway Invitado
|
Publicado: Vie Dic 08, 2006 14:07 pm Asunto: |
|
|
| anjuel escribió: |
¿y para la gp32?
 |
El problema es que no hay Allegro para la gp32... o al menos que yo sepa...
¿Tú sabes algo, Traperic? |
|
 |
|
 |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Vie Dic 08, 2006 20:29 pm Asunto: |
|
|
 _________________
 |
|
 |
|
 |
traperic Mega Byte

 Registrado: 30 Jul 2006 Mensajes: 226
    votos: 1
|
Publicado: Vie Dic 08, 2006 20:55 pm Asunto: |
|
|
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 . Ojala me equivoque y pronto tengamos otra plataforma más a la que portar. :wink: |
|
 |
|
 |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Vie Dic 08, 2006 22:40 pm Asunto: |
|
|
Yo la verdad es que no me voy a hacer muchas ilusiones  _________________
 |
|
 |
|
 |
anjuel Invitado
|
Publicado: Sab Dic 09, 2006 05:20 am Asunto: |
|
|
| 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 . Ojala me equivoque y pronto tengamos otra plataforma más a la que portar. :wink: |
Tenía que volver a intentarlo...  |
|
 |
|
 |
traperic Mega Byte

 Registrado: 30 Jul 2006 Mensajes: 226
    votos: 1
|
Publicado: Mar Dic 12, 2006 14:28 pm Asunto: |
|
|
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.
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: |
|
 |
|
 |
traperic Mega Byte

 Registrado: 30 Jul 2006 Mensajes: 226
    votos: 1
|
Publicado: Dom Dic 24, 2006 05:26 am Asunto: |
|
|
| 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. |
|
 |
|
 |
Alx Boss

 Registrado: 22 Mar 2006 Mensajes: 6926 Ubicación: Barcelona
        votos: 26 Sexo:
|
Publicado: Dom Ene 28, 2007 11:32 am Asunto: |
|
|
| Benway escribió: |
| ...y... ¡¡JOER COMO MOLA LA GP2X!! |
:wink: _________________
 |
|
 |
|
 |
traperic Mega Byte

 Registrado: 30 Jul 2006 Mensajes: 226
    votos: 1
|
Publicado: Lun Ene 29, 2007 15:58 pm Asunto: |
|
|
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. |
|
 |
|
 |
traperic Mega Byte

 Registrado: 30 Jul 2006 Mensajes: 226
    votos: 1
|
Publicado: Mie Feb 07, 2007 13:19 pm Asunto: |
|
|
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. ;-). |
|
 |
|
 |
|