Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Yawin on November 16, 2016, 08:57:48 PM

Title: Problemas al hacer save_fpg
Post by: Yawin on November 16, 2016, 08:57:48 PM
¡Hola a todos!

Llevo unos días intentando hacer funcionar un código. La idea es simple: le paso una profundidad de color, una ruta y un nombre y el programa genera un fpg con el nombre y la profundidad de color indicados cuyo contenido son las imágenes contenidas en la ruta indicada.

Como base uso un programa que proporcionaba Pixel en su pixplantilla. Pero, por alguna razón, me suelta error cuando intenta hacer el save_fpg y siempre me da error.

¿Se os ocurre qué puedo estar haciendo mal?

El código es el siguiente: http://miguelalbors.noip.me/codigos/index.php?c=pxlfpg.prg (http://miguelalbors.noip.me/codigos/index.php?c=pxlfpg.prg)
Title: Re:Problemas al hacer save_fpg
Post by: panreyes on November 16, 2016, 09:07:11 PM
Holas Yawin :)

Bricopregunta: ¿Estás haciéndolo con BennuGD o con PixTudio?
Yo para funciones de manipulación de FPGs utilizo BennuGD
Title: Re:Problemas al hacer save_fpg
Post by: SplinterGU on November 16, 2016, 09:40:01 PM
el load_png no siempre convierte los mapas a la profundidad del video, sin dudas tenes mapas de diferente profundidad de color... yo te diria que metas debug ahi para ver si alguno tiene una profundidad diferente...

en ese caso, vas a tener que convertirlos manualmente...
Title: Re:Problemas al hacer save_fpg
Post by: DCelso on November 16, 2016, 09:55:49 PM
cambia

temp = load_png(nombre);


por:

temp1 = load_png(nombre);
temp = map_new(graphic_info(0,temp1,G_WIDTH),graphic_info(0,temp1,G_HEIGHT),argv[1]);
map_block_copy  (0, temp , 0 , 0, temp1,width*(i-1),0,graphic_info(0,temp1,G_WIDTH),graphic_info(0,temp1,G_HEIGHT),0);
unload_map(0,temp1);

Title: Re:Problemas al hacer save_fpg
Post by: SplinterGU on November 16, 2016, 10:11:31 PM
Quote from: DCelso on November 16, 2016, 09:55:49 PM
cambia

temp = load_png(nombre);


por:

temp1 = load_png(nombre);
temp = map_new(graphic_info(0,temp1,G_WIDTH),graphic_info(0,temp1,G_HEIGHT),argv[1]);
map_block_copy  (0, temp , 0 , 0, temp1,width*(i-1),0,graphic_info(0,temp1,G_WIDTH),graphic_info(0,temp1,G_HEIGHT),0);
unload_map(0,temp1);



exacto! aunque hay que tener cuidado ya que no se puede hacer conversiones de mapas desde una profundidad mayor a una menor... a menos que se haga manualmente manipulando pixel a pixel...
Title: Re:Problemas al hacer save_fpg
Post by: Yawin on November 16, 2016, 10:34:09 PM
Vale, a ver, por partes.

Pixel: No, no uso pixtudio. Lo sigo con interés, pero me mantengo fiel a la palabra de Splinter, al menos por el momento, prefiero mantenerme dentro de lo que conozco.

Splinter, Dcelso: Ahora mismo pruebo lo que me decís; pero me gustaría poder entender qué hace ese código xD
Title: Re:Problemas al hacer save_fpg
Post by: SplinterGU on November 17, 2016, 12:58:55 AM
ese codigo lo que hace es crear un grafico igual al que cargaste, pero con la profundidad de colores de la pantalla, y luego de eso, pone/dibuja el grafico cargado sobre este nuevo.
Title: Re:Problemas al hacer save_fpg
Post by: panreyes on November 17, 2016, 09:24:35 AM
Quote from: Yawin on November 16, 2016, 10:34:09 PM
Pixel: No, no uso pixtudio. Lo sigo con interés, pero me mantengo fiel a la palabra de Splinter, al menos por el momento, prefiero mantenerme dentro de lo que conozco.
Ok... Aunque, como ya dije, yo uso BennuGD para manipulaciones de FPGs xD
Title: Re:Problemas al hacer save_fpg
Post by: Yawin on November 18, 2016, 02:44:47 PM
Pues me sigue sin ir. No sé qué puede pasar. Añadiendo vuestra propuesta de cambio me ha quedado así: http://miguelalbors.noip.me/codigos/?c=pxlfpg.prg
Ejecutando: bgdi pxlfpg.dcb 16 /ruta/ prueba.fpg
Me genera esto: http://miguelalbors.noip.me/prueba.fpg

Y tengo comprobado que las imágenes están correctamente.
Title: Re:Problemas al hacer save_fpg
Post by: panreyes on November 18, 2016, 02:48:39 PM
Sube también las imágenes para comprobarlo.
Title: Re:Problemas al hacer save_fpg
Post by: Yawin on November 18, 2016, 04:09:31 PM
Adjunto lo dejo. Pero ya aseguro que están correctamente.
Title: Re:Problemas al hacer save_fpg
Post by: DCelso on November 18, 2016, 04:54:20 PM
width*(i-1) está mal, debe ser 0, en vez de poner esa formula, la casualidad es que da 0 esa formula porque ni width ni i las inicializas :D.


