Portando proyecto Montezuma a PiXTudio

Started by Drumpi, January 10, 2016, 02:10:43 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

josebita

Quote from: Drumpi on February 07, 2016, 06:08:20 PM
Otra cosa: veo que se va a eliminar el flag 4, pero ¿El flag 4 (transparencia) no era más rápido que usar alpha = 128?
Para PixTudio es indiferente usar flags=4 o alpha=128

Lo otro no lo sé sin mirar el ejemplo: mira cómo se comporta Bennu: no creo haber cambiado nada a posta en ese sentido.

Drumpi

Confirmado: Bennu también da -1 si en modo 32bits se usa RGB(255,255,255) en lugar de RGB(255,255,255,16). ¿Te lo anoto como mejora en el bugtracker?

También está lo de las fuentes, que quedan ocultas por los gráficos, creo. Tendría que hacer una prueba pero me da pereza :P Nah, si tengo un rato te lo miro, pero supongo que en cuanto se solucione lo de las transparencias en los gráficos de 16 bits se arreglará... eso espero ;)
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

Vale, tras dos horas de pruebas y más pruebas he llegado a la conclusión de que... a las fuentes no les pasa nada, es que simplemente estaba usando una fuente de 8bits ^^U He estado buscando por el disco duro una fuente de 1 bit o de 16 bits que pudiera usar (creía haber guardado la fuente del sistema de Fenix, pero creo haberla encontrado sólo en 8bits) y, eureka, ya funciona.
Ya sólo me falta sustituir los flags = 4 en las imágenes que usan transparencia y ya estará, por lo visto, totalmente portado, a falta de una intensiva batería de pruebas. De momento parece que la lista de strings, que es la parte más crítica, porque usa punteros a nodos que contienen strings, que no son muy estables, funciona bien. Y la lectura de ficheros, con ciertas operaciones a nivel de bits, la búsqueda de ficheros en las carpetas... (nota mental: probar el control con mandos USB, que debería funcionar).

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

rgb(255,255,255) = blanco solido = RGBA(255,255,255,255) = -1

drumpi es correcto que de ese valor
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Pues te tengo que mirar qué valor me devuelve RGB(255,0,0), porque en 16bits me pinta cierto cursor (un cuadrado) de color rojo, pero en PiXTudio me lo deja de color negro.

Por cierto, me temo que el fallo que tengo con el mapa 1001 (http://forum.bennugd.org/index.php?topic=4172.0) se me está reproduciendo en PixTudio. He intentado reproducirlo pero me ha sido imposible. He mirado mi código pero no he visto ningún fallo ni indicio de error, y no quiero ni pensar que sea un puntero mal colocado o un efecto secundario de mi lista de STRINGs.
Voy a seguir mirando, pero si alguien tiene tiempo y curiosidad por verlo, se lo puedo mandar por privado (prometo que esta vez el código está mucho mejor estructurado que con el Echo, con subcarpetas y todo :D).
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

Si alcanzas algo aislando el bug, avisa y lo reviso.

Drumpi

Lo que me queda por hacer es clonar el proyecto e ir eliminando ficheros de código hasta que quede reducido al editor que me está dando problemas.
En el peor de los casos se quedaría como está, y en ejecución se reduciría a tres procesos en bucle y una veintena de funciones que se ejecutan para generar mapas y listas en memoria, buscar ficheros y cargar la configuración del programa.
En el mejor de los casos, habrá unos diez ficheros de código y habría que depurar en ejecución. Sé la línea exacta donde no se modifica el gráfico, pero no sé si el problema viene de antes o de ahí.

Sé que le estoy dando mil vueltas, pero con el bug de Splinter en el renderer, el que no encontraba, por ahí suelto, y que hizo inestables las últimas releases de Bennu, lo mismo he dado con algo y no quiero descartarlo... y es en parte el mismo bug que tenía con Fenix antes del port a BennuGD, pero Fenix 0.84 era demasiado inestable para que sea el mismo problema.
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 February 16, 2016, 01:04:49 AM
Lo que me queda por hacer es clonar el proyecto e ir eliminando ficheros de código hasta que quede reducido al editor que me está dando problemas.
En el peor de los casos se quedaría como está, y en ejecución se reduciría a tres procesos en bucle y una veintena de funciones que se ejecutan para generar mapas y listas en memoria, buscar ficheros y cargar la configuración del programa.
En el mejor de los casos, habrá unos diez ficheros de código y habría que depurar en ejecución. Sé la línea exacta donde no se modifica el gráfico, pero no sé si el problema viene de antes o de ahí.

Sé que le estoy dando mil vueltas, pero con el bug de Splinter en el renderer, el que no encontraba, por ahí suelto, y que hizo inestables las últimas releases de Bennu, lo mismo he dado con algo y no quiero descartarlo... y es en parte el mismo bug que tenía con Fenix antes del port a BennuGD, pero Fenix 0.84 era demasiado inestable para que sea el mismo problema.
Mil gracias por mirarlo, hombre :)

josebita

