Bennu GP2X

Started by FreeYourMind, January 28, 2010, 09:08:15 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

Quote from: DCelso on January 18, 2011, 03:47:17 PM
tal que así?

#!/bin/sh
LD_LIBRARY_PATH_BAK=$LD_LIBRARY_PATH
PATH_BAK=$PATH
LD_PRELOAD_BAK=$LD_PRELOAD

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

echo 2 > /proc/cpu/alignment

for prg in *.prg; do
    name=`basename $prg .prg`
    bgdc $prg 1> bgdc_stdout.txt 2>bgdc_stderr.txt
    bgdi $name 1> bgdi_stdout.txt 2>bgdi_stderr.txt
done

sync

LD_LIBRARY_PATH=$LD_LIBRARY_PATH_BAK
PATH=$PATH_BAK
LD_PRELOAD=$LD_PRELOAD_BAK

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


Adjunto test 16 con este proceso.
http://www.mediafire.com/?tqdd79v54qw9980

nop, no es una ruta, es el pathname completo de la lib... path+nombre de lib.

puse

Quote
LD_PRELOAD=path_lo_que_sea/mylibc.so
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Ottia, pues eso podría ser el final de las preocupaciones por usar la toolchain oficial o la del open2x, por lo que te comentaba de la libc.so, DCelso. Sería buscar las dependencias de la libc e ir incluyéndolas en esa variable (espero que no haya que cargar todo el sistema, o que no haya incompatibilidad por las versiones del compilador del SO y de estas librerías).

De todos modos, a lo que venía. Iba a pediros ayuda para la compilación, pero mientras terminaba de mirar los mensajes anteriores se me ha venido la inspiración y ya no hace falta (es curioso, las toolchains Open2X no me piden nada, pero las oficiales me exigen que compile la libdes de la carpeta 3rdparty antes que el core ???).
O sea, que sí, que me han compilado los fuentes de la r222 en ambas toolchains (que ya es mucho), pero aun no he realizado pruebas.

Así que, me toca probar las de XCelso y las mías :D A poco que funcionen como las anteriores ya será un logro, y si la LD_PRELOAD funciona como creo, podría usarse las del OPEN2X en el oficial e ir más rápido. XCelso ¿cual era el comando que te decía las dependencias de una .so?
También tengo que ver si puedo coger las librerías SDL aceleradas y sustituirlas en la toolchain oficial y hacer que vaya más rápido. Y tengo que pensar en crear un módulo para hacer overclock y acelerar la RAM de la GP2X (sería buena idea algo similar en WIZ, basada en el pollux_set, sé que, Splinter, no eres muy amigo de las librerías exclusivas para según qué plataformas, pero sería interesante poder hacer overclock o underclock a las negritas).
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

drumpi, en principio proba con solo poner la libc.so, y referenciarla en el LD_PRELOAD.

Has entendido bien, el LD_PRELOAD permite tener una libreria que sobreescriba a la libreria del sistema (libc.so), con esto, las funciones que tengas definidas en tu lib cargada previamente por LD_PRELOAD, reemplazaran a las que estan en la libc original.

el comando es ldd, pero tenes que usar el del toolchains

otra cosa, yo no soy enemigo de las dlls exclusivas, solo que no pueden ser parte de un port oficial si no hay compatibilidad en las otras plataformas o si no tienen una forma de indicar que no estan disponibles para tal o cual plataforma.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso


#!/bin/sh
LD_LIBRARY_PATH_BAK=$LD_LIBRARY_PATH
PATH_BAK=$PATH
LD_PRELOAD_BAK=$LD_PRELOAD

LD_PRELOAD=../bgd-runtime/libc.so.6
LD_LIBRARY_PATH=../bgd-runtime:$LD_LIBRARY_PATH
PATH=../bgd-runtime:$PATH

echo 2 > /proc/cpu/alignment

for prg in *.prg; do
    name=`basename $prg .prg`
    bgdc $prg 1> bgdc_stdout.txt 2>bgdc_stderr.txt
    bgdi $name 1> bgdi_stdout.txt 2>bgdi_stderr.txt
done

sync

LD_LIBRARY_PATH=$LD_LIBRARY_PATH_BAK
PATH=$PATH_BAK
LD_PRELOAD=$LD_PRELOAD_BAK

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

Así?, Drumpi prueba el último test con este script.
Monstruos Diabólicos

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

Drumpi

A ti no te hace falta el LD_PRELOAD, a ti te coje las librerías de dentro del ejecutable. A mi sí, porque no me carga la libc... y si la pongo en la misma carpeta, no me carga otra (no me acuerdo cual) aunque la ponga al lado (lo que te comentaba, que me la busca en el sistema porque... ¿está compilada así? ni idea).
Mañana lo miro, que ya es hora de cenar. Ahora tengo que probar 4 versiones ^^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, mi test 16, es ese que probamos en mi casa que daba problemas de librerías, uno que compilé de forma dinámica.  Lo que he hecho de más es insertar el juego nim como test e intentar hacer lo que dice Splinter para sobrescribir la librería del sistema libc.
Monstruos Diabólicos

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