Title: Re:Problemas al hacer save_fpg
Post by: DCelso on November 18, 2016, 04:57:27 PM
no se, lo veo todo bien.
solo se me ocurre que cambies
temp = map_new(graphic_info(0,temp1,G_WIDTH),graphic_info(0,temp1,G_HEIGHT),argv[1]);

por

temp = map_new(graphic_info(0,temp1,G_WIDTH),graphic_info(0,temp1,G_HEIGHT),atoi(argv[1]));

a ver si va

Title: Re:Problemas al hacer save_fpg
Post by: SplinterGU on November 18, 2016, 06:59:00 PM

import "mod_dir";
import "mod_draw";
import "mod_file";
import "mod_grproc";
import "mod_joy";
import "mod_key";
import "mod_map";
import "mod_math";
import "mod_mouse";
import "mod_proc";
import "mod_rand";
import "mod_regex";
import "mod_say";
import "mod_screen";
import "mod_sound";
import "mod_string";
import "mod_sys";
import "mod_text";
import "mod_time";
import "mod_timers";
import "mod_video";
import "mod_wm";

private
    string nombre;
    folder;
begin
    set_mode(100,100,argv[1]);
    frame;

    say("Procesando " + argv[3]);
    procesa(argv[3], argv[2]);
end

function procesa(string fpgname, string path);
private
    i;
    j;
    temp, temp1;
    width;
    string nombre, oldPath;
begin
    if(fpgname=="") return; end
    oldPath = cd();
    chdir(path);
    file=fpg_new();
    from x=0 to 999;
        nombre="";
        if(file_exists(itoa(x)+".png"))
            nombre=itoa(x)+".png";
        elseif(file_exists("0"+itoa(x)+".png"))
            nombre="0"+itoa(x)+".png";
        elseif(file_exists("00"+itoa(x)+".png"))
            nombre="00"+itoa(x)+".png";
        end

        if(nombre!="")
            temp1 = load_png(nombre);
            temp = map_new(graphic_info(0,temp1,G_WIDTH),graphic_info(0,temp1,G_HEIGHT),argv[1]);
            map_block_copy(0,temp,0,0,temp1,0,0,graphic_info(0,temp1,G_WIDTH),graphic_info(0,temp1,G_HEIGHT),b_nocolorkey);
            unload_map(0,temp1);
            if(temp>0)
                say("Cargamos la imagen " + x);
                fpg_add(file,x,0,temp);
                unload_map(0,temp);
            else
                say("Error cargando "+fpgname+":"+nombre);
            end
        end
    end

    chdir(oldPath);

    if(!save_fpg(file,cd()+"/"+fpgname+".fpg"))
        say("Error guardando "+cd()+"/"+fpgname+".fpg");
    end
    unload_fpg(file);
    chdir("..");
end
Title: Re:Problemas al hacer save_fpg
Post by: Yawin on November 18, 2016, 08:25:34 PM
Con el código que has puesto, Splinter, si me hace algo. Pero no bien. No sé, ya miraré qué puedo estar haciendo mal.

(A la izquierda, el resultado. A la derecha, el original).
Title: Re:Problemas al hacer save_fpg
Post by: SplinterGU on November 20, 2016, 05:53:16 PM
Quote from: Yawin on November 18, 2016, 08:25:34 PM
Con el código que has puesto, Splinter, si me hace algo. Pero no bien. No sé, ya miraré qué puedo estar haciendo mal.

(A la izquierda, el resultado. A la derecha, el original).


el que yo probe salio genial, no asi como pones vos... por que no pones el png original?
Title: Re:Problemas al hacer save_fpg
Post by: Yawin on November 21, 2016, 04:20:38 PM
Los he puesto un poco más arriba: http://forum.bennugd.org/index.php?topic=4402.msg69966#msg69966
Title: Re:Problemas al hacer save_fpg
Post by: SplinterGU on November 21, 2016, 04:49:06 PM
Quote from: Yawin on November 21, 2016, 04:20:38 PM
Los he puesto un poco más arriba: http://forum.bennugd.org/index.php?topic=4402.msg69966#msg69966

yo en ninguno de los 3 png que subiste en ese pack, veo una caja de madera como la que pones en la captura...
Title: Re:Problemas al hacer save_fpg
Post by: DCelso on November 21, 2016, 06:08:35 PM
 :D ;D , y yo volviendome loco, digo pero donde está el cubo..
el problema va a estar en ese sprite, a mi me va todo de pm. mira te adjunto pantallazo de fpgeditor, el prg, version bgid, resultado fpg e imagenes fuente.
Cambia a gusto el directorio de imagenes y rula el bat a ver si te va todo ok.
Title: Re:Problemas al hacer save_fpg
Post by: Yawin on November 21, 2016, 06:13:46 PM
Pues no lo sé. Pero bah, ya lo miraré cuando tenga tiempo.
Title: Re:Problemas al hacer save_fpg
Post by: SplinterGU on November 22, 2016, 12:34:37 AM
cuelga el mapa de la caja de madera y lo vemos... (DCelso, yo tambien pense que era un cubo, hasta que me detuve a mirar en detalle la otra mitad de la captura)