Por cierto, me alegro de que ya esté funcionando :) .
Te puedo exportar la fuente del sistema en 32bpp, si quieres. Me da la impresión de que ha perdido algo de calidad, pero bueno, ya lo arreglaremos :)

Drumpi

He intentado reducirlo lo máximo posible, pero me han quedado 38 ficheros de código (por suerte, la mitad ni vas a tener que mirarlos, y de los restantes, un tercio son de declaración de tipos y variables, con extensión .h).
De todas formas, te he incluido un txt con los pasos a seguir para probar el programa y reproducir el fallo, y una explicación del código hacia donde se hace la llamada de pintado en el mapa, con números de línea y todo. Espero que sea suficiente para llegar a la raiz del problema. Ya digo, sin acceso al buffer de la imágen o a un sistema de trace con el código fuente de Bennu/PiXTudio, no puedo hacer más.

Dime dónde te mando el fichero, son unos 150KB nada más, pero no sé si es buena idea subirlo al foro.
Otra cosa, si encuentras el fallo, lo mismo es aplicable a BennuGD, creo que el código es compatible y repite el mismo error, así que ten al tanto a Splinter de los hallazgos.

Por cierto, sí, sí que se ha perdido calidad en la fuente del sistema :D . Al menos en 16bits la mitad de los pixels son "grises". Yo tengo la fuente del sistema, pero no sé si la tengo a 8bits o a 16bits. La de 8bits no se ve en PiXtudio (aun) y la de 16bits no me la carga... pero claro, los conversores de fuentes que tengo no funciona ninguno ^^U He usado otra fuente que tenía por ahí de 16bits. No se ajusta a los gráficos, pero por lo menos sirve para testear.
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 February 16, 2016, 07:12:48 PM
He intentado reducirlo lo máximo posible, pero me han quedado 38 ficheros de código (por suerte, la mitad ni vas a tener que mirarlos, y de los restantes, un tercio son de declaración de tipos y variables, con extensión .h).
De todas formas, te he incluido un txt con los pasos a seguir para probar el programa y reproducir el fallo, y una explicación del código hacia donde se hace la llamada de pintado en el mapa, con números de línea y todo. Espero que sea suficiente para llegar a la raiz del problema. Ya digo, sin acceso al buffer de la imágen o a un sistema de trace con el código fuente de Bennu/PiXTudio, no puedo hacer más.

Dime dónde te mando el fichero, son unos 150KB nada más, pero no sé si es buena idea subirlo al foro.
Otra cosa, si encuentras el fallo, lo mismo es aplicable a BennuGD, creo que el código es compatible y repite el mismo error, así que ten al tanto a Splinter de los hallazgos.

Por cierto, sí, sí que se ha perdido calidad en la fuente del sistema :D . Al menos en 16bits la mitad de los pixels son "grises". Yo tengo la fuente del sistema, pero no sé si la tengo a 8bits o a 16bits. La de 8bits no se ve en PiXtudio (aun) y la de 16bits no me la carga... pero claro, los conversores de fuentes que tengo no funciona ninguno ^^U He usado otra fuente que tenía por ahí de 16bits. No se ajusta a los gráficos, pero por lo menos sirve para testear.
Tengo pensado cambiar la fuente del sistema de PixTudio a una monoespaciada de 32bits, ahora que las puedo renderizar bonicas.

Mándame el paquete a josebaPUNTOgar ___ARROBA___ gmailPTOcom (yo creo que no hacía esto desde 2008)

Drumpi

Okis, ya te lo he mandado. Ya me contarás si ves algo.
Por cierto, te he tenido que quitar los ficheros .bat para compilar y ejecutar porque no me deja el servidor de correo. Te lo escribo aquí:
set PIXTUDIOROOT=c:/Pixtudio
set VERSION=pixtudio-beta20160126
set JUEGO=montezuma
set PATH=%PIXTUDIOROOT%/binarios/%VERSION%/;%PATH%
pxtb -g %JUEGO%.prg
pxtp %JUEGO%.dcb



¿2008 sin mandar un email? ¿en qué siglo vives? :D :D :D
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

Desde 2008 sin poner mi dirección en público con ARRIBA y cosas así, hombre :D

Drumpi

Buenas noticias.
Solucionado el "problema" del mapa 1001 (tan sencillo como borrar los mapas 1001 de los FPGs, ¡¡ojo al usar FPGEditor!!), he vuelto a probar y el "juego" funciona de lujo, exactamente igual que en Bennu (salvo el tema de que los gráficos en 16bits no tienen transparencias y que la fuente usada es diferente). Tendría que hacerle un test de rendimiento para comparar cuál es más rápido, pero en principio parece qe no hay nada roto: la asignación de punteros va bien, el paso de parámetros en ambos sentidos funciona, la lectura de ficheros es correcta en casi todas sus funciones (LOAD/SAVE y FOPEN/FREAD/FWRITE/FCLOSE, no he probado más), la lista de strings no se ha quejado ni una vez, el motor de scroll tileado y de detección de durezas tileadas funciona a la perfección...

Si te hace falta el código completo para probar, o quieres que testee nuevas versiones, no dudes en pedírmelo.
Nota mental: probar la última revisión con el "heissenbug".
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