PDA

Ver la versión completa : ¿Cual es el FPG más grande que se puede cargar?



Drumpi
16/01/2008, 18:14
Hola a todos:
Hace ya unas semanas que tengo medio preparado algo para la negrita (no os hagais muchas ilusiones, no soy tan bueno programando/dibujando) y no he podido subirlo por unos problemillas ue he enido con el pc, y ahora encima se me echan encima los exámenes.
La cosa es que he estado probando "eso" en la negrita, el port funciona bien, pero en un momento dado se debe cargar un FPG de 27MB. Yo pensé que tardaría bastante en cargar, pero con más de 5 minutos de espera debería haber sido suficiente, o sea, que creo que se cuelga ¿no?
¿Cuanto es el FPG más grande que habeis podido cargar?

por cierto, no me hagais mucho caso aun pero ¿map_exists os funciona bien o de vez en cuando dice que no existe un archivo cuando teneis las imágenes con ids "a saltos" (faltan las imágenes 3, 5, 6... y obviamente no haceis referencia a ellas)?

Puck2099
16/01/2008, 19:16
Hombre, 27 MB es algo muy burro teniendo en cuenta que Fenix solo usa 32 MB de RAM a repartir con el SO...

Quizá en la próxima versión haga algo para usar la memoria "superior", pero por ahora el límite fijo que está por debajo de esos 27 MB.

loixartx
16/01/2008, 19:23
que has metido en esos 27 megas?? :D

Darumo
16/01/2008, 22:32
27mb?, te has pasado un poco, deberias optimizar un poco, no se como te la has apañado para necesitar tantos datos graficos de una estocada, mira a ver si puedes dividirlo en unas cuantas partes segun el uso de esos graficos.

Si era para hacer algun tipo de animacion/video encuentra otra forma que tener todas las imagenes en RAM, como leerlas de la tarjeta directamente (aunque sea mas lento) o hacer coincidir escenas paradas con la carga del siguiente FPG, o alguna otra forma. (ahi entra el ingenio de cada uno)

Drumpi
18/01/2008, 04:20
Bueno, es cierto que tendría que haber optimizado más, pero era un proyecto de menos de un mes y... ^^U
Precisamente lo que estoy haciendo es dividir el fpg en varios, pero no es fácil cuando sólo se puede cargar uno (restricciones de ese "algo"), y me empieza a dar el problema de que no se encuentra el mapa. De hecho estaría ya casi colgado de no ser por esto... y por romperse el pc, por empezar con los exámenes... :P
De todas formas, creía que ya se había solucionado el tema de los 64MB. Además, aunque Fenix soporta la compresion gzip, los fpg y los map los guarda en memoria descomprimidos, sumadle que "esto" se diseñó inicialmente para PC y que estoy haciendo una "adaptación rápida" hasta que me ponga con la siguiente versión. Por aportar algo, vamos.

Darumo
18/01/2008, 15:46
el de GP2x tiene la limitacion de un FPG en RAM?...

Drumpi
18/01/2008, 17:00
Fenix no, con Fenix puedes cargar todos los fpgs que quieras. Mi "eso" sólo permite cargar uno, pero solo tiene que ver con fénix que está programado con él ^^U

Drumpi
31/01/2008, 22:52
Solo por curiosidad ¿cuanta memoria RAM queda libre despues de arrancar? (aun no tengo el telnet funcional para mirarlo :()

chipan
01/02/2008, 00:09
No funciona la funcion de memoria libre de fenix?

Drumpi
01/02/2008, 15:28
Si, debe hacerlo, pero no puedo llamarla porque aun no he preparado la conectividad PC-GP2X (aun ando instalando cosas desde que actualicé el pc hace nada).
¿Cual es el comando? a ver si con el sterm saco algo :/

Zizti
01/02/2008, 15:39
que enigma :gatito:

Puck2099
08/02/2008, 15:59
Solo por curiosidad ¿cuanta memoria RAM queda libre despues de arrancar? (aun no tengo el telnet funcional para mirarlo :()

Hola,

Ahora que he acabado los exámenes acabo de desempolvar la GP2X...

Aunque tarde, aquí tienes lo que pedías:


[root@gp2x root]$free
total used free shared buffers
Mem: 30880 10008 20872 0 128
Swap: 0 0 0
Total: 30880 10008 20872


Saludos

chipan
08/02/2008, 16:42
Yo a lo que me refiero es que en el fenix hay una variable global llamada memory_free que puedes mostrar en pantalla al ejecutar el juego con la funcion write int.

write_int(0,0,0,0,OFFSET memory_free); mostraría la memoria libre que te queda en la esquina superior izquierda de la pantalla.
Y si quieres saber la memoria total que ve el fenix; usa la variable memory_total en lugar de memory_free.

Puedes sustituir la palabra OFFSET por un &

Drumpi
09/02/2008, 22:38
Perdón por no responder antes, pero ya se sabe, los exámenes... ^^U
Lo cierto es que teneis razón, no he probado con los comandos de Fenix (galleta para mi).
Y probé a conectar la consola al PC pero no puedo porque los drivers para la red por USB no sirven para wxp64 :'(
Así que recurrí a la alternativa: sterm, que me dio un total de 17MB libres. Supongo que la diferencia con los datos de Puck se deberá a la carga del sterm. Perdon por no decirlo antes de nuevo (otra galleta).

En fin, el caso es que ya he dividido el fpg y el más grande ronda los 8MB, pero sigo teniendo problemas de cuelgues. Esta vez es al cargar un segundo FPG, y os aseguro que sumados no alcanzan los 12MB, así que sigo mirando.
Si arreglo eso, y un pequeño conflicto que tengo entre size_x/size_y y size... y añado las músicas, ya podré publicar "esto".
¿Por curiosidad no conoceréis un programa que pase de MIDI a IT sincronizando los patterns? el ModPlug más o menos convierte bien, pero la música ocupa el espacio que le da la gana en los patterns (5/7, 6/4... vamos, que no puedo usar la capacidad de repetir patterns para ahorrar espacio o para hacer bucles)

OscarBraindeaD
10/02/2008, 10:09
Esta vez es al cargar un segundo FPG, y os aseguro que sumados no alcanzan los 12MB, así que sigo mirando.

Hola,
no me hagas mucho caso, pero al menos en la versión PC -creo haber leído por ahí- que los FPGs tienen cierta compresión y éstos se descomprimen en RAM una vez cargados. Ya te digo que es algo que me suena haber leído, pero puedo estar equivocado, Puck lo sabrá seguro.

Salud

Puck2099
10/02/2008, 13:09
Como comenta OscarBraindeaD, yo creo que dentro de los FPG están los gráficos en formato PNG o alguno similar comprimido, ¿no?

Lógicamente eso hay que descomprimirlo en memoria para poder usarlo...

Drumpi
10/02/2008, 17:57
No, el formato interno de los gráficos en un fpg es el formato MAP, podeis verlo en el wiki (http://fenixworld.se32.com/fenixwiki/index.php?title=Categor%C3%ADa:Formatos_de_fichero )
Básicamente guarda la paleta en caso de ser de 8 bits, y a continuación los datos sin comprimir (1B por pixel en 8bits, y 2B por pixel en 16 bits en formato 5,5,5,1 creo que era). Como en DIV2... pero con soporte 16bits.
Sin embargo, Fenix soporta compresión gzip, y se pueden comprimir mediante este algoritmo y usarse de forma transparente.
Y no, no tengo los gráficos comprimidos (y lo se porque el FPGEdit me deja comprimirlos), incuso para ahorrar espacio he puesto el segundo fpg en formato 8bits, pero incluso a 16bits sin compresión no llego a los 12MB.

Voy a comprobarlo una vez más, pero estoy un 80% seguro de que estan sin compresión.

Drumpi
18/02/2008, 22:12
Bueno, pues ahora que he terminado los exámenes, me he puesto de nuevo con "eso", y seguimos con lo mismo.
He comprobado que los gráficos no están comprimidos, así que por eso no es, sin embargo la memoria hace "cosas raras". He probado con la funcion memory_free y me da unos valores bajísimos, del orden de 850KB libres, habiendo cargado un fpg de 7.59MB, incluso con otro de 5.72MB da lo mismo. Pero es que la memoria sube y baja en función de lo que se vea en pantalla (y el número de procesos es el mismo todo el rato, solo cambio su graph.
El caso es que he hecho un say tras la carga y descarga de cada recurso y esto es lo que me sale (entre paréntesis pongo los datos importantes):

Using mmuhack.o
Patching MMU ... OK!
Inicio: 18400
***** cargado: 18220
GRAFICOS cargados: 780 (FPG de 1.31MB)
MUSICA cargada: 852 (IT de 246KB)
GRAFICOS descargados: 2128
GRAFICOS cargados: 756 (el mismo de antes, descargándolo previamente)
MUSICA descargada: 716
GRAFICOS descargados: 2068
TEXTO cargado: 2068 (un simple fopen)
ANIMACION cargada: 844 (FPG de 1.27MB)
ANIMACION descargada: 1860
GRAFICOS cargados: 740 (FPG de 1.94MB)
GRAFICOS descargados: 2412
GRAFICOS cargados: 832 (FPG de 5.72MB)
GRAFICOS descargados: 6092
GRAFICOS cargados: 852 (FPG de 7.59MB
TEXTO descargado: 856
TEXTO cargado: 856
TEXTO descargado: 852
TEXTO cargado: 852

Se que las cifras son orientativas, pero tanto la función de Fénix como el telnet me dan resultados parecidos, y aun así es que no tiene sentido ¿Alguna idea?

Drumpi
21/02/2008, 21:10
He seguido haciendo pruebas y parece ser que todos los valores tienen sentido... salvo la caida de memoria de 18MB a 800KB tras cargar el primer fpg. Tengo que mirar una cosa más que se me ha ocurrido ahora, pero todo parece indicar que al inicializar la parte gráfica se reservan muchísimos recursos (y a los datos os remito).
Yo por mi parte he optimizado bastante el código, arañando algunos KB eliminando procesos inactivos (lo cual repercutirá ligeramente en la velocidad al tener que volver a crearlos en su momento) y ahora el segundo FPG lo carga aleatoriamente, así que seguiré recolocando gráficos si puedo (porque puede que al cargar un fpg en mitad del desarrollo aparezca una pantalla negra durante unas décimas de segundo).
Hay que ver, que si no fuera por esto ya estaría con el apartado sonoro :D

Drumpi
27/02/2008, 17:03
Nada, que he seguido trabajándolo y cada vez lo entiendo menos ^^U
Al principio cargo los recursos y cuando sale el primer gráfico la memoria libre se queda en 1200KB, pero en cuanto sale el segundo baja a 800KB, y no he cargado nada nuevo.
El primer gráfico sólo tiene dos colores (es una advertencia), pero es de 16bits, mientras que el segundo es un logo, más pequeño pero con colores, así que parece que internamente hace algo que va ocupando y liberando espacio (supongo que serán esas surfaces de las que se hablan en el salida.txt).
Bueno, sigo optimizando, tanto por código como por gráficos (muy lento pero avanzando ^^U), ya puedo ejecutar "eso" más lejos, pero aun le queda camino hasta llegar al final. Seguiré informando.