Drumpi

Pues comento:
El test15 sigue igual, hace el amago de arrancar pero se sale:

SDL_GP2X: CreateDevice
SDL_GP2X: VideoInit
SDL_GP2X: Physical screen = 320x240 (ilace = 0)
SDL_GP2X: Looking for a mouse
SDL_GP2X: No mice found
SDL_GP2X: Creating cursor 16x16
SDL_GP2X: Allocated WMcursor @ 0x417208 (32)
SDL_GP2X: SurfaceManager allocating 256 bytes
SDL_GP2X: ListModes
SDL_GP2X: Setting video mode 320x240 16 bpp, flags=0
SDL_GP2X: FreeHWSurfaces
SDL_GP2X: InitHWSurfaces 0x40035800, 5085184
SDL_GP2X: Screen bucket 0x4167ec
SDL_GP2X: First free bucket 0x417208 (size = 5085184)
SDL_GP2X: Creating cursor 16x16
SDL_GP2X: Allocated WMcursor @ 0x4174e0 (32)
SDL_GP2X: SurfaceManager allocating 256 bytes
SDL_GP2X: SurfaceManager adding new free bucket of 5084928 bytes @ 0x4174f8
SDL_GP2X: SurfaceManager allocated 256 bytes at 0x40035800
SDL_SYS_JoystickInit
SDL_GP2X: ListModes
SDL_GP2X: Setting video mode 320x240 16 bpp, flags=80000000
SDL_GP2X: FreeHWSurfaces
SDL_GP2X: Freeing bucket 0x417208 (size 256)
SDL_GP2X: Freeing bucket 0x4174f8 (size 5084928)
SDL_GP2X: InitHWSurfaces 0x40035800, 5085184
SDL_GP2X: Screen bucket 0x4167ec
SDL_GP2X: First free bucket 0x4174f8 (size = 5085184)
SDL_GP2X: Freeing cursor 0x4174e0
SDL_GP2X: SurfaceManager freeing 256 bytes @ 0x40035800 from bucket 0x417208
SDL_GP2X: merging with next bucket (0x4174f8) making 5085440 bytes
SDL_GP2X: Creating cursor 16x16
SDL_GP2X: Allocated WMcursor @ 0x417208 (32)
SDL_GP2X: SurfaceManager allocating 256 bytes


Y el segmentation fault.

El test 16 es más raro: a mano (con los comandos por telnet) me da error al compilar y el GBDI se queja de versión del DCB incompatible.
Así que fui al método tradicional de ejecutar el .gpe (en serio, no sé qué pasa en mi PC que nunca sé cuando está usando el firm oficial y cuando el open2x). El mismo error en BGDC y BGDI:
bgdc: error while loading shared libraries: libcrypto.so.0.9.8: cannot open shared object file: No such file or directory
Y que conste que sí existe.
Probé a quitar la línea LD_PRELOAD (que por cierto, está mal escrita, pues referencia a una carpeta, no a un fichero) y obtuve dos errores distintos:
bgdc: error while loading shared libraries: libcrypto.so.0.9.8: cannot open shared object file: No such file or directory
bgdi: error while loading shared libraries: libbgdrtm.so: cannot open shared object file: No such file or directory


Pero lo dicho, no haría demasiado caso a estas pruebas por el tema del firm.
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

Quote from: Drumpi on January 19, 2011, 11:38:12 PM
Pues comento:
El test15 sigue igual, hace el amago de arrancar pero se sale:

SDL_GP2X: CreateDevice
SDL_GP2X: VideoInit
SDL_GP2X: Physical screen = 320x240 (ilace = 0)
SDL_GP2X: Looking for a mouse
SDL_GP2X: No mice found
SDL_GP2X: Creating cursor 16x16
SDL_GP2X: Allocated WMcursor @ 0x417208 (32)
SDL_GP2X: SurfaceManager allocating 256 bytes
SDL_GP2X: ListModes
SDL_GP2X: Setting video mode 320x240 16 bpp, flags=0
SDL_GP2X: FreeHWSurfaces
SDL_GP2X: InitHWSurfaces 0x40035800, 5085184
SDL_GP2X: Screen bucket 0x4167ec
SDL_GP2X: First free bucket 0x417208 (size = 5085184)
SDL_GP2X: Creating cursor 16x16
SDL_GP2X: Allocated WMcursor @ 0x4174e0 (32)
SDL_GP2X: SurfaceManager allocating 256 bytes
SDL_GP2X: SurfaceManager adding new free bucket of 5084928 bytes @ 0x4174f8
SDL_GP2X: SurfaceManager allocated 256 bytes at 0x40035800
SDL_SYS_JoystickInit
SDL_GP2X: ListModes
SDL_GP2X: Setting video mode 320x240 16 bpp, flags=80000000
SDL_GP2X: FreeHWSurfaces
SDL_GP2X: Freeing bucket 0x417208 (size 256)
SDL_GP2X: Freeing bucket 0x4174f8 (size 5084928)
SDL_GP2X: InitHWSurfaces 0x40035800, 5085184
SDL_GP2X: Screen bucket 0x4167ec
SDL_GP2X: First free bucket 0x4174f8 (size = 5085184)
SDL_GP2X: Freeing cursor 0x4174e0
SDL_GP2X: SurfaceManager freeing 256 bytes @ 0x40035800 from bucket 0x417208
SDL_GP2X: merging with next bucket (0x4174f8) making 5085440 bytes
SDL_GP2X: Creating cursor 16x16
SDL_GP2X: Allocated WMcursor @ 0x417208 (32)
SDL_GP2X: SurfaceManager allocating 256 bytes


Y el segmentation fault.

El test 16 es más raro: a mano (con los comandos por telnet) me da error al compilar y el GBDI se queja de versión del DCB incompatible.
Así que fui al método tradicional de ejecutar el .gpe (en serio, no sé qué pasa en mi PC que nunca sé cuando está usando el firm oficial y cuando el open2x). El mismo error en BGDC y BGDI:
bgdc: error while loading shared libraries: libcrypto.so.0.9.8: cannot open shared object file: No such file or directory
Y que conste que sí existe.
Probé a quitar la línea LD_PRELOAD (que por cierto, está mal escrita, pues referencia a una carpeta, no a un fichero) y obtuve dos errores distintos:
bgdc: error while loading shared libraries: libcrypto.so.0.9.8: cannot open shared object file: No such file or directory
bgdi: error while loading shared libraries: libbgdrtm.so: cannot open shared object file: No such file or directory


Pero lo dicho, no haría demasiado caso a estas pruebas por el tema del firm.

estas pruebas las hiciste con la version dinamica?

el preload debe referenciar al archivo libc.so especial, y el ld_library_path debe seguir estando.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Sí, esta última versión es dinámica, y sí, he entendido el concepto de LD_PRELOAD: es una variable que indica que debe cargarse esas librerías antes de ejecutar, de forma que, cuando el programa necesite la del sistema, vea que ya está "cargada", aunque no sea la del sistema. Digamos que se le miente.
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

por que hay 2 hilos hablando de lo mismo?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Quote from: SplinterGU on January 20, 2011, 10:48:26 PM
por que hay 2 hilos hablando de lo mismo?

Quote from: Drumpi on January 18, 2011, 08:07:31 PM
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...).

Pues eso, que son dos versiones distintas, con dos métodos de trabajo totalmente distintos y con un nivel de conocimientos radicalmente distintos ;D
XCelso sabe del tema, yo me muevo por intuición. Él está más cerca que yo de sacar una versión estable y rápida, yo tengo una muy buena versión con limitaciones de soft.
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

probad esto, pliss:

test17
compilado con la última versión de svn, que engancha con libdes.
no es monolítica.
modificado el script para que enganche con todas las libs de gcc4 que pide bgd,

Si esto no funciona, que dios nos coja confesaos :D.

http://www.mediafire.com/?e3a3og1u2gq3vmj
Monstruos Diabólicos

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

SplinterGU

no entiendo... como que no es monolitica?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Por la misma razón por la que Bennu dividió Fenix en módulos :D

Hombre, yo se lo dije a XCelso, que una versión en módulos es mejor, porque así se le puede añadir módulos no oficiales y demás. Pero vamos, es mi opinión. Sus razones no las conozco ^^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)

Kloppix

Quote from: DCelso on January 21, 2011, 03:03:59 AM
probad esto, pliss:

test17
compilado con la última versión de svn, que engancha con libdes.
no es monolítica.
modificado el script para que enganche con todas las libs de gcc4 que pide bgd,

Si esto no funciona, que dios nos coja confesaos :D.

http://www.mediafire.com/?e3a3og1u2gq3vmj


En lo que ejecuté el script (bgd-nim.gpe) la consola me devolvió al menú. Lo volví a ejecutar con un emulador de terminal para ver la salida y me encontré con esto:

basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libc.so.6)
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libdl.so.2)
basename: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libpthread.so.0)
sync: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libc.so.6)
sync: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libdl.so.2)
sync: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ../bgd-runtime/libpthread.so.0)

Por curiosidad traté de ejecutar el .dcb diréctamente. No funcionó en la gp2x aunque si en la PC.