BennuGD Android

Started by gecko, March 08, 2010, 01:59:34 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

#165
Quote from: josebita on September 18, 2011, 11:13:49 AM
He encontrado que la causa del crash en Android está en la implementación que he hecho de SDL_RWops y, en particular, el crash se da en la función dcb_load. Tendré que mirar mi implementación pero los recursos ya empiezan a cargarse directamente desde el APK.
Además he encontrado la forma de cambiar el nombre mostrado de la aplicación (no así su identificador, eso tendré que mirarlo) y su icono.
Es una chorradilla, pero imagino que a algunos les gustará verlo:


ahh, joseba, si el apk es un comprimido, dudo que te sirva para leer de ahi dentro dcb... hacer seek dentro de comprimidos por lo general solo es posible con seeks hacie adelante... quizas es sea el problema...

y menos si el dcb esta en mochila, por eso es que los recursos de mochila no van comprimidos...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

#166


Quote from: FreeYourMind on September 18, 2011, 12:13:42 PM
El cambio de nombre ya lo habia hecho yo en mis pruebas, pero como lo sigues tu ni te dijé nada.
A ver cuando puedes sacar otra release para poder probarlo.
Thanks, karma up.
Hombre, cuéntame todo lo que vayas encontrando :) Lo próximo que me gustaría saber es cómo cambiar el identificador del paquete. Ahora mismo es "org.libsdl.app" o algo así. Me harías un gran favor si me indagaras cómo cambiar eso por lo que yo quiera...

Quote from: SplinterGU on September 18, 2011, 01:46:26 PM
Quote from: josebita on September 18, 2011, 11:13:49 AM
He encontrado que la causa del crash en Android está en la implementación que he hecho de SDL_RWops y, en particular, el crash se da en la función dcb_load. Tendré que mirar mi implementación pero los recursos ya empiezan a cargarse directamente desde el APK.
Además he encontrado la forma de cambiar el nombre mostrado de la aplicación (no así su identificador, eso tendré que mirarlo) y su icono.
Es una chorradilla, pero imagino que a algunos les gustará verlo:


ahh, joseba, si el apk es un comprimido, dudo que te sirva para leer de ahi dentro dcb... hacer seek dentro de comprimidos por lo general solo es posible con seeks hacie adelante... quizas es sea el problema...

y menos si el dcb esta en mochila, por eso es que los recursos de mochila no van comprimidos...
Pues la verdad es que no lo sé. Hay un par de funciones estándar (fgets, por ejemplo) que no están implementadas directamente en SDL_RWops y tuve que copiarlas de la parte de los Xfiles de bennu, imagino que ahí rompí algo.


De todas formas, veo dos cosas un poco contrapuestas:

       
  • Por un lado SDL 1.3 dice que no se puede hacer seeking hacia atrás también e implementa el seeking hacia atrás de una forma un poco chapuzas: cierra el fichero dentro del comprimido, lo vuelve a abrir y hace seeking hacia delante.
  • Por otro, en la documentación de Android veo que la clase AssetManager (entiendo que es la que se está mapeando, ¿no?... no tengo ni idea de java) está diseñada para funcionar como un sistema de ficheros corriente, de forma que permite hacer seeking atrás y adelante de forma nativa. Al menos eso entiendo...
Insisto en que tendré que mirarlo porque lo primero que voy a tratar de buscar es el punto en el que rompe la aplicación porque me huelo que es problema del código que metí, que está sin comprobar, pero gracias por la información porque la verdad es que no lo sabía...


[Edito] He preguntado en los foros de SDL y he procurado poner toda la cara de tonto que he sabido, a ver qué cuentan...

FreeYourMind

Tienes que cambiar el nombre en las rutas, clases y proyecto.

josebita

Quote from: FreeYourMind on September 18, 2011, 02:48:29 PM
Tienes que cambiar el nombre en las rutas, clases y proyecto.
Ok, lo miraré. Mil gracias :)

SplinterGU

