Avances, Diario de...

Started by SplinterGU, April 17, 2008, 03:00:51 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

estaba pensando en eso justamente hoy... la cosa es que no puede ser como esta implementado ahora, no pueden hacerse tablas, ya que serian de 4GB cada 1... cosa imposible, deberian ser procesadas en runtime, lo que significa un considerable consumo de memoria, pero tambien estamos hablando de 32bits, y para mover 32bits ya hay que tener algun equipo medianamente bueno, las consolas portatiles de baja potencia no tienen 32bts (wiz/caanoo/dingux/etc)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

#1696
estoy haciendo pruebas y cambios en el engine, con el famoso ejemplo de las pelotas rebotando, con 1000 pelotas, dando antes un resultado de 68-70 fps, ahora da unos 98-100fps... 32 bits...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Optimización de processos ?
Ostras eso es sin duda la mejor de las mejores noticias, si los procesos no pesaran tanto :)

SplinterGU

nop, no es optimizacion de procesos... :D
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on September 02, 2011, 11:07:45 PM
estoy haciendo pruebas y cambios en el engine, con el famoso ejemplo de las pelotas rebotando, con 1000 pelotas, dando antes un resultado de 68-70 fps, ahora da unos 98-100fps... 32 bits...
¿Puedes dar algún detalle de los cambios?.

KeoH

yo he hecho pruebas en la psp asi creando procesos en cantidades masivas xD... he creado un codigo q lo que hace es crear un cuadrado, cada cuadrado hace un new_map (de entre 20x20 y 50x50 creo) y se lo pone de grafico coloreandolo con color aleatorio, y despues en cada fotograma se mueve un poco. El programa empieza a 90fps y a cada segundo se van creando cuadrados nuevos.... cuando llega a 500 cuadrados la PSP se pone a 30fps xDDDDD Pobrecita ... debe estar llorando xD

SplinterGU

Quote from: josebita on September 02, 2011, 11:23:50 PM
Quote from: SplinterGU on September 02, 2011, 11:07:45 PM
estoy haciendo pruebas y cambios en el engine, con el famoso ejemplo de las pelotas rebotando, con 1000 pelotas, dando antes un resultado de 68-70 fps, ahora da unos 98-100fps... 32 bits...
¿Puedes dar algún detalle de los cambios?.

tamaño de las dirty... a la mitad, y 4 veces la cantidad de regiones (principalmente... hay otro cambio mas, pero el importante es ese...)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

Ni idea de lo q es eso xDD pero si mejora el rendimiento , bienvenido sea xD

edgardo30

Buenas Splinter GU...

Ya empecé a realizar las pruebas del Modo7 en BennuGD...

Me bajé la última release en tu página (r263)...

Hice una prueba ejecutando el programa TUTORIAL7 que viene en DIV2, y me sale la pantalla en negro, solo me aparece el texto "Utilice los cursores para mover la cámara".

Todavía veo fallos...

[code language="bennu"]
//----------------------------------------------------------------------
// Program:  Tutorial 7
// Author:   Daniel Navarro
// Date:     20/09/97
//----------------------------------------------------------------------

PROGRAM Tutorial_7;

IMPORT "mod_m7"
IMPORT "mod_video"
IMPORT "mod_key"
IMPORT "mod_proc"
IMPORT "mod_text"
IMPORT "mod_map"
IMPORT "mod_screen"
IMPORT "mod_grproc"
IMPORT "mod_math"


GLOBAL
    // Tables with graphics' codes in 16 different positions
    // Chair's codes
    chair[]=16,100,101,101,103,104,105,106,107,
            108,109,110,111,112,113,114,115;
    // Trunk's codes
    trunk[]=16,200,201,202,203,204,205,206,207,
            208,209,210,211,212,213,214,215;
    // Table's codes
    table[]=16,300,301,302,303,304,305,306,307,300,301,302,303,304,305,306,307;
    // Hunger's codes
    hunger[]=16,400,401,402,403,400,401,402,403,400,401,402,403,400,401,402,403;
    // Chest's codes
    chest[]=16,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515;
    // Couch's codes
    couch[]=16,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615;

BEGIN
    // Sets video mode
    set_mode(m640x480);

    // Loads the requiered graphics' file
    load_fpg("FPG\tutorial\tutor7.fpg");

    // Fades the screen on
    fade_on();

    m7.camera=id;       // Forces camera to follow this process (main process)
    m7.height=512;      // Camera's height
    m7.distance=640;    // Camera distance to the observation point
    // Initiates mode7, or dejected plane
    start_mode7(0,0,1,0,0,128);
    // Writes an informative message
    write(0,320,0,1,"Use cursor keys to move camera");

    // Creates table type objects
    object(&table,128,128,0,600);
    object(&table,600,440,0,600);
    object(&table,600,340,0,600);

    // Creates chair type objects
    object(&chair,64,64,-pi/2,400);
    object(&chair,192,64,-pi/2,400);
    object(&chair,64,192,pi/2,400);
    object(&chair,192,192,pi/2,400);

    // Creates chest type objects
    object(&chest,32,384,0,600);
    object(&chest,384,32,-pi/2,600);

    // Creates trunk type objects
    object(&trunk,64,440,pi/2,800);
    object(&trunk,128,440,pi/2,800);
    object(&trunk,384,440,pi/2,800);

    // Creates hunger type objects
    object(&hunger,192,440,0,600);

    // Creates couch type objects
    object(&couch,512,32,-pi/2,400);
    object(&couch,600,128,-pi,400);

    // Sets coordinates for this process, which is the camera's
    x=320; y=240;
    LOOP
        // If cursor keys are pressed, camera's angle variates (it moves)
        if (key(_right)) angle-=pi/8; END
        if (key(_left)) angle+=pi/8; END
        FRAME;
    END
END

//----------------------------------------------------------------------
// Process object
// Visualizes all objects
// Entries: xgraph = Pointer to the graphics' table of object
//          x,y    = Coordinates
//          angle  = Object's angle
//          size   = Object's size, on percentage
//----------------------------------------------------------------------

PROCESS object(xgraph,x,y,angle,size)

BEGIN
    z=-16;          // Chooses a depth
    ctype=c_m7;     // Introduces the process within mode 7
    LOOP
        FRAME;      // Shows the graphic
    END
END
[/code]

Saludos...

SplinterGU

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

edgardo30


SplinterGU

#1706
el modo de video tiene que coincidir con el de los graficos y si estas en linux (unix) el nombre del archivo tiene que coincidir mayusculas/minusculas.

proba esto


//----------------------------------------------------------------------
// Program:  Tutorial 7
// Author:   Daniel Navarro
// Date:     20/09/97
//----------------------------------------------------------------------

PROGRAM Tutorial_7;

IMPORT "mod_m7"
IMPORT "mod_video"
IMPORT "mod_key"
IMPORT "mod_proc"
IMPORT "mod_text"
IMPORT "mod_map"
IMPORT "mod_screen"
IMPORT "mod_grproc"
IMPORT "mod_math"
import "mod_say"

GLOBAL
   // Tables with graphics' codes in 16 different positions
   // Chair's codes
   chair[]=16,100,101,101,103,104,105,106,107,
           108,109,110,111,112,113,114,115;
   // Trunk's codes
   trunk[]=16,200,201,202,203,204,205,206,207,
           208,209,210,211,212,213,214,215;
   // Table's codes
   table[]=16,300,301,302,303,304,305,306,307,300,301,302,303,304,305,306,307;
   // Hunger's codes
   hunger[]=16,400,401,402,403,400,401,402,403,400,401,402,403,400,401,402,403;
   // Chest's codes
   chest[]=16,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515;
   // Couch's codes
   couch[]=16,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615;

BEGIN
   // Sets video mode
   set_mode(640,480,8);

   // Loads the requiered graphics' file
   file=load_fpg("TUTOR7.FPG");

   // Fades the screen on
   fade_on();

   // Initiates mode7, or dejected plane
   start_mode7(0,file,1,0,0,64);

   m7.camera=id;        // Forces camera to follow this process (main process)
   m7.height=10;       // Camera's height
   m7.distance=0;       // Camera distance to the observation point
   m7.focus=1024;

   // Writes an informative message
   write(0,320,0,1,"Use cursor keys to move camera");

   // Creates table type objects
   object(&table,128,128,0,600);
   object(&table,600,440,0,600);
   object(&table,600,340,0,600);

   // Creates chair type objects
   object(&chair,64,64,-pi/2,400);
   object(&chair,192,64,-pi/2,400);
   object(&chair,64,192,pi/2,400);
   object(&chair,192,192,pi/2,400);

   // Creates chest type objects
   object(&chest,32,384,0,600);
   object(&chest,384,32,-pi/2,600);

   // Creates trunk type objects
   object(&trunk,64,440,pi/2,800);
   object(&trunk,128,440,pi/2,800);
   object(&trunk,384,440,pi/2,800);

   // Creates hunger type objects
   object(&hunger,192,440,0,600);

   // Creates couch type objects
   object(&couch,512,32,-pi/2,400);
   object(&couch,600,128,-pi,400);

   // Sets coordinates for this process, which is the camera's
   x=320; y=240;
   LOOP
        // If cursor keys are pressed, camera's angle variates (it moves)

        if (key(_up)) advance(10); end
        if (key(_down)) advance(-10); end
        if (key(_left)) angle+=1000; end
        if (key(_right)) angle-=1000; end

        if (key(_z)) m7[0].distance--; end
        if (key(_x)) m7[0].distance++; end
        if (key(_c)) m7[0].height--; end
        if (key(_v)) m7[0].height++; end
IF (key(_esc)) exit("", 0);END

        FRAME;
   END
END

//----------------------------------------------------------------------
// Process object
// Visualizes all objects
// Entries: xgraph = Pointer to the graphics' table of object
//          x,y    = Coordinates
//          angle  = Object's angle
//          size   = Object's size, on percentage
//----------------------------------------------------------------------

PROCESS object(xgraph,x,y,angle0,size)

BEGIN
   z=-16;          // Chooses a depth
   ctype=c_m7;     // Introduces the process within mode 7
   height = 0;
   LOOP
       angle = angle0 - m7[0].camera.angle;
       FRAME;      // Shows the graphic
   END
END

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

SplinterGU

edito, el ejemplo estaba mal y no entendia porque no iba... los seteos del m7, deben hacerse despues del start_m7, ya que el start_m7 resetea algunas variables, para asegurarse de que se hace un m7 correcto.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

edgardo30

Quote from: SplinterGU on September 03, 2011, 12:59:31 AM
edito, el ejemplo estaba mal y no entendia porque no iba... los seteos del m7, deben hacerse despues del start_m7, ya que el start_m7 resetea algunas variables, para asegurarse de que se hace un m7 correcto.

En esa parte te equivocas, toda la información que definas de la estructura m7 se puede definir antes o después de llamar a start_m7. Además los procesos están ubicados mal tanto en posición como en tamaño, al momento de hacer rotación, los gráficos x cambian de manera incorrecta.

edgardo30

Te doy un consejo...

No cambies el ejemplo que está en DIV....

El ejemplo está escrito de manera correcta, no entiendo el por qué tienes que cambiar el valor del ángulo a otro valor. La idea es que el programa debe ejecutarse correctamente tal y como está.

En cuanto a la ruta, el \ y / se tiene que manejarse internamente si se está usando otros sistemas operativos, no entiendo el por qué se tiene que poner en la ruta principal.

Por ahora eso es todo...