Pequeño "try again" con el port de Bennu a GP2X

Started by Drumpi, March 13, 2010, 01:53:39 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DCelso

Monstruos Diabólicos

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

Drumpi

Para los módulos hay que acordarse de añadir a la línea de  ./configure la opción:
--with-bennu-prefix=DIRECCIÓN_DE_LA_CARPETA_CORE
No sé si eso solucionará el problema de SDL, pero por probar...

Al menos ya tengo cómo seguir intentándolo :)
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)

DCelso

no creo, es culpa de alguna dependencia de sdlmixer para gp2x, porque extraje el ejemplo de sdlmixer y solo funciona cuando le pones un milló de librerías vorbis, ogg, mad, midmod, etc. y alguna no le llega al configure.
En cuanto al with bennu prefix no debería ser necesario, al menos no lo es ni para linux, windows, caanoo y wiz :D.
Monstruos Diabólicos

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

DCelso

Drumpi, porfaplis, me puedes pasar tu script de configuración de variables que usaste para compilar con el firmware de open2x?
Es para confirmarte (o confirmarme) unas cuantas cosas.
Asias de antemano.
Monstruos Diabólicos

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

Drumpi

#109
Bueno, no es gran cosa (por no decir que es un clon del de splinter para WIZ con los directorios cambiados).
Aun me estoy enterando de cómo va esto de las toolchains, pero poco a poco, que a mi no me han enseñado na de na, voy aprendiendo a base de "trial & error".
EL primero es el que uso para el open2X, el segundo es con las toolchains oficiales... y las librerías que faltaban a base de descarga-compila-instala (make, make install).

NOTA: son los scripts de compilación de la versión r147. Un par de versiones más adelante se cambió a openSSL y ya no pude seguir por problemas de incompatibilidad entre cygwin y estas librerías, de ahí que lo esté intentando ahora en Linux.
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)

DCelso

¿Pero con los dos generas binarios válidos? Sino dime con cual, asias  dantemano.
Monstruos Diabólicos

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

Drumpi

Sí, con ambos, de hecho son con los que hice mis versiones y sin cambiar nada de una versión a otra.
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, para no apropiarme del hilo de XCelso, sigo con mi versión por aquí.
Ni mucho menos trato de hacerle la competencia, simplemente sigo lo que empecé hace tiempo por mi línea (llena de fallos, errores, incertidumbre...).

Bien, aprovechando la salida de una versión sin la libSSL para las consolas portátiles, he hecho una recompilación de Bennu tal cual, usando esta r222 más actualizada. Quitando un par de cosillas sin importancia, compilan bien.

De momento sólo he hecho pruebas preliminares, vamos, que sólo he probado con el Echo con lo que me ha salido en binario :D :D :D
Por lo que he visto, seguimos teniendo problemas entre el firm oficial y el open2X, así que seguimos necesitando dos versiones ¿o no? cuando acabe las pruebas, lo confirmaré o no.
¿Qué incompatibilidades hay? la versión Open2x va tan bien como la anterior en el firm open2x, no hay cambios, pero aun no he probado cosas nuevas como las modificaciones del modo7. Sin embargo no carga en el firm oficial (al menos, no en el modo compatibilidad), por lo de siempre: no le gusta la versión de la libc. Tengo que meter las librerías conflictivas en una carpeta aparte y probar la variable que mencionó Splinter en el otro hilo, si funciona, guay.
La versión compilada con las toolchains oficiales son otro cantar: funcionan perfectamente en el "firm oficial", pero más lento (como antes), así que tendré que probar a meterle las SDL aceleradas en la SD y rezar para que no haya problemas (y que funcione). Pero en Open2x, aunque la velocidad es la misma, sigue teniendo el problema con los SIZE: los objetos salen con una rotación de 45º y un escalado gigantesco (y una bajada de frames de narices). Encima está el problema de los angles (¿recordais el video donde la flecha del menú principal se iba de viaje a japón?).

A todo esto hay que añadirle un problema extra: los FPS. Parece ser que los cambios del sistema de cálculo de FPS para WIZ no le gustan a la negrita, y funciona como si hubiesen puesto los FPS a cero (eso no importa mucho en el Echo, pues se pasa casi todo el rato al 50% de su velocidad, pero cuando coges un objeto, la animación termina mucho antes que la música, y el menú va disparado).

Así que, mi prioridad será terminar de hacer las pruebas: probar el modo7, y ver si consigo hacer funcionar la versión open2x en el firm oficial, y si no, probar a meterle las SDL aceleradas a ver si hago que el oficial vaya más rápido. Después ya me preocuparé de meter un nuevo OS_ID para que haga lo mismo que con WIZ, salvo el cálculo de los FPS, que usaré el de PC (que creo que es el que iba antes y funcionaba bien)... si averiguo cómo se hace eso ^^U
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)

DCelso

Drumpi, para probar eso lo único que tienes que hacer es meter esta línea en tus scripts de ejecución de juegos.

LD_PRELOAD=../bgd-runtime/libc.so.6
Monstruos Diabólicos

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

SplinterGU

no se si el PRELOAD va con paths relativos, lo mejor es hacer el path absoluto...

asi:

LD_PRELOAD=$PWD/../bgd-runtime/libc.so.6

intentar las 2 formas a ver que sale.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Bueno, pues no hay forma de hacer que la versión del firm Open2X funcione en el firm oficial, ya no sé qué hacer.
Para empezar, he metido la libc.so de las toolchains del open2x en la misma carpeta que el runtime y se me ha quejado:

basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libc.so.6)
Inconsistency detected by ld.so: dl-minimal.c: 134: realloc: Assertion `ptr == alloc_last_block' failed!


Luego le he metido la ld-linux.so.2, luego la libdl.so:
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libc.so.6)
/usr/gp2x/gp2xmenu: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
/usr/gp2x/gp2xmenu: /lib/libc.so.6: version `GLIBC_PRIVATE' not found (requiredby /mnt/sd/bgd-runtime/libdl.so)


He intentado varias combinaciones, varios archivos, comprobado que no eran enlaces y a lo más que he llegado ha sido a:
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libc.so.6)
/usr/gp2x/gp2xmenu: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
/usr/gp2x/gp2xmenu: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libc.so.6)


Lo he intentado por activa y por pasiva. Por si queda alguna duda, este es el script que he usado:
#!/bin/sh

LD_PRELOAD=/mnt/sd/bgd-runtime/ld-linux.so.2:/mnt/sd/bgd-runtime/libdl.so:/mnt/sd/bgd-runtime/libc.so.6
LD_LIBRARY_PATH=../bgd-runtime:$LD_LIBRARY_PATH
PATH=../bgd-runtime:$PATH


export LD_PRELOAD
export LD_LIBRARY_PATH
export PATH

echo 2 > /proc/cpu/alignment

for prg in *.prg; do
    name=`basename $prg .prg`
    bgdc $prg 1>log1.txt 2>err1.txt
    bgdi $name 1>log2.txt 2>err2.txt
done

cd /usr/gp2x
exec /usr/gp2x/gp2xmenu


En fin, que ya ando desesperado, así que por hoy lo dejo, que encima estoy bajo de ánimos. No he podido probar el modo7 ni nada de lo nuevo, así que os lo subo a ver si teneis más suerte que yo.
http://drumpi.se32.com/games/BennuGD-r222-GP2XOficial.zip
http://drumpi.se32.com/games/BennuGD-r222-GP2Xopen2x.zip

Aviso, tiene el fallo del cálculo de los FPS, los juegos van a ir a toda pastilla. A ver si saco tiempo y busco dónde se define el OS_ID, creo un nuevo valor (supongo que me toca el 1002) y modifico el código para que tome este valor como si fuera WIZ salvo para el cálculo de los FPS (una pequeña guía de situación me vendría de perlas).
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)

SplinterGU

#116
Quote from: Drumpi on January 20, 2011, 07:55:52 PM
Bueno, pues no hay forma de hacer que la versión del firm Open2X funcione en el firm oficial, ya no sé qué hacer.
Para empezar, he metido la libc.so de las toolchains del open2x en la misma carpeta que el runtime y se me ha quejado:

basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libc.so.6)
Inconsistency detected by ld.so: dl-minimal.c: 134: realloc: Assertion `ptr == alloc_last_block' failed!


Luego le he metido la ld-linux.so.2, luego la libdl.so:
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libc.so.6)
/usr/gp2x/gp2xmenu: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
/usr/gp2x/gp2xmenu: /lib/libc.so.6: version `GLIBC_PRIVATE' not found (requiredby /mnt/sd/bgd-runtime/libdl.so)


He intentado varias combinaciones, varios archivos, comprobado que no eran enlaces y a lo más que he llegado ha sido a:
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libc.so.6)
/usr/gp2x/gp2xmenu: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libdl.so)
/usr/gp2x/gp2xmenu: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by /mnt/sd/bgd-runtime/libc.so.6)


Lo he intentado por activa y por pasiva. Por si queda alguna duda, este es el script que he usado:
#!/bin/sh

LD_PRELOAD=/mnt/sd/bgd-runtime/ld-linux.so.2:/mnt/sd/bgd-runtime/libdl.so:/mnt/sd/bgd-runtime/libc.so.6
LD_LIBRARY_PATH=../bgd-runtime:$LD_LIBRARY_PATH
PATH=../bgd-runtime:$PATH


export LD_PRELOAD
export LD_LIBRARY_PATH
export PATH

echo 2 > /proc/cpu/alignment

for prg in *.prg; do
    name=`basename $prg .prg`
    bgdc $prg 1>log1.txt 2>err1.txt
    bgdi $name 1>log2.txt 2>err2.txt
done

cd /usr/gp2x
exec /usr/gp2x/gp2xmenu


En fin, que ya ando desesperado, así que por hoy lo dejo, que encima estoy bajo de ánimos. No he podido probar el modo7 ni nada de lo nuevo, así que os lo subo a ver si teneis más suerte que yo.
http://drumpi.se32.com/games/BennuGD-r222-GP2XOficial.zip
http://drumpi.se32.com/games/BennuGD-r222-GP2Xopen2x.zip

Aviso, tiene el fallo del cálculo de los FPS, los juegos van a ir a toda pastilla. A ver si saco tiempo y busco dónde se define el OS_ID, creo un nuevo valor (supongo que me toca el 1002) y modifico el código para que tome este valor como si fuera WIZ salvo para el cálculo de los FPS (una pequeña guía de situación me vendría de perlas).

fantastico! eso quiere decir que el LD_PRELOAD funciona... es obvio que pase eso... se reemplaza la libc.so para todas las aplicaciones... :D

proba con este script


#!/bin/sh

LLP_BAK=$LD_LIBRARY_PATH
P_BAK=$PATH

LD_LIBRARY_PATH=../bgd-runtime:$LD_LIBRARY_PATH
PATH=../bgd-runtime:$PATH

export LD_LIBRARY_PATH
export PATH
export LD_PRELOAD

LD_PRELOAD_BAK=$LD_PRELOAD

echo 2 > /proc/cpu/alignment

for prg in *.prg; do
    name=`basename $prg .prg`
#    LD_PRELOAD=/mnt/sd/bgd-runtime/ld-linux.so.2:/mnt/sd/bgd-runtime/libdl.so:/mnt/sd/bgd-runtime/libc.so.6
    LD_PRELOAD=/mnt/sd/bgd-runtime/libc.so.6
    bgdc $prg 1>log1.txt 2>err1.txt
    bgdi $name 1>log2.txt 2>err2.txt
    LD_PRELOAD=$LD_PRELOAD_BAK
done

LD_LIBRARY_PATH=$LLP_BAK
PATH=$P_BAK

cd /usr/gp2x
exec /usr/gp2x/gp2xmenu


si sigue sin funcionar cambia la LD_PRELOAD por la que esta comentada con #
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

¿Y cual es la diferencia con mi script? Sigue definiéndose la variable antes de compilar/interpretar.

PD: el script que he puesto es el último, las primeras verisones sólo enlazaban con la libc.so.6 y buscaban a ld-linux.so.2 en /lib, pero no era compatible, de ahí que añadiese después la ld-linux.so.2 a la lista de LD_PRELOAD y a la carpeta del runtime. La libdl era una corazonada porque me decía lo de:

basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libc.so.6)
Inconsistency detected by ld.so: dl-minimal.c: 134: realloc: Assertion `ptr == alloc_last_block' failed!


No tengo yo muy claro que esté funcionando, pero sí, algún cambio hay.
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)

SplinterGU

te comento, la diferencia radica en que basename es un ejecutable, y si tenes definido PRELOAD tambien lo va a afectar a el... por eso, definiendolo donde lo puse, solo afectara a la ejecucion de bennugd, y cuando deje de ejecutar los ejecutables bennugd, volvera a cargar la libc original.

hace una cosa, estas librerias nuevas que pusiste no las pongas en el mismo directorio que el runtime, sino en una subcarpeta del runtime.

y si sigue sin ir, hace lo mismo que hice yo para el LD_PRELOAD, pero para el LD_LIBRARY_PATH... asi nos aseguramos que los comandos normales, usen las libs correctas, y bennugd las que se necesitan.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

parece que no pilla el ld_linux.so del preload porque sigue usando el de /lib/, quizas cambiando el orden en el preload.., a lo mejor es inverso.

Monstruos Diabólicos

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