si, el seeking hacia atras en comprimidos se hace asi... abriendo el archivo de nuevo y haciendo seeking hacia adelante... el seeking hacia adelante no es mas que lectura de toda la data comprimida, descartando los bytes anteriores al offset que se quiere hacer el seek... imaginate que si hay que hacer muchos seeks hacia atras esto se hace super pesado...

si vos decis que ya lo contempla, entonces el error no viene por ahi...

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on September 18, 2011, 04:00:20 PM
si, el seeking hacia atras en comprimidos se hace asi...
No tenía ni idea, la verdad :)

Drumpi

Pues yo voy dando un karma up mientras me decido por comprar o no un móvil con android (es que son carísimos y apenas lo usaría para llamar ^^U).
Ánimo, josebita :)
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

Quote from: Drumpi on September 18, 2011, 04:52:18 PM
Pues yo voy dando un karma up mientras me decido por comprar o no un móvil con android (es que son carísimos y apenas lo usaría para llamar ^^U).
Ánimo, josebita :)
¡Coño! ¿También valen pa llamar? Pues entonces tiro el nokia....

SplinterGU

Quote from: josebita on September 18, 2011, 04:31:39 PM
Quote from: SplinterGU on September 18, 2011, 04:00:20 PM
si, el seeking hacia atras en comprimidos se hace asi...
No tenía ni idea, la verdad :)

en realidad esto no es algo propio de SDL_Rows... es una limitacion logica de cualquier sistema de compresion... pensemos que en un comprimido no sabes realmente donde esta cada offset sino hasta que lo descomprimimos... para dar un ejemplo claro, un bloque de 100 bytes comprimidos podria ocupar unos 10bytes, 5bytes, 70bytes o cualquier tamaño, todo depende de los datos que se comprima y del algoritmo, por ende no podriamos saber que parte del comprimido corresponde por ejemplo, al offset 33 (descomprimido) a menos que descomprimamos los 100bytes... por ende el seek no es una caracteristica de ningun sistema de compresion... a menos, claro esta que descomprimamos toda la data hasta el seek (siempre hacia delante) que querramos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

#174
Splinter, yo diría que he encontrado la causa del crash para android. Se da en la línea 519 de core/bgdrtm/src/dcbr.c al hacer la llamada a file_read.
El valor de sdcb.Params (tamaño a leer del fichero) es 1106106528 bytes y android flipa, claro.
¿Alguna idea de por qué puede estar pasando? Yo sigo investigando a ver si doy con la causa.


[Edito] ¿Qué hace exactamente ese bucle for?
[Edito2] Buff, SDL está fallando en la lectura del fichero desde muchas llamadas antes que esa, voy a investigar a ver qué he hecho...

KeoH

Quote from: josebita on September 21, 2011, 12:21:43 PM
Splinter, yo diría que he encontrado la causa del crash para android. Se da en la línea 519 de core/bgdrtm/src/dcbr.c al hacer la llamada a file_read.
El valor de sdcb.Params (tamaño a leer del fichero) es 1106106528 bytes y android flipa, claro.
¿Alguna idea de por qué puede estar pasando? Yo sigo investigando a ver si doy con la causa.


[Edito] ¿Qué hace exactamente ese bucle for?
[Edito2] Buff, SDL está fallando en la lectura del fichero desde muchas llamadas antes que esa, voy a investigar a ver qué he hecho...

Como sigas tocando ahí te va a salir ardiendo el cacharro xDDDD

FreeYourMind

Como no va flipar con mas de 1 giga de datos xD

josebita


FreeYourMind

Por casualidad encuentro esta esplendida pagina, donde HTC pone el src de los kernels de sus moviles (que son los mas guapos), a disposición de todos :)

http://htcdev.com/devcenter/downloads

Un BennuGD de serie estaria bien  ;D

josebita

Por pedir que no quede... :)

A ver si saco un par de días para dedicárselos al port y lo dejo mediofuncionando para android ya...