Put_screen y PNGs

Started by Drumpi, June 12, 2016, 05:10:19 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Drumpi

Hola a todos:

Pues nada, ya sabeis que me he puesto a reescribir el Echo, a ponerlo más ordenadito, y me ha pasado algo curioso con sólo cambiar la versión de Bennu.
Hasta ahora, el Echo se compilaba con la r131 y la r201 (es bastante viejo el código ¿no? :D). Hoy la he puesto con la r307 y los logos se me han vuelto locos.

Antes tenía este código:
temp = load_png(lp_logo);
put_screen(0, temp);


Y con eso el logotipo se centraba en la pantalla y listo. Cuando le he metido la r307 el logo se me ha dibujado centrando el pixel (0,0), es decir, se había movido media imágen a la derecha y media imágen hacia abajo. He intentado hacer:
temp = load_png(lp_logo);
set_center(0, temp, graphic_info(0, temp, G_WIDTH) / 2, graphic_info(0, temp, G_HEIGHT) / 2);
put_screen(0, temp);


Y se me sigue yendo a la derecha y abajo. ¿Es algún tipo de bug o algo que no he visto?
He probado diversos set_center, pero sigue igual. Sólo me queda por comprobar si tiene algo que ver el set_mode, pero ahora mismo no sé en qué fichero está localizado. Mientras usaré alguna función PUT.
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

creo que put_screen quedo con que se pone en 0,0 sin importar el centro (en el ultimo bennugd liberado)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Pues a mi se me pone en el centro de la pantalla... Es decir, que el pixel (0,0) de la imágen queda en el centro de la pantalla, y no es cosa de ser un PNG, me ha pasado también con un FPG.

De todas formas, voy a revisarlo más a fondo. A pesar de lo que dije en el hilo del Echo v1.4, acabo de caer que sí hay una estructura con punteros en la carga del programa, y puede que el fallo venga por ahí... aunque es raro que no haya saltado antes, y sólo afecta a las partidas del juego, no a la estructura del sistema.

Jo ¿aun queda una hora más de espera para la conferencia de M$? No era lo que ponía en el horario.
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

posiblemente tengas el centro puesto en 0,0, fijate si no hay algo pisandolo
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Lo he puesto en (0,0) y en el centro del gráfico usando GRAPHIC_INFO con idéntico resultado. Y no, no hay nada pisándolo porque es una instrucción a continuación de la otra.
    temp = load_png(lp_logo);
    //set_center(0, temp, graphic_info(0, temp, G_WIDTH) / 2, graphic_info(0, temp, G_HEIGHT) / 2);
    put_screen(0, temp);
    //put(0, temp, graphic_info(0, temp, G_WIDTH) / 2, graphic_info(0, temp, G_HEIGHT) / 2);
    for (cont = 0; cont < 150; cont++)
        frame;
    end

    unload_map(0, temp);


Pero no es algo que me quite el sueño, gracias a put.

Por cierto, mirando la información que te indica la ventana de error de Windows ¿Es posible localizar el puntero que está dando fallo? Aunque haya que usar un editor hexadecimal. Aun sigo de limpieza, pero no tengo de momento ninguna pista del error, y son 74 ficheros de código. Casi creo que terminaría antes leyéndolo en ensamblador :D :D :D
Creía que podría ser del fichero de configuración, pero usa save y load, y la estructura que guarda es esta:

struct config_data
        int teclas[k_last-1][1];
        byte usar_joy_hat;
        byte tipo_graficos;
        byte usar_scroll_fondo;
        byte usar_scroll_frontal;
        int cte_frameskip;
    end
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

a ver, prueba poner el centro en 0,0
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Fue lo primero que hice, con idéntico resultado.
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)