[Bennu Module] mod_expand

Started by FreeYourMind, March 11, 2010, 10:39:28 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FreeYourMind

Lo se, si mejoró alguna de las mias tambien dejarán de ser repes :)

Lo que tiene que hacer DCElso, es cuando saque la version oficial la renombre a por ejemplo version 0.9, ya que la otra era la 0.8.

Drumpi

Y cuando saque los fuentes, probaré a ver qué tal va en GP2X, lo mismo lo uso para la portada del Echo, ahora que no tengo restricciones de librerías ni nada :D :D :D
Que por cierto, menuda frikada se me acaba de ocurrir con la VSE, lástima no tener tiempo ^^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)

FreeYourMind

Buenas, llevo peleandome un rato con el expand, y tengo unas cosas que me han desilusionado:

1 - Parece que no funcionan dos llamadas al expand en el mismo loop (cada una a distinta imagen), me pilla sólo el ultimo...

2- No utiliza variable z de profundidad, funciona exactamente como el put_screen, o sea, el primero que se ponga tendrá mayor profundidad z.

3 - Si pongo un mapa por ejemplo con esta funcion, en el mismo loop del expand, o del put_screen (es lo mismo como ya dijé, usar uno o otro, el problema con z es el mismo):

PROCESS por_graph(file, x, y, graph, size, angle, flags, z)
BEGIN
    FRAME;
END

la variable z no me sirve de nada, el gráfico va estar siempre por encima del gráfico del expand o del put_screen llame antes o despues el expand/put_screen.

Ayuda please, se puede controlar la z de un put_screen ? Ni que tenga que hacer una nueva version del expand por si se puede, ni que sea internamente...

Drumpi

No he usado la expand, pero ¿no se puede hacer el "render" de dos imágenes  sobre mapas distintos? así controlarías la Z con un proceso cada uno. La VSE permite renderizar sobre un mapa (de hecho, se recomienda crear uno) y si haces varios puedes tener varios voxels, rotarlos, agrandarlos, y todo lo que se puede hacer con variables locales.
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

#34
Es lo que he dicho, el render es sobre 2 imagenes distintas y sólo sale la ultima llamada (en vse tambien tiene el expand, me imagino que tambien fallara).

Pero son 2 problemas distintos, a ver si no los mezclamos :), uno es renderizar 2 imagenes y otra el el tema de las z, para este ultimo olvidate del expand, imagina que estamos hablando de un put_screen, como pondrias una imagen debajo de la que creaste con put_screen ? Es que despues quiero jugar con las propiedades de esa imagen que tenga debajo. O otra pregunta, si hago el put_screen en un proceso aparte y llamo el pintar la imagen que quiero debajo con el proceso 'por_graph' ya se podria controlar la z del put_screen ?

Drumpi

El put_screen es una función que pinta sobre el fondo de pantalla, por lo que debes pintar en el orden correspondiente. Es más, a cada frame deberías hacer un clear_screen o se quedará la imagen anterior.
Quizás te convenga usar mejor la map_put o map_xput sobre el mapa 0 de la librería 0, correspondiente al propio fondo de pantalla, y ahi creo que si puedes asignar Z (y angle, y size, y flags...).

Y creo que la expand no tiene ese problema en VSE, porque creo recordar que en el ejemplo 6 se deforman las 6 caras de un cubo sin problemas.
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

He compilado este modulo para la Wiz, utilizando codeblocks y el SDK Oficial, configurado para tirar del compilador ARM.

Genero una dll dinamica, y le pongo el nombre 'mod_expand.so', la pongo en la carpeta runtime.
No me esta funcionando, al compilar en la Wiz no me reconoce las funciones del modulo y sale del programa (he visto en el log que es esta la causa). Importar el modulo no da error, sólo da error si llamo funciones suyas.

Alguna sugerencia ?

SplinterGU

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

FreeYourMind

Sin fuentes !!? Pero no los tienes aqui ? Estoy hablando de la compilación, no he tocado una línea de código, todo el código que usa es portable....

SplinterGU

no los veo aqui... pasame el link, por favor, si tu los ves...

a lo que voy es que quizas hay algo mal en la definicion de las funciones, ya he visto en algunos modulos donde cambiaban los parametros (tipos y/o cantidades)... no quiero dar nombres... :D
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Aqui tienes, codigo + compilado wiz.

SplinterGU

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

FreeYourMind

No uso makefiles.....
Utilizo la configuración del sdk oficial, eso te genera código valido para la consola (por lo menos ejecutables).

La unica diferencia es que en lugar de elegir console aplication, elijo dynamic library (la extensión so, se la pongo yo, pero he mirado con decimal, y tanto las oficiales como esta, es un ELF, me imagino que tiene que ser valido tambien...).

Te pongo las pantallas de conf.




SplinterGU

pense que usabas el toolchains de gcc... pero dudo que te funcione, porque me parece que compilan contra diferentes librerias e incluso pueden tener diferente ABI... la verdad que ahi no te puedo ayudar...

el fuente en C parece estar bien. por lo menos los prototipos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Buenas, afinal ya tenia los logs en el script, ni me acordaba.
He vuelto a probar.

2 situaciones (el modulo expand se encuentra en la carpeta runtime y el import tiene su nombre):

1 - Compilar en la Wiz:

#!/bin/sh
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../bgd-runtime
PATH=$PATH:../bgd-runtime
echo 2 > /proc/cpu/alignment
bgdc ExpandDemo.prg 1>stdout1.txt 2>stderror1.txt
bgdi ExpandDemo.dcb 1>stdout3.txt 2>stderror4.txt
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu

No genera el dcb, stdout1.txt 2>stderror1.txt vacios

2 - Compilar en el PC, y ejecutado en la Wiz:

#!/bin/sh
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../bgd-runtime
PATH=$PATH:../bgd-runtime
echo 2 > /proc/cpu/alignment
bgdi ExpandDemo.dcb 1>stdout3.txt 2>stderror4.txt
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu

stderror4.txt --> Segmentation fault