La aventura del cygwin (BennuGP2X)

Started by Drumpi, August 31, 2009, 04:49:18 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Drumpi

Hola a todos... en especial para esos seres iluminados llamados programadores ;D

Sí, estoy de peloteo, porque empieza lo más gordo de una aventura que me viene más grande que escalar el everest a la pata coja:
Compilar Bennu para GP2X.
Parto de la base de conocer algo de C++, bastante del lenguaje que nos ocupa (DIV/Fenix/Bennu), y absolutamente nada de entornos de programación (miento, se apretar el boton de compilar y ejecutar en dev-c++... y de chiripa, añadir direcciones a las librerías a usar en dicho IDE). Y aqui estamos, que (supuestamente) ya tengo instalado y funcionando el cygwin, con las librerías de open2x, etc... (vease el otro hilo).

De acuerdo: tengo el código fuente de la última release anunciada, en la carpeta /home/administrador/SVN. He visto un archivo llamado open2xwiz-vars.sh, y por lo que he llegado a entender, es el responsable de preparar las cosas para compilar para la WIZ, así que he creado una copia y lo he modificado como sigue:

#!/bin/sh

## -- OPEN2X USER SETTINGS

## OPEN2X - This should point to the root of your tool-chain {i.e. folder above the BIN dir}

OPEN2X=/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux

## HOST and TARGET - These should be the canonical tool names of your tool.
## For the sake of this script HOST and TARGET should be the same.
## Defaults would be 'arm-open2x-linux' for a normal Open2x tool-chain.

HOST=arm-open2x-linux
TARGET=arm-open2x-linux
BUILD=`uname -m`
PKG_CONFIG_PATH=/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib/pkgconfig

## -- END OPEN2X USER SETTINGS

export OPEN2X
export HOST
export TARGET
export PKG_CONFIG_PATH

PREFIX=$OPEN2X
export PREFIX

PATH=$PATH:$OPEN2X/bin
export PATH

ln -s `whereis -b pkg-config | sed 's/pkg-config\: //g'` /opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/bin/pkg-config

# Do not edit below here
CC="${OPEN2X}/bin/${HOST}-gcc"
CXX="${OPEN2X}/bin/${HOST}-g++"
AR="${OPEN2X}/bin/${HOST}-ar"
STRIP="${OPEN2X}/bin/${HOST}-strip"
RANLIB="${OPEN2X}/bin/${HOST}-ranlib"

CFLAGS="-DTARGET_GP2X_WIZ -O2 -ffast-math -fomit-frame-pointer -mcpu=arm920t -DARM -D_ARM_ASSEM_ -I${OPEN2X}/include -I${OPEN2X}/include/libxml2 -I${OPEN2X}/include/SDL"
LDFLAGS="-L${OPEN2X}/lib"
PKG_CONFIG="${OPEN2X}/bin/pkg-config"

export CC
export CXX
export AR
export STRIP
export RANLIB
export CFLAGS
export LDFLAGS
export PKG_CONFIG

echo Current settings.
echo
echo Install root/Working dir = $OPEN2X
echo Tool locations = $OPEN2X/bin
echo Host/Target = $HOST / $TARGET
echo

echo CC         = $CC
echo CXX        = $CXX
echo AR         = $AR
echo STRIP      = $STRIP
echo RANLIB     = $RANLIB

echo CFLAGS     = $CFLAGS
echo LDFLAGS    = $LDFLAGS
echo PKG_CONFIG = $PKG_CONFIG

#cd vendor/des-4.04b; make -f Makefile.openwiz clean all install; cd -
#cd core; ./configure --prefix=${PREFIX} --target=${TARGET} --host=${HOST} --build=${BUILD} --enable-shared ; make -f Makefile; cd -

echo ""
echo "Now do:"
echo "cd project"
echo './configure --prefix=${PREFIX} --target=${TARGET} --host=${HOST} --build=${BUILD} --enable-shared'


Básicamente he cambiado las rutas por las que se me han instalado a mi, con mis librerías, y usando la glibc más moderna (es la que recomiendan, pero ya veremos si los firms oficiales no me piden cambiar a la anterior).
Bien, pues aqui empiezan los problemas, con esta linea:

ln -s `whereis -b pkg-config | sed 's/pkg-config\: //g'` /opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/bin/pkg-config

No existe ninguna carpeta llamada pkg-config, existe pkgconfig en la carpeta lib, pero en la carpeta bin no hay ninguna subcarpeta, como si parece haber en las toolchains de WIZ, así que, no sé qué hacer (es lo que tiene salir de aventura sin brújula ni mapas).
¿Solución?

Supongo que despues tendré que ir a la carpeta /core y hacer ./configure (como se indica al final) y make (y encomendarme a los cielos).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

josebita

pkg-config es un programa, no una carpeta. Cygwin debería instalarlo con el paquete apropiado... No te sé decir más...

Drumpi

Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Drumpi

Bueno, simplemente comentar que Splinter y yo estuvimos anoche hablando, y ha sido muy productiva. Hemos avanzado mucho, pese a los problemas que nos dió windous y mi propia ignorancia ;D
De momento hemos conseguido compilar el core, aun falta probarlo y seguir con las librerías. Tiempo al tiempo.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

darío

My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

Drumpi

Pues tengo el placer de informarles que, tras un trabajo de tres noches entre Splinter y yo (aunque, la verdad, casi todo el trabajo se lo ha llevado Splinter, yo me he limitado casi a ser un aporrea-teclas), tengo la primera beta compilada de BennuGD para GP2X.
De momento he probado los juegos de demostración que venían y una de código propio: el galaxian ha funcionado de maravilla, los únicos problemas reseñables ha sido un parón puntual cuando una nave salió a perseguir al prota, y que el el juego no iba a su velocidad (entre el 80% y el 90%, bastante bien para un ARM a 200MHz escalando por software una resolución mayor). El pac-man va casi casi a su velocidad (27-29 fps) aunque con un ligero retraso en el sonido.
La otra prueba tenía que ser, obviamente, mi motorcillo de tiles v3. Funcionar funciona casi sin cambiar el código (cometí el error de crear las variables "null" y "error" :D) pero no he tenido tiempo de reconfigurar los controles para probarlo a fondo. Eso si, comparando con UFenix en igualdad de condiciones (o todo lo igualado que pude cuando tienes varias versiones del mismo motor y no sabes cual realmente había funcionado en gp2x :D), o sea, sin moverse del inicio, la diferencia ha sido de 125fps frente a los 141 de Bennu. Pero repito, es una prueba no concluyente, pues a duras penas conseguí que funcionase en UFenix, y el anterior port de Sandman también era más rápido, pero con mayor carga de procesos caía muy por debajo de los 53 de UFenix (hasta menos de 30, creo recordar).

Las pruebas las he realizado en el firmware open2x, así que si alguien tiene una gp2x con algun firmware oficial, me gustaría que lo probase y me dijera si le funciona o no, por si tenemos que usar un compilador más antiguo. Quiero que todo esté bien atado antes de lanzar una versión "oficial".

http://www.fenixworld.com/e107_plugins//depot/files/fw75.bennugp2x.zip
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

FreeYourMind

Fantastico !! Dentro de 2, 3 semanas me iré por mis Gp2x para ver que tal marcha.

darío

My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

DCelso

cagoen, me fui de vacaciones con esta misma tarea a medias, jarl, me habeis pisado el trabajo (y la primicia) entre los dos (os odio :D), yo ya tenía compilado el core y la mayoría de módulos, me quedé en un error que me daba el lib_video por dependencias le librerías externas mal instaladas. Yo me encontré problemas también al compilar la librería de decript.

Os felicito por el gran trabajo, menos trabajo para mi :D.
por cierto ¿os sirvió de algo el tuto que puse?

http://forum.bennugd.org/index.php?topic=726.0

Sería muy muy interesante que lo miraseis de nuevo y me comentárais fallos para cambiarlo.
Supongo que SPlinterGU añadirá los scripts y makefiles necesarios en la siguiente versión de bennu. Por lo que incluso será más facil de usar el tuto de como compilar en GP2X. Incluso es Extensible a crear cualquier entorno de compilación cruzada tipo OPEN. :D.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

DCelso

He probado los dos juegos del último zip adjunto con el bgdi de windows y van muy bien.
Es decir, puse en la consola de windows bgdi bgd-galaxian y se ejecutó de maravilla.
Oye, es genial el scale resolution ese.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Drumpi

Tu guía fue mi biblia casi, fue la única manera de echar a andar el entorno de compilación XD
Tuvimos problemas porque nos faltaron un par de librerías que tuvimos que recompilar (la libiconv y la libdes) y tuvimos que modificar un par de makefiles porque no cogía la lmpeg o algo así. Si quieres, te lo paso.
De todas formas, aun no tenemos el éxito absoluto: según me comentan en gp32spain, el firm oficial 2.0 no lo acepta porque:
bgdi: /lib/libc.so.6: version `GLIBC_2.3' not found (required by ../bgd-runtime/libbgdrtm.so)
Ya le he pasado a animanegra la libc.so renombrada para que lo vuelva a probar, creo que con eso ya debería ir todo, y mientras me da tiempo a realizar más pruebas de rendimiento.

DCelso ¿qué te parece el rendimiento en general? yo es que no he probado aun los juegos en PC (es curioso, desde que lo he compilado sólo uso bennu en la GP2X). Y tenemos que ver cómo aplicarle el overclock del open2x.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

splinter_work

eso no es problema, inclui en el paquete la libc que requiere... deberia funcionar... sino, anda incluyendonas una a una... segun pida.

Drumpi

Le he pasado la libc.so renombrada a libc.so.6, que era un enlace a esa, a animanegra, porque es lo que yo entiendo en el mensaje, aunque él me dice que le pase la glib_2.3. No existe tal archivo, hay uno con el nombre muy similar en la carpeta utils de la carpeta del src que descargué de la libiconv, mientras que la libc.so estaba en /opt/open2x/gcc-4.1.1-glibc-2.3.6/lib, por lo que más razón a mi favor.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

splinter_work

esa que falta puede estar en la gp2x... en el directorio /usr/lib o /usr/local/lib o quizas en /lib

hay que buscarla.

Drumpi

Me acaban de decir lo mismo.
Tambien puede ser que los archivos que le he pasado eran de texto plano y no binarios :D:D:D:D
Ya le he pasado otro, si no va, tendré que usar telnet o el ftp de la consola y me quedo sin internet en el ordenador.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)