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

Si, tampoco voy a mentir diciendo que esas velocidades son en todos los casos, se logran mejoras de rendimiento cuando hay procesos estaticos (sin cambio en ningun aspecto) y procesos con cambios frecuentes... si todos los procesos se mueven o se actualizan constantemente no hay una mejora tan significativa, pero bueno, supongo que esto supondra una mejora en la mayoria de los casos...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JaViS

#181
Quote from: SplinterGU on September 17, 2008, 02:40:32 PM
estuve trabajando en los bugs de rotaciones y en acelerar el dibujado en pantalla...
el eterno error de las rotaciones ya esta corregido... se debia principalmente a un problema de precision de calculos al usar ints, ahora pase algunos campos a float, elimine codigo innecesario, pero supongo que ahora algunos casos el dibujado podria ser mas lento... aun queda una diferencia de desplazamiento de 1 pixel con respecto al grafico sin rotar y el grafico rotado, todavia tengo que hacer un analisis mas detallado y ver si lo que falla es el blit rotativo, el blit normal, o el calculo de los vertices (quizas esto tambien sea parte de otro problema que tengo y explicare mas abajo en este post)...
tambien acelere el tema de los dibujado de textos en pantalla, en los casos de numeros enteros, hice una nueva funcion que es un 800% mas rapida la conversion de numeros a texto con respecto a la funcion de C... (lo que no quiere decir que los textos se dibujen un 800% mas rapido, pero todo cuenta)
tambien en la version actual se me escapo algo, que al restaurar el fondo de pantalla y si el dump es = 0, restaura siempre el fondo, por eso no hay una mejora significativa con respecto a versiones anteriores que si lo hacen, aun asi, el rendimiento en la mayoria de los casos es mejor, con este cambio nuevo, en circunstancias de resposo obtuve un rendimiento de 102000 fps cuando antes obtenia con la misma prueba unos 24000 maximo... en casos de varios procesos en pantalla, y uno con actualiaciones, obtuve rendimientos 3500fps donde antes eran 670... pero me esta quedando alguna basura en el video que tengo que corregir y no logro detectar aun la cirscuntancia, pero mientras estaba escribiendo este texto se me ocurrio posibles motivos...

Uh maestro, por fin alguien se digno a ver esos errores!! son añejos!! XD


A proposito, no entiendo eso de q cuando cambias la resolucion el fondo no se dibuja.

Working on Anarkade. A couch multiplayer 2D shooter.

SplinterGU

cuando hacias set_mode, el fondo se perdia, ahora solo se pierde cuando se hace un set_mode de dimensiones o profundidad de color diferente... en un principio habia hecho que no se pierda, pero en algunas combinaciones no es correcto ni conceptual ni practicamente, asi que solo se mantiene en casos de por ejemplo, querer cambiar a full_screen, esperar vsync, usar doublebuffer, scale, etc...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Packo_z007

Quote from: SplinterGU on September 17, 2008, 02:27:15 PM
revise estos errores y a mi no me pasan, seguro tienen que ver con la expansion del comando, pero no pude reproducirlos, los use, pero no paso nada... tiene sentido que me digas que esto te paso en la wip2, pero en estas versiones lo dudo, porque recuerdo claramente haber corregido el tema del con/sin espacio...

En realidad me pasa usando la wip 8. Tengo problemas en los defines del principio.Quizas sea error mio. Fijate que si al primer define le pones un comentario se cuelga el compilador. Link del source
http://rapidshare.com/files/146124464/Bin-WIP8.rar.html
no compila sin cambiar el define de la linea 6 (RPG.prg)
y el define ese es usado en el Player.inc linea 346.
[STRING] *PANIC Too many strings, allocating more space

SplinterGU

ahora si, no me da los mismos errores, pero me da errores, lo voy a revisar... gracias...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: Packo_z007 on September 17, 2008, 07:51:03 PM
Quote from: SplinterGU on September 17, 2008, 02:27:15 PM
revise estos errores y a mi no me pasan, seguro tienen que ver con la expansion del comando, pero no pude reproducirlos, los use, pero no paso nada... tiene sentido que me digas que esto te paso en la wip2, pero en estas versiones lo dudo, porque recuerdo claramente haber corregido el tema del con/sin espacio...

En realidad me pasa usando la wip 8. Tengo problemas en los defines del principio.Quizas sea error mio. Fijate que si al primer define le pones un comentario se cuelga el compilador. Link del source
http://rapidshare.com/files/146124464/Bin-WIP8.rar.html
no compila sin cambiar el define de la linea 6 (RPG.prg)
y el define ese es usado en el Player.inc linea 346.

Bien, costo pero salieron, eran 2 bugs, referentes a los defines... uno era un bug viejo y el otro era nuevo...
el error viejo se debia a que solo funcionan bien expansiones hasta 128bytes, ya que el expand hacia mal el calculo de la relocacion del espacio para la expasion del define.
el error nuevo, era que no se descartaban bien los comentarios en la expansion de defines...

luego subire una nueva version del compilador, ahora me voy a dormir un ratito... no doy mas...

gracias por el reporte...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

No voy a subir nueva version de momento... para solucionar tu problema por ahora te recomiendo no hagas defines largos... y que no pongas comentarios en la misma linea del define... en unos dias sacare nueva version cuanto tenga depurado el tema del dibujado que veo alguna basura (parece ser que ahora es solo con los textos) en la nueva version optimizada...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Packo_z007

Ok, no hay problema.Los defines no son de vida o muerte.
[STRING] *PANIC Too many strings, allocating more space

SplinterGU

#188
gracias, por cierto, esta muy bueno tu proyecto, muy simpaticos los personajes y muy buena animacion...

la verdad prefiero esperar un poco mas para la nueva version, salvo que sea un error que no deje progresar en los proyectos, asi agrego el scroll, corrigo un par de cosas que me gustaria tener resueltas ahora, y luego si sacar la primer release con fuentes... aunque se que luego hay muchas cosas por mejorar, corregir y completar...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Packo_z007

Gracias. Sin dudas el punto mas flojo es el consumo de recursos, pero por el momento trato de tener un codigo mas ordenado y facil de entender.La optimizacion vendra despues.
[STRING] *PANIC Too many strings, allocating more space

Packo_z007

Hola.Encontre unos problemas con los operadores bitwise uno de los operandos supera MAX_int. El primer caso siempre devuelve 0.El segundo 2147483903.


Program Ejemplo;
private
   dword var1;
   dword var2 = 2147483650 ;
end
begin
   full_screen = false;
   set_fps(24,1);
   set_mode(640,480,16);
   var1 = (var2 & 255);
   say(var1);
end

Program Ejemplo2;
private
   dword var1;
   dword var2 = 2147483904;
end
begin
   full_screen = false;
   set_fps(24,1);
   set_mode(640,480,16);
   var1 = (var2 | 255);
   say(var1);
end
[STRING] *PANIC Too many strings, allocating more space

SplinterGU

#191
el problema no esta en los bitwise, ni tampoco es un problema, el problema esta en el uso... en ambos casos estas superando el valor de un int, pero sin embargo escribis el numero como un int... para casos dword, los numeros para una correcta interpretacion deben ser escritos en hexadecimal... mira el siguiente codigo...


Program Ejemplo;

import "mod_say";

private
   dword var1;
   dword var2 = 2147483650 ;
end
begin
   var1 = (var2 & 255);
   say(var1);

   var2  = (dword)2147483904;
   say(var2);

   var1 = ( var2 | 255);
   say(var1);

   var2 = 80000002h ;

   var1 = (var2 & 255);
   say(var1);

   var2  = 080000100h;
   say(var2);

   var1 = ( var2 | 255);
   say(var1);

end

/*
max_int: 2147483647
*/


vamos a ver si puedo hacer algo al respecto
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Packo_z007

Eso no sabia.. Muchas gracias. Me gustaria comentar, aunque posiblemente ya lo hayas notado, que si el numero hexadecimal comienza con una letra, lo considera una variable y no compila.. pero se soluciona con un 0 adelante.¿Esto va a seguir asi verdad?
[STRING] *PANIC Too many strings, allocating more space

SplinterGU

otro ejemplo


Program Ejemplo;

import "mod_say";

private
  dword var1;
  dword var2 = 2147483650 ;
end
begin
  var1 = (var2 & 255);
  say(var1);

//   var2  = 2147483904;
  var2  = 2147483647 + 257;
  say(var2);

  var1 = ( var2 | 255);
  say(var1);

  var2 = 80000002h ;

  var1 = (var2 & 255);
  say(var1);

  var2  = 080000100h;
  say(var2);

  var1 = ( var2 | 255);
  say(var1);

end

/*
max_int: 2147483647
*/



la norma es que si empieza con una letra es variable, y que los numeros deben empezar con numeros...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

para mas datos...

si compilamos este programa en C


int main(int argc, char * argv[])
{
    double f = 2147483904;
    int i = f;
    int ii = ( int )f;

    printf ("%f\n", f);
    printf ("%u %x\n", i, i);
    printf ("%u %x\n", ii, ii);

}


da los siguientes resultados (acordes a lo que da bennu):


2147483904.000000
2147483648 80000000
2147483648 80000000


Bennu usa double para obtener el numero y luego lo convierte a int usando el casteo...
numeros fijos que superan el valor del dato es un tema delicado